工作流

工作流是指工作流引擎。

最典型的应用就是公文审批之类。比如这个公文级别如何,牵扯到哪些部门、领导审批,要走哪些环节,这些都不适合写死在业务模块的代码里,否则流程一调整,就很麻烦。

有了工作流引擎,就可以在业务模块外部定义好流程,然后业务系统调用工作流,一步一步地流转,直到完结,中间还可以回退什么的,方便得很。流程更改,业务模块可能无需做任何修改。

所以说,工作流的意义在于解耦,将流程从业务程序中剥离出来,变成独立于具体业务项目的一个东西。

工作流这个名字,很容易让人误解的是,业务数据(比如订单)交给工作流以后,工作流会帮你自动执行,呼啦啦的从头到尾执行完,就像传送带一样。实际上,工作流调用过程是,工作流引擎从启动到结束,每个步骤,都要由业务系统将各种参数传给工作流引擎,比如审批单的各种资料填写,意见附录;每个流程环节的启动或回退,也都由业务系统来触发。业务系统通过读取工作流接口来获知目前所处的步骤和状态,以相机行事。工作流的意义在于流程与业务模块解耦,而不在于是否能自动流转。

因此,工作流这边并不存储什么业务系统的数据,顶多是存有一些传过来的参数;反倒是业务系统,需要存储工作流的一些ID、状态值等。但总的来说,二者数据是分开的,上帝的归上帝,凯撒的归凯撒;流程的归流程,业务的归业务。一些具体的表单处理,也由业务系统自己负责。工作流只负责流转。

工作流有一些术语:

1、流程定义
定义好一个流程中,从开始到结束的各个步骤。只需定义一次。相当于类。

2、流程实例
每个审批单要跑工作流,就要构造一个流程实例。通常每个单子对应一个实例。流程实例就相当于类实例。

3、活动(Activity)
就是流程中所说的步骤、节点。同样有定义和实例之分。

4、工作项(WorkItem)
表示流程实例在流转过程中为完成某个活动实例需要参与者做的工作。一个活动实例可以对应一个或多个工作项。同样有定义和实例之分。我感觉活动与工作项就像是进程和线程。如果只有一个线程,那么二者等同也无不可。实际应用中,相比活动,工作项更常被说成是“节点”、“步骤”。

我想到的例子是,有一个节点(活动)是会签,需要所有的领导都签名,才能流向下一步。此时,节点只有一个,但每个领导都对应一个工作项。所有工作项完成,该节点才算完成。

版权声明:本文为博主原屙文章,喜欢你就担走。

原文地址:https://www.cnblogs.com/leftfist/p/4764222.html