工作流控制模式-基本控制模式5种

版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。

基本控制模式包括基本的顺序、并发、条件和合并路由,是其他控制模式的基础。基本控制模式有以下5种,如图A-2所示。


图 A-2 基本控制模式

  1. 顺序:活动顺序执行。
  2. 并发分裂:分支分裂为两个或多个后续分支,所有后续分支都被同时触发执行。
  3. 同步:两个或多个分支合并为一个后续分支,只有所有分支都执行完毕后,后续分支才 会被触发执行。
  4. 排他选择:分支分裂为两个或多个后续分支,只有一个后续分支被选择执行。
  5. 简单合并:两个或多个分支合并为一个后续分支,分支不需要同步,任何一个分支执行完毕后就会触发后续分支的执行。

1、顺序(WCP_1: Sequence)

描述:在一个流程实例里,活动在前续活动完成后顺序触发,如图A-3所示。

同义词

顺序执行、串行路由。

应用

顺序模式是工作流建模的基础,是流程定义里最基本的构建块,用以描述连续互相依赖的一 系列活动。

2、并发分裂(WCP_2: Parallel Split)

描述

分支分裂为两个或多个后续分支,分支执行完毕后触发后续并发分支的同时执行,如图A-4 所示。新员工入职时,先去人力资源部报道,接下来填写入职资料和签订合同,于此同时,IT部 门帮忙开通RTX邮件开发环境权限、初始化机器,两个工作同时进行。

图 A-4 并发分裂

同义词

AND-split、Fork、并行路由、并行分裂。

应用

作为设计流程的一个基本原则,我们应该尽可能采用并行过程。信息化的一个重要作用就是 加快信息的流动,让并行工作越来越成为可能。试想如果没有办公自动化系统,我们到人力资源 部报到后,IT部门并没有及时收到消息,那么我们填完入职资料后还要去IT部门申请机器,这个效率就非常低了。 对流程而言,流程实例执行时间是最重要的衡量指标:执行时间越短,对顾客越有效率,没
有人喜欢等待。

3、同步(WCP_3: Synchronization)

描述

两个或多个分支合并为一个后续分支,被合并的分支都执行完毕后,后续分支才会触发,如 图A-5所示。当资料填写完毕、IT部门初始化机器完毕并送至工位后,我们就可以收拾工位并和 新同事打招呼了。

图 A-5 分支同步

同义词

AND-join、汇聚、同步。

4、排他选择(WCP_4: Exclusive Choice)

描述

分支分裂为两个或多个后续分支,分支执行完毕后,根据用户决策或流程数据选择触发一个 后续分支执行,即多选一,如图A-6所示。在线购物时,确定订单后我们需要选择付款的方式, 或者在线支付或者货到付款。

图 A-6 排他选择

同义词

XOR-split、排他OR-split、条件路由。

应用

流程实例中的路由条件判断,路由条件是前续活动的输出、流程数据、表达式或者规则引擎 的计算结果。

5、简单合并(WCP_5: Simple Merge)

描述

两个或多个分支合并为一个后续分支,任何一个分支执行完毕后就会触发后续分支的执行, 不需要同步,遵循先进先出的原则。该模式有个前提条件,即前续分支有且只有一个会执行,这 一条件限定了后续分支只会被触发一次。
如图A-7所示,选择完付款方式后我们就可以提交订单,整个在线购物流程结束

图 A -7 简单合并

同义词

XOR-join、排他OR-join、merge。

小结

基本控制模式非常简单,顺序、排他选择、简单合并模式组合的流程和我们编写程序的逻辑 流程图非常相似,这三种模式同时能够对程序的逻辑流程图进行建模。

商业快速开发平台产品就使用了流程引擎来编排程序逻辑。他们的做法是将细粒度的代码逻 辑封装为运算构件,然后再通过流程的可视化编辑器将这些运算构件粘合起来。这样,传统方式 下采用代码实现业务逻辑的过程,变成了绘制流程图的过程。这样的实现看上去很美,其实存在 严重的弊端。首先,编写代码变得复杂了,明明几十行代码能够实现的逻辑却需要经过编写构件、 绘制程序流程图、部署、运行好多步才能实现,编程效率非常低下;其次是代码的执行效率低, 程序的运行需要经过一次流程定义的解释才能执行;最后是这种实现完全牺牲了语言自身的特 性,面向过程,很难提供代码级别的单元测试环境,只能提供有限的调试。该实现实际上是定义 了一种简单的流程语言,通过该流程语言来进行功能函数(运算构件)调用的编排。活动编排没 有问题,服务编排也没有问题,但是如果编排细粒度到功能函数,那么就超出了流程引擎的作用 域。正如搭建房子,用积木搭建挺好,用木屑搭建就过犹不及了。提升编程效率的最好途径总是 语言而不是工具。

返回索引

posted @ 2021-10-07 18:04  x3d  阅读(499)  评论(0编辑  收藏  举报