工作流引擎说明书Word文档下载推荐.doc
《工作流引擎说明书Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《工作流引擎说明书Word文档下载推荐.doc(30页珍藏版)》请在冰豆网上搜索。
2.2.2 流程模型 -7-
2.2.2.1 流程的起点和终点模型 -7-
2.2.2.3 流程的激活模型 -8-
2.2.2.3 流程的流转模型 -8-
2.3 数据访问层 -10-
2.3.1 数据模型定义 -10-
2.3.2 流程引擎中对象模型和数据模型的对应关系 -11-
2.4 扩展接口 -12-
2.4.1 条件扩展接口 -12-
2.4.2 人员查找扩展接口 -12-
2.4.3 事件操作扩展接口 -12-
2.4.3 流程插件 -13-
2.5 流程引擎对外接口(API) -13-
2.5.1 IProcessService接口定义 -13-
2.5.2 ITaskService接口定义 -15-
3. 流程应用支持层 -17-
3.1 应用框架 -17-
3.1.1 页面控制逻辑 -18-
3.1.1.1 流程起草控制逻辑 -19-
3.1.1.2 流程待办/已办显示控制逻辑 -20-
3.1.1.3 流程审批提交控制逻辑 -20-
3.1.2 流程引擎整合 -20-
3.2 流程公共应用组件 -22-
3.2.1 流程起草时的人员过滤操作ProcessRoleFilterAction -22-
3.2.2 流程起草操作ProcessStartAction -22-
3.2.3 流程待办显示(Dispatch)操作ProcessDispatchAction -22-
3.2.4 流程待办列表显示操作ProcessListAction -23-
3.2.5 流程已办显示(Dispatch)操作CompletedDispatchAction -23-
3.2.6 流程已办列表显示操作CompletedAllListAction -23-
3.2.7 流程草稿列表显示操作ProcessDraftListAction -24-
3.2.8 流程提交显示选择路径操作ProcessCommonSubmitAction -24-
3.2.9 流程跟踪信息显示操作ProcessCommonTraceAction -24-
3.2.10 流程待阅显示(Dispatch)操作ReaderDispatchAction -24-
3.2.11 流程已阅阅显示(Dispatch)操作ReaderDispatchAction -24-
1概述
1.1文档目的
《设计说明书》阐述流程引擎的设计架构以及对外的服务功能
《设计说明书》要达到如下一些目标:
l阐述流程的定义
l阐述流程的对象模型
l阐述流程的调度执行
l阐述流程服务接口
1.2术语及缩略语
工作流:
工作流是业务流程的计算机化或自动化过程。
通过工作流,文档、信息、任务在参与者之间根据一定规则传递,以实现整体的商务目标。
流程引擎:
为工作流实例的执行提供运行服务环境的软件或“引擎”。
主要负责控制流程实例和活动实例的状态转换,也就是流程的流转。
工作流应用数据:
这种数据是指那些由应用程序操作的数据。
它们是针对应用程序的,是企业完成具体的业务功能所需要的数据。
流程引擎无法也不需要对它们进行访问。
流程定义:
预算定义的业务流转的逻辑。
流程实例:
业务的一次实际流转过程。
活动(任务)定义:
组成流程定义的基本节点,流程定义由若干个活动(任务)组成。
活动(任务)实例:
业务流转过程中产生的实际操作,是组成流程实例的基本元素。
参与者:
任务的执行者。
流转:
流程从一个状态变迁为另外一个状态的过程。
1.3参考资料
《流程配置说明.doc》,《流程引擎数据模型.pdm》
2 流程引擎的设计架构
本流程引擎采用微内核的架构。
微内核架构的流程引擎,将一些复杂的流程业务性问题,诸如组织人员任务分配,分支条件计算,事件操作,业务工作项的处理,业务数据保存,以及那些复杂的重新起草,退回,汇签等,从流程引擎中剥离出来,流程引擎关心的内容只是如何让一个流程按照预先定义的秩序从一个节点(状态)变换到另外一个节点(状态),而将上述的这些功能通过扩展的接口进行实现,并整合到流程引擎的内核中。
使用微内核的流程引擎架构,是为了降低流程引擎中各个组件的耦合度,使得流程引擎更加容易进行功能的扩展,并且整个系统运行更加稳定。
如上图,左图中没有使用微内核,各种功能直接融合在流程引擎中,在某一个功能需要扩展的时候需要重构工作流的代码,扩展性不强;
右图采用微内核的架构,将外围的功能通过扩展接口加入到引擎内核中,使得流程引擎内核更加稳定,也更容易扩展。
2.1 流程引擎的组件的总体架构
流程引擎的总体架构图如下:
流程引擎主要分为4部分:
1)流程引擎内核:
主要定义流程引擎的内部数据结构和流程调度。
2)流程扩展接口实现层:
实现流程引擎的各个服务组件,包括任务分配,条件计算,事件处理等操作。
3)流程数据访问层:
主要实现流程引擎内部数据的访问逻辑,主要包括流程定义的数据,流程实例,活动实例,任务项等数据。
4)流程API服务接口层:
主要提供流程引擎对外的服务。
2.2流程引擎内核
2.2.1流程定义
流程引擎采用了基于活动图的模型(典型的有向状态机)定义,流程全部由状态(state)组成,各个状态之间定义若干个流转路径(Transition)。
流程的完整定义从唯一一个起始状态开始,经过若干个状态,结束于某一个终止状态。
流程的定义由以下几个对象组成:
ProcessTemplate:
流程模板对象,包含了流程的基本信息以及所有的状态。
State:
流程状态对象,包含了状态的各个属性,所有的流转路径(Transition),进入该状态触发的事件,离开该状态触发的事件,任务分配定义。
Transition:
流程的流转路径对象,包括流转路径的各个属性,起始和结束状态,流转的条件计算和触发的事件。
Task:
流程状态的子属性,主要定义任务的分配。
流程引擎的对象建模可以参考《流程引擎对象建模》
2.2.2流程模型
2.2.2.1流程的起点和终点模型
流程有且只有一个起始节点(startNode),可以根据不同的业务需求设置多个终态,不同的终态可以对应业务层面的不同的业务状态。
2.2.2.3流程的激活模型
流程从起始节点开始,通过不停的激活操作,使得流程在不同的状态之间进行流转。
系统目前支持的激活方式有:
1)人工方式:
通常说的人工任务,在流程产生下一步的活动的时候,同时为相应的人员分配一个需要处理的任务(例如填写一个审批意见等),这个就是我们通常说的人工任务。
在人员没有完成相关任务的时候,流程不会产生任何变化,处于一个停滞状态;
当人员对自身的任务进行了相应操作后,就再次激活了流程,使得流程继续流转下去,产生新的状态。
2)自动方式:
表现形式为自动状态。
当流程流转到自动状态的时候,流程并不产生任何人工任务,系统通过内部的自动计算,直接进行再次的流转操作,产生后续的状态。
3)定时触发:
通过为响应的状态添加定时器实现(目前没有试验过),它在人工任务的基础上,当配置的定时器触发的时候,系统强行结束当前的人工任务,并进行流程的流转。
2.2.2.3流程的流转模型
1)串行流转
最简单的流转模型,如图:
2)自循环流转
流程可以流转到自身的状态,以达到反复执行某一个任务的目的。
例如预算不足的时候的保留待办。
如图:
这里可以根据实际情况添加判断条件,可以在条件满足的前提下进行流程的流转。
3)条件选择流转
状态A有多条路径可供选择,每条路径都带有一定的条件判断,但是每次只能选择其中的一条路径进行流程的流转。
4)自动流转
和条件选择流转相似,不同的地方在于,条件的判断有系统自动完成,系统根据计算的结果选择唯一的一条迁移路径进行流程的流转。
这个对应于流程的自动状态。
5)并行流转
一个状态结束以后,同时生成多个状态,也就是我们所说的汇签的分支流程(fork)。
6)同步聚合流转
和分支流转模型组合使用,在聚合节点等待所有分支的到来,在所有分支执行完成以后,才激活流程的后续状态,继续往下执行。
聚合节点可以配置成自动状态,也可以配置成一个需要人工参与的普通任务。
7)条件聚合流转(暂时没实现)
和同步聚合不同的是在汇聚节点前面有一个规则引擎,当到达的分支节点满足规则以后就激活流程的后续状态,而不必等到所有的分支都到达汇聚节点,当后续的其他分支节点到达汇聚节点的时候,将不再触发相同的流程迁移步骤。
8)动态自动跳转
流程从在某些条件满足的场景下,可以不按照预定义了流程流转路径,进行自动跳转。
2.2.3流程引擎的逻辑实现
2.2.3.1流程引擎的启动
流程引擎的初始化操作通过WorkflowContext类的init方法完成,该操作的触发由spring在初始化WorkflowContext的实例对象的时候进行触发。
Init方法的具体逻辑如下:
1.加载业务模板信息,可以根据配置的loadBusinessTemplates属性进行选择性的加载。
2.加载流程模板定义,可以根据配置的loadTemplate属性进行选择性的加载。
3.将读取的流程配置解析成流程对象模型。
2.2.3.2流程状态的迁移
1.获得流程的迁移路径。
2.触发起始状态的exit事件(Action)。
3.执行迁移路径上定义的所有事件触发接口(Action)。
从执行的角度上讲,流程已经离开了起始状态。
4.触发目标状态的entry事件(Action),流程迁移结束。
5.为新的状态生成新的活动实例。
如果目标状态是一个自动状态的话,继续循环执行上述的步骤,直到目标状态为非自动状态。
2.3数据访问层
2.3.1数据模型定义
数据访问层主要定义流程引擎的业务数据部分,流程引擎采用基于活动图的模型,业务上以人员任务(待办)为中心。
人员任务分为待办任务,已办任务,待阅任务,已阅任务4种。
围绕人员任务,业务数据包括:
1)业务流程模板信息(BizProcessTemplate):
记录业务的抽象信息,包括功能,采用的流程模板。
2)应用上下文信息(ProcessCategory):
记录了每一个运行的流程对应部署的上下文
3)流程实例信息(ProcessInstance):
记录了系统起草的每一个流程信息,包括起草的业务,使用的流程模板,起草人,状态等信息。
4)活动实例信息(ActivityInstance):
流程每一次发生状态变幻产生的活动信息,记录了流程当前的状态,处理人信息等。
5)审批意见信息(Comment):
审批人进行审批操作的时候为响应活动实例添加的意见。
6)待办任务(TaskInstance):
分配给每一个审批人的操作任务,每一个待办任务和相应的活动实例管理,一个活动实例可以为多个审批人同时分配各自的任务项。
信息包括人物处理人,处理状态,处