2022年FireWorkflow__各种工作流模式的实现 .pdf
《2022年FireWorkflow__各种工作流模式的实现 .pdf》由会员分享,可在线阅读,更多相关《2022年FireWorkflow__各种工作流模式的实现 .pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、各种工作流模式的实现作者:非也QQ:20674450Email:目录1.概述.32.Fire Workflow流程元素介绍.31)Activity和 Task:.32)Synchronizer、StartNode、EndNode.43)Transition.43.设计约束.41)约束 1.42)约束 2.43)约束 3.54)约束 4.55)关于设计约束的说明.54.顺序、分支、汇聚.61)顺序分支汇聚其实是统一的.62)顺序业务流程举例.83)并行业务流程举例.84)分支选择业务流程举例.95)汇聚业务流程举例.105.子流程.111)流程设计.112)流程模拟.123)关于“Multi-M
2、erge”的探讨.136.“自由流”(Jump).141)流程设计.142)流程模拟.143)相关 API.177.循环(Loop).181)流程设计、模拟.182)相关 API.188.略过(Skip).181)流程设计.182)流程模拟.199.会签.2010.委派.2111.任务完成期限.211)流程设计、模拟.212)相关 API.2212.监听工作流事件.22名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 27 页 -1)TaskInstance事件监听器.222)ProcessInstance事件监听器.2313.表单绑定.2414.流程元素属性详细说明.251)所有
3、流程元素通用属性.252)WorkflowProcess 的属性.253)StartNode、Synchronizer、EndNode 属性.254)Activity属性.255)Transition 的属性.266)Subflow Task的属性.267)Tool Task 的属性.268)Form Task的属性.26名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 27 页 -1.概述本文最初始的标题是“21 种工作流模式的实现”,但是我觉得21 种工作流模式总结的并不科学,“21 中工作流模式”只看到了业务现象,没有反应出业务的本质。例如:“并行模式(Parallel Sp
4、lit)”、“单选(Exclusive Choice)”、“多选(Multi Choice)”没有实质区别,都是从流程的分支中选择若干个执行。具体选择哪几个是由“转移条件”决定的,如果转移条件计算结果为true 则执行,否则不执行。因此并行模式只是分支选择模式的一个特例,即所有的转移条件计算结果都是true。再例如:21 中工作流模式中的“同步(Synchronization)”、“简单汇聚(Simple Merge)”也没有实质区别,在Fire Workflow 中这都是“同步器”节点统一处理。我甚至认为21 中工作流模式存在一些谬误,我简单阐述我的看法,欢迎探讨。例如:21 种工作流模式对
5、“简单汇聚(Simple Merge)”的解释是“流程中的某个节点,使得两个或者多个流程分支汇聚在一起”,之所以将这种汇聚称为“简单汇聚”,是“假设多个流程分支不并行执行,因此汇聚点不需要进行复杂的同步操作”。这种强行的“假设”看似简化了问题,实际上非常不合理。这种假设要求汇聚点“预知”多个分支中只有一个分支被执行,这种预知是很难实现的;或者限制多个分支中只允许一个被执行,这种后继节点限制前驱节点的行为是很荒谬的。因此,本文将工作流模式按照我自己的理解重新组织。本文档的所有示例流程都在example_workflow_process.rar 中。2.Fire Workflow流程元素介绍在使用
6、 Fire Workflow 设计业务流程之前,非常有必要介绍一下Fire Workflow 的工作流元素。Fire workflow的元素分成三类:1)Activity和 Task,2)Synchronizer、StartNode、EndNode,3)Transition1)Activity和 Task:Acitivty在中文里一般称为“活动”,但是在我的文档里习惯称之为“环节”。Task是任务,代表具体的业务逻辑,如录入一张表单、调用一段java 代码或者调用另外一个流程(子流程 Task)。一个环节中可以有多个任务。例如某个入职流程中有一个体检环节,体检环节包含了“检查视力”、“检查肝功
7、能”、“检查心血管功能”等等多个任务。在Fire workflow中,体检环节建模如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 27 页 -2)Synchronizer、StartNode、EndNodeSynchronizer 是同步器。此处的“同步”是一个更加广义的概念,他代表工作流子系统的计算逻辑。开始节点(StartNode)和结束节点(EndNode)是同步器的特例,开始节点是没有输入“边”的同步器,结束节点是没有输出“边”的同步器。3)Transition转移(Transition)在 Fire workflow 并不仅仅是一条连接线,他代表控制权在工作流子系
8、统和业务子系统之间交换。3.设计约束在本人看来,可以将整个系统分成业务子系统和工作流子系统。Activity 和 Task代表业务子系统的计算逻辑;Synchronizer、StartNode、EndNode 代表工作流子系统的计算逻辑;Transition 代表控制权在业务子系统和工作流子系统之间转移。有如下流程设计约束。1)约束 1每个 Activity的前驱节点、后继节点必须是同步器。即控制权从工作流子系统获得,业务执行完毕后控制权必须交还给工作流子系统。2)约束 2每个 Activity只允许有一个输入Transition,一个输出Transition。为什么呢?如果某个Activit
9、y 有多个输入Transition,则说明此 Acitivty需要执行“汇聚”逻辑,然而“汇聚”并不是Activity的职责,而是同步器的职责;同理,如果某个Activity有多个输出Transition,则说明该Activity 需要执行“分支”逻辑,这也不是 Activity 的职责。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 27 页 -3)约束 3每个同步器的前驱节点和后继节点都必须是Activity。即从业务子系统获得控制权后,进行汇聚和分支计算,然后把控制权再交给业务子系统。在Fire Workflow 中,顺序流程中的同步器与复杂逻辑中的同步器的算法是一致的,如
10、下图,S1 是 S2 的特列。4)约束 4一个流程有且只有一个开始节点,至少有一个结束节点。5)关于设计约束的说明Fire Workflow 是以 Petri Net 作为理论基础的,因此上述设计约束首先是 Petri Net 的要求。但是 Fire Workflow也力求不生搬硬套Petri Net;我通过学习研究,发现用Petri Net 可以非常恰当地描述“控制权”在“业务子系统”和“工作流子系统”之间相互转换这样一个业务模型。可以用Petri Net 中的 token 来刻画“控制权”这个概念,用T 来刻画“业务子系统”这个概念,用P 来刻画“工作流子系统”这个概念。因此,上述设计约束
11、可以精确、严密地描述业务流程。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 27 页 -4.顺序、分支、汇聚1)顺序分支汇聚其实是统一的首先,Fire Workflow 认为,“分支”和“汇聚”都是一种计算逻辑,这种计算逻辑应该由“工作流子系统”负责完成。Fire Workflow 用“同步器”节点在模型中表示这种计算逻辑。如下图,同步器“S”是一个一般意义上的同步器。上图中“S”首先对t1、t2、t3 执行汇聚操作。在Fire Workflow 中,不管t1、t2、t3中哪个或者哪几个流程分支被执行,S都能正确地进行汇聚。S 汇聚完成后,根据转移条件的计算结果,启动t_a,t
12、_b,t_c 中的一个或者几个分支。为什么说顺序、分支、汇聚是统一的呢?A)在上图中,如果“S”的前驱和后继都是唯一的,则形成一个特例,即顺序流程。如下图。B)如果上图中“S”的前驱是唯一的,后继有多个,则形成了“21 中工作流模式”中名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 27 页 -的“并行模式(Parallel Split)”、“单选(Exclusive Choice)”、“多选(Multi Choice)”。如下图C)如果上图中“S”的前驱有多个,后继仅有一个分支,则形成“汇聚”,如下图。不仅顺序、分支、汇聚是统一的,同步器、开始节点、结束节点也是统一的,即开始节
13、点和结束节点是同步器的特例。如果同步器的前驱为0,则形成开始节点,如果同步器的后继节点为 0,则形成结束节点。在Fire Workflow 中分别用和表示这两个节点。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 27 页 -2)顺序业务流程举例顺序模式的实现以及模拟请参阅2_通过设计器和模拟器快速了解Fire Workflow 流程定义文件是MyFirstProcess.xml3)并行业务流程举例并行业务流程其实是分支选择的一个特例,即所有的转移条件计算结果为true。在 Fireworkflow 中如果 Transition 的转移条件EL 表达是为空,则默认其结果为true
14、。业务举例:某商场送货流程。仓库备货完成后流程分拆为两个并行的分支,一个分支通知送货员送货;另一个线程启动短信发送程序,预约客户在家等候收货。如下图:相关的流程定义文件见:And Split.xml。流程模拟通过模拟器可以模拟该流程,如下图。可以看到,在“仓库备货”环节完成后,两个分支执行线程并行执行。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 27 页 -4)分支选择业务流程举例以典型的请假流程为例,如果请假天数小于等于2 天,项目经理审批即可,否则需要部门经理审批。该流程图如下。在本流程中定义了一个名称为days 的流程变量。流程定义文件是:choice.xml流程模拟:
15、启动流程,在工具栏上点击,设置流程变量days 的值为 3,如下图名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 27 页 -签收并完成“填写请假条”任务后,系统启动了“部门经理审批”环节,而没有启动“项目经理审批”环节,如下图:读者可以重新模拟该流程,将days 的值设置为1 看看结果如何。5)汇聚业务流程举例在上述“并行业务业务流程举例”中,结束节点实际上进行了汇聚。我们从模拟器可以看到,当“仓库备货”环节完成后,“手机短信发送程序”被自动执行,此时结束节点的颜色变成黄色,表示正在等待另一个分支完成。当送货分支完成后,结束节点变成蓝色,整个流程实例执行完毕。名师资料总结-精品
16、资料欢迎下载-名师精心整理-第 10 页,共 27 页 -5.子流程1)流程设计在 Fire Workflow看来,子流程是父流程的一个任务。可以通过创建一个附带子流程任务的环节,也可以在已经存在的环节中增加子流程任务。在本文提供的子流程实例如下图,在父流程和子流程中都定义了一个流程变量xyz,在下一节流程模拟中可以看到,父流程的流程变量的值传递给了子流程。父流程图名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 27 页 -子流程图流程定义文件是:parent.xml,child.xml2)流程模拟首先在父流程的模拟器界面启动父流程,并点击设置流程变量xyz 的值为 100,如
17、下图签收并通过Activity1.Task1 后,系统弹出选择文件的对话框,定位到child.xml 流程定义文件,然后确定。系统启动Activity2.Task1,流程执行进程视图切换到child 流程,同时父流程的流程变量的值赋给了子流程。如下图。你可以通过工具栏右边的下拉列表在执行进程视图中切换不同的流程。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 27 页 -签收并结束子流程,将视图切换当parent,可以看到父流程的Activity2.Task1也结束了,并且启动了父流程的Activity3.Task1。如下图3)关于关于“Multi-Merge”的探讨在“21
18、种”工作流模式中有一个种模式叫做“Multi-Merge”,其含义是在“汇聚点”后的环节可以被执行多次,如下图:在上图中如果流程分支t1 执行到汇聚点S 时,Activity3 和 Activity4会被执行一遍;同理当 t2 执行到汇聚点S时,Activity3和 Activity4也会被执行一遍。显然S只是图形上的汇聚,在运行时并未起到同步的作用。在这种情况下,用 Fire workflow 的子流程来建模可能更加合理。将 Activity3和 Activity4置于子流程中(假设子流程名称为MyChildProcess),父流程如下图。St1Activity1Activity2Activ
19、ity3Activity4t2名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 27 页 -6.“自由流”(Jump)1)流程设计“自由流”是一种中国特色的业务流程模式,即在某些特殊情况下,流程不按照既定顺序执行,在环节间自由跳转。在 Fire Workflow中,跳转操作还不能在设计器中通过图形表达,只能调用接口IWorkItem.jumpTo(StringnextActivityId,ListnextActorIds)完成。jumpTo 方法首先结束当前WorkItem、TaskInstance和 ActivityInstance,然后启动目标Activity,创建相应的Ta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年FireWorkflow_各种工作流模式的实现 2022 FireWorkflow_ 各种 工作流 模式 实现
限制150内