工作流引擎,是工作流组件的核心部件,主要功能是流程调度和冲突检测,流程定制是通过工作流引擎来完成的。
流程组件是一款自主研发的工作流引擎,它使用最流行的.NET 语言编写,具有可视化的配置工具和完善的业务展现平台,能够适应任何复杂情况流转。流程组件不但具有流程引擎一般的功能,还可以很方便的嵌入到您现有的业务系统中,不影响现有的业务系统的代码结构,是您在现有业务系统中增加流程功能的最佳选择。
流程引擎的基本功能:
顺序流转
条件流转
分流
合流
指派
授权
回退
异常终止
流程挂起
召回(在下一任务未处理前可召回)
子流程(流程嵌套)
流程引擎独有特色:
1、支持共享任务处理
多人都有权处理的任务,都能看到该任务,别其中一人处理后,其他人不会再看到该任务。
2、支持多启动节点
在流程环节基本相同只有开始任务不同时,可以利用多个开始节点并免多创建一个流程。
- 简化任务节点类型实现复杂流转
工作流的任务节点类型是经过深入的归纳和抽象,类型少功能强,流程图更贴近实际的业务流程,没有多余的节点,一目了然,所见即所得。
任务处理者配置规则


配置处理人注意事项:
每一个任务的处理者尽量独立,减少与其他任务的联系。
任务的处理者尽量是直接的处理者而不是经过运算获得的。
考虑如果该任务被指派时是否影响后续处理。
考虑处理人被授权后是否影响后续处理。
支持在流程提交时动态指定处理人。
处理者实例创建方式:每一个任务节点提交时,流程引擎根据模板配置自动生成下一任务处理者的事例,并在 WF_OPERATOR_INSTANCE 表中为每一个处理者创建一个事例(即一条数据记录)。
任务认领

任务放弃认领

任务指派

任务授权

创建流程实例(WorkFlowInstance)
用户在流程模板上启动一个新的流程时即创建一个新的流程实例,用户可以输入流程实例的名称,超时时间等信息。只有创建了流程实例才能创建流程实例的每个任务节点。在创建流程实例的同时自动创建一个开始的任务实例。
1、创建 WF_WORK_FLOW_INSTANCE 表内容
2、创建 WF_WORK_TASK_INSTANCE 表内容
创建任务实例(WorkTaskInstance)
一个处理实例包括两部分:任务实例和处理者实例。
(1)、创建任务实例
根据符合条件的分支找到符合条件的下一任务模板节点,根据任务模板配置的处理者创建任务实例,每个处理者都要创建一类实例,并根据处理者策略决定每个处理者的实例化方式和实例数。
处理者策略:
A:所有处理者同时处理
该处理策略,需要为每个处理者类型中的所有人都创建一个任务实例和处理人实例。例如,处理者类型是部门,使用"所有处理者同时处理"的处理者策略的时候,需要为部门下每个人生成任务实例和处理人实例。
B:任意处理者处理
该处理策略,生成一个任务实例和多个处理者实例,即多个处理者共同处理一个任务,只要有一个处理者(谁处理都可以,不需要每个处理者)处理了该任务,流程就可以继续向下流转。例如,处理者是某部门,只要该部门下任何一个人处理该任务就可以继续流转。
(2)、创建处理者实例
处理者的选择可以通过两个途径来完成,一是从流程模板中获取,每个任务节点中都配置了处理者。二是,用户指定处理人,提交时动态指定处理人,处理人的范围可以通过流程模板配置。
每个任务实例对应一个或者多个处理者,由处理者策略来决定(见创建任务实例)。
注意:在获取处理者时需要判断该处理者对应的处理人是否已经授权,如果已授权,创建实例的时候应该创建被授权人的实例。