最近一直在学习有关Workflow的东西,包括Workflow的模式。

 

工作流(Work Flow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。

 

模式是一种对设计经验的总结和提炼,但熟知一个模式并不能说明、也不能解决任何问题,但是它可以协助你认知已存在的系统,专注你的视角,避免纠缠在细节上面;也可以作为可以借鉴的常规经验,协助你设计尚不存在的系统;还可以维持一组素语和隐喻,帮助你在设计的圈子里提高效率和人沟通。

 

我们可以用不同的视角去审视一个以流程为核心的信息系统。控制流视角关注任务之间的控制依赖(比如并行、选择和同步等等),它包含了传统的20多个模式(现在已经收集了超过40个);数据视角关注在信息传递和变量作用域等等;资源视角则关注任务的资源分配、委托等等;最后,异常处理视角则关注不同的异常起因和异常发生时不同的处理策略。

 

即,工作流模式分类大致可包括控制(Control)、资源(Resource)、数据(Data)和异常处理(Exception Handling)几部分。

 

例如控制流包含了几十种模式,其中的最基础控制流模式,也是工作流模式中最基本的部分,包含如下几种形式:

 

顺序(Sequence)

同一个流程中,任务挨个执行,一个任务执行完后再执行下一个。

这是最简单的顺序执行,没有异步流程在里面。

 

并行拆分(Parallel Split)

一个流程拆分成两个或两个以上子流程并行执行。

 

同步(Synchronization)

两个以上分支流程合并成一个,在汇聚点等待所有分支流程执行完成后才能汇聚。

不妨参考JDK中的CyclicBarrier,还有Promise/Future,这里也有说明。

 

排他选择(Exclusive Choice)

从可选工作流中选择一个。

 

简单合并(Simple Merge)

合并两个或以上的可选路径。