更新时间:2022-08-14 18:18:49
下面将对目前比较主流的三款工作流进行介绍和比较,然后通过三款流程引擎分别设计一个较典型的流程来给大家分别演示这三款创建流程的过程.这三款工作流程引擎分别是 Windows Workflow Foundation,NetBPM, CCFlow.
NetBPM 与 CCFlow 是两款国内知名的开源软件,尤其是ccflow在国内的发展势头强劲。
这个典型的流程假设:公司有两级领导,一级为主管Chief,一级为老板Boss
场景描述:
在某公司中,部门员工休假需要主管Chief的批准。
如果休假天数大于10天,则 在部门主管同意后,还必须老板Boss批准。
如果是部门主管请假则直接提交老板批准。
在休假被批准之前,申请人可以撤销休假申请。
申请批准后,对休假天数进行修改(也可以是其他业务数据处理)。 每次休假申请结束之 后,不管通过未通过或是否取消,都必须记录下来。
流程结束时,系统要把请假的结果信息Email给申请人。
对于大于10天的申请,如果部门主管已批准同意而上级主管还未批准,这时申请人撤销申请后,系统应发Email通知部门主管申请已撤销。
我们这里只是一个模拟,当然现实生活中情况比这个更加复杂一些;
Windows Workflow Foundation
微软的工作流产品,提供一套工作流引擎和VS解决方案自带的流程设计器,但是该流程设计器面对的是程序员而非业务人员,所以界面比较专业,流程运行只能创建控制台应用程序,没有流程运行界面,没有表单库,如需要表单和界面需要二次开发。
使用WWF创建流程:
8.F5即可运行控制台程序,其中的通过未通过或是否取消的数据需要记录,需要通过代码和设计数据库来实现,发送Email也需要代码实现,WWF没有提供该功能。
WWF下设计的流程图如下:
.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow
.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow
NetBPM
从JBpm1移植到.NET平台下的开源工作流项目,二次开发有一定的难度,因为其使用的Castle框架有很多子项目,技术点较多,需要一一熟悉后才能进行流程的二次开发。
使用NetBPM创建工作流过程:
复制代码
<?xml version="1.0"?>
请假DEMO
该流程模拟公司的请假流程,
ae
<description>提交请假单</description>
<!-- 定义了role,引擎在该start-state节点执行时,就会把执行者信息赋值给角色对应的属性“requester” -->
<role>requester</role>
<!-- 在这里定义start-state的field,它表示该filed相关联的属性,并且在该state,它对属性的访问权利。
如果需要定义其在web表单上的操作界面,如何进行web表单显示等,需要在webinterface.xml文件对应节点补充该field -->
<field attribute="start date" access="write-only-required" />
<field attribute="end date" access="write-only-required" />
<field attribute="leave days" access="write-only-required" />
<field attribute="comment" access="write-only" />
<transition to="Is Cancel Fork" />
handler="NetBpm.Example.LeaveOfAbsence.EmailAction, NetBpm.Example.LeaveOfAbsence" on-exception="log">
<!--定义action参数,供委托类实例化类调用方法时获取使用。如这里的EmailAction的run方法发送邮件,需要知道发给谁,邮件标题等等,那么
参数可以提供辅助-->
<parameter name="to">previousActor</parameter>
<parameter name="subject">您提交了请假申请</parameter>
<parameter name="message">you requested a holiday from ${start date} to ${end date} with comment ${comment}</parameter>
</action>
<!-- 此处具体为:在流程结束的时候记录请假日志, 此处Log模拟 注意:每个节点可以定义多个action -->
<action event="process-instance-end"
handler="NetBpm.Example.LeaveOfAbsence.LogLeaveInfoAction, NetBpm.Example.LeaveOfAbsence" on-exception="log">
<parameter name="LogInfo">记录请假日志? :) </parameter>
复制代码
因为委托类数目众多,这里仅贴出几个典型的委托类:
NetBPM下设计的流程图如下:
.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow
CC Flow
ccflow是一款国产开源工作流。支持SQLServer、Oracle、Access、MySQL数据库,支持群集计算、支持多国语言。流程设计、表单设计都是可视化的,所见即所得。 ccflow提供了强大的数据分析功能:流程运行的各种报表、图形、挖掘、赚取,可以对实(时)效性、成本分析(人力、时间、财物),进行全方位的分析、监控。 Ccflow更可与手机+手机短信+短信猫+电子邮件无缝连接,让您的工作第一时间沟通,第一时间处理。
使用CC Flow创建工作流过程:
CC Flow设计的流程图如下:
.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow
综上所述,三款的工作流区别如下表:
.Net 三款工作流引擎比较:WWF、netBPM 和 ccflow