12 个基本的工作流模式简介
这五个模式的共同点在于:模式所涉及流程的执行路径是在设计时即可确定的,不需运行时的信息。包括:
- Sequence(顺序模式)
- Parallel split(平行拆分模式)
- Synchronization(同步模式)
- Exclusive choice(排他选择)
- Simple merge(简单合并模式)
1.1 Sequence(顺序模式)
模式描述:
在一个流程实例中,各个活动按顺序依次执行。
模式所解决的问题:
流程需要保证一系列活动的执行顺序。
模式应用举例:
在一个银行贷款审批流程中,审批人员在决定同意或者拒绝贷款前必须审查贷款申请人的信用状况,即流程的执行顺序必须是先检查贷款申请人信用状况,再决定同意或拒绝贷款。
解决方案:
1) 将需保证顺序的活动(activity),放到序列(sequence)中。
2) 在一个并行流中将需保证顺序的活动(activity)用连接(link)顺序连接起来。
WebSphere Integration Developer V6实现:
1.2 Parallel split(平行拆分模式)
模式描述:
在一个流程实例中,存在两个或者多个执行路径平行执行,但这些平行的路径之间没有关联,平行路径的执行没有确定的顺序关系。
模式所解决的问题:
流程需要把一个路径平行拆分成两个或多个路径而不关心路径的执行顺序。
模式应用举例:
在一个货物处理流程中,客户付款之后需要平行启动发货、通知客户的活动。
解决方案:
1)在流程中创建一个具有多个分支并行活动(parallel activity);
2)在流程中从一个活动中引出多个连线(link)到需要并行执行的活动(activity)。
WebSphere Integration Developer V6实现:
备注:实现1可读性更强,实现2更加灵活,因为有时维护时需要在路径上加入判断条件,此时实现1的话就变动很大,实现2则可在连接上灵活加入判断条件。
1.3 Synchronization(同步模式)
模式描述:
在一个流程实例中,某一个活动的执行取决于前面几个路径的执行结果。
模式所解决的问题:
流程需要在某一个活动节点同步前面多个执行路径。
模式应用举例:
在一个银行贷款流程中,在并行的执行贷款和通知贷款人活动之后,才执行归档活动。
解决方案:
1) 将多个并行活动用连接(link)连接到同步的活动节点上。
2) 当一个并行流结束之后,再继续执行同步的活动。
WebSphere Integration Developer V6实现:
1.4 Exclusive choice(排他选择模式)
模式描述:
在一个流程实例中,根据不同的条件,会有不同的执行路径。
模式所解决的问题:
流程需要根据运行时的数据,决定流向哪一个路径分支。
模式应用举例:
在一个计费流程中,根据客户选择的付款方式进行扣费。
解决方案:
1)在流程中加入一个选项(choice),然后在加入多个分支(case)。
2)在一个并行流中通过连接的条件(condition)决定流向哪一个分支。
WebSphere Integration Developer V6实现:
1.5 Simple merge(简单合并模式)
模式描述:
在一个流程实例中,两个或多个执行路径在一个活动节点上合并。
模式所解决的问题:
流程中不管执行哪一条并行路径之后,都需要执行某一个活动节点。
模式应用举例:
在一个计费流程中,在根据客户的选择付费方式扣款后,必须执行返回计费信息的通知消息。
解决方案:
1)在选项(choice)之后加入需要合并后执行的活动节点。
2)在并行流中,从每个需要合并的分支用连接(link)连接到合并后需执行的活动。
WebSphere Integration Developer V6实现:
备注:此模式与同步模式的区别在于同步模式的并行路径可以多条同时执行,而简单合并模式的并行执行路径只有一条,当然可以根据具体需要对此模式进行扩充。
这两个模式的共同点在于:模式所涉及流程的执行路径是由运行时决定的,而非设计时确定。包括:
- Arbitrary cycles(强制循环模式)
- Implicit termination(隐式终止模式)
模式描述:
在一个流程实例中,有些活动是需要多次执行的。
模式所解决的问题:
在流程中需要回流到某一个以前的节点。
模式应用举例:
在一个审批流程中,如果经理不审批,则审批发起人需要重新提交审批申请,直到经理审批同意。
解决方案:
1)通过循环(while)来实现,用变量来控制循环的逻辑。
WebSphere Integration Developer V6实现:
备注:由于WS-BPEL 2.0规范中并没有对强制循环模式的支持,使得没法通过简单的回退方式来建模,必须借助循环来做,相信在未来的版本中会有对强制循环模式的支持,这样就可以用简单的回退方式来建模。
2.2 Implicit termination(隐式终止模式)
模式描述:
在一个流程实例中,当执行完所有的激活的活动之后,该流程实例应该终止。
模式所解决的问题:
流程引擎必须决定什么时候流程终止。
模式应用举例:
在一个客户服务流程中,当给客户发送信息之后,流程必须终止。
解决方案:
1)在WS-BPEL 2.0规范中,当没有一个活动在执行时,流程终止。
2)蓝色圆圈代表一个隐式终止的状态。
WebSphere Integration Developer V6实现:
这两个模式的共同点在于:模式所涉及的流程在运行时disables一个活动或者整个流程,包括:
- Cancel activity(活动取消模式)
- Cancel case(实例取消模式)
模式描述:
在一个流程实例中,是否执行某一个活动取决于运行时的条件判断。
模式所解决的问题:
在流程中,必须根据运行时的条件来决定是否跳过某一个活动。
模式应用举例:
在一个网上订货流程中,客户可以选择客户化过程,也可以选择使用默认的选项,这时,流程需要跳过客户化过程。
解决方案:
1)使用一个接受选项(receive choice),添加两个路径,一个是正常路径,执行正常活动,一个是满足某个条件时跳过该活动。
WebSphere Integration Developer V6实现:
模式描述:
在一个流程实例中,在某一步时终止整个实例。
模式所解决的问题:
流程引擎必须可以终止流程实例,该流程实例的所有子流程也必须全部终止。
模式应用举例:
在一个订单流程中,客户在货物发送之前可以取消订单,进而终止整个流程。
解决方案:
1)使用终止活动节点,终止整个流程实例。
WebSphere Integration Developer V6实现:
这三个模式的共同点是:模式所涉及根据当前运行的流程状态来改变流程里的执行路径,包括:
- Deferred choice(延迟选择模式)
- Interleaved parallel routing(交替平行路由模式)
- Milestone(里程碑模式)
模式描述:
在个流程实例中存在多个执行路径,具体要执行某一个路径取决于外界的运行时状态。模式所解决的问题:
流程的运行路径取决于一些条件,但流程本身没法决定走哪一条路径。
模式应用举例:
在一个付款流程中,客户可以选择不同的付款方式,不同的付款方式将决定付款流程如何走。
解决方案:
使用接受选项(receive choice),通过接收流程外不同的消息,来决定流程走哪一条路径。
WebSphere Integration Developer V6实现:
4.2 Interleaved parallel routing(交替平行路由模式)
模式描述:
在一个流程实例中,存在多条可以并行执行的路径,根据外界的条件,可以执行其中一条。
模式所解决的问题:
流程需要以任意顺序执行一些活动,但不能同时执行两个活动。
模式应用举例:
在一个审批流程中,经理可以同意或者拒绝一个请求,但每次只能处理一个请求。
解决方案:
1)创建一个并行流。
WebSphere Integration Developer V6实现:
模式描述: 在一个流程实例中,一个活动能否执行取决于一个指定的状态。也就是说,只有在到达一个特定的未过期的里程碑时,活动才被执行。
模式所解决的问题:
任务节点的可用性取决于特定的状态条件,也就是说任务只有在某一里程碑已经达到并且还没有过期的时候才可被激活。
模式应用举例:
在一个论文审批流程中,论文提交后,该论文必须在3周内被3个审阅者审阅才可以发表。
解决方案:
1)在一个并行流中,加入两个分支,一个利用延迟选择来控制业务逻辑,另一个分支用来处理时间过期。
2)直接用延迟选择来控制业务逻辑,时间过期的处理用时间来完成。
WebSphere Integration Developer V6实现:
备注:由于里程碑模式比较复杂,下面以一个论文审批流程为例来说明:
第一步:论文作者在网上提交论文,网上应用发送一个带有论文信息的XML格式的文件到该流程。
第二步:第一个调用活动检查论文的格式。
第三步:已被审阅计数器置零。
第四步:进入两个分支,左边分支等待审阅者意见,右边分支等待时间即三周。
第五步:选择接收活动等待接受评阅者的意见。
第六步:如果有一个审阅者审批同意,则审阅计数器加一,并等待其他两个审阅者的意见。
第七步:当然,审阅者也可以拒绝,同样审阅计数器加一,并等待其他两个审阅者的意见。
第八步:三周后,计时器激活,并发送cancel消息。
第九步:选择接收活动接受到cancel消息,执行相应处理,置计数器为三,循环退出,流程结束。
http://blog.itpub.net/14789789/viewspace-473195/
论文:http://www.docin.com/p-191263866.html