您的当前位置:首页正文

工作流引擎说明书

2023-04-30 来源:年旅网
工作流平台概要说明书v1.1

工作流引擎设计说明书

- 1 -

工作流平台概要说明书v1.1

文档版本记录

版本号 1.0

编写日期 2009-5-11 更改内容 初始稿 - 2 -

工作流平台概要说明书v1.1

目 录

1 概述 ..................................................................................................................... - 5 - 1.1 1.2 1.3 2 2.1 2.2 2.2.1 2.2.2 2.2.2.1 2.2.2.3 2.2.2.3 2.3 2.3.1 2.3.2 2.4 2.4.1 2.4.2 2.4.3 2.4.3 2.5 2.5.1 2.5.2 3.1 3.1.1 3.1.1.1 3.1.1.2 3.1.1.3 3.1.2 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.2.10

文档目的 ............................................................................................................................. - 5 - 术语及缩略语 ..................................................................................................................... - 5 - 参考资料 ............................................................................................................................. - 5 - 工作流引擎的设计架构 .......................................................................................................... - 6 -

工作流引擎的组件的总体架构 ..................................................................................... - 7 - 流程引擎内核 ................................................................................................................. - 8 - 流程定义 ......................................................................................................................... - 8 - 流程模型 ......................................................................................................................... - 8 - 流程的起点和终点模型 ............................................................................................. - 8 - 流程的激活模型 ......................................................................................................... - 9 - 流程的流转模型 ......................................................................................................... - 9 - 数据访问层 ................................................................................................................... - 13 - 数据模型定义 ............................................................................................................... - 13 - 流程引擎中对象模型和数据模型的对应关系 ............................................................ - 13 - 扩展接口 ....................................................................................................................... - 15 - 条件扩展接口 ............................................................................................................... - 15 - 人员查找扩展接口 ....................................................................................................... - 15 - 事件操作扩展接口 ....................................................................................................... - 15 - 流程插件 ....................................................................................................................... - 16 - 流程引擎对外接口(API).............................................................................................. - 17 - IPROCESSSERVICE接口定义 ............................................................................................. - 17 - ITASKSERVICE接口定义 .................................................................................................. - 18 - 应用框架 ........................................................................................................................... - 22 - 页面控制逻辑 ............................................................................................................... - 22 - 流程起草控制逻辑 ................................................................................................... - 24 - 流程待办/已办显示控制逻辑 ................................................................................. - 24 - 流程审批提交控制逻辑 ........................................................................................... - 25 - 流程引擎整合 ............................................................................................................... - 25 - 流程公共应用组件 ........................................................................................................... - 28 - 流程起草时的人员过滤操作PROCESSROLEFILTERACTION ................................................ - 28 - 流程起草操作PROCESSSTARTACTION ................................................................................ - 28 - 流程待办显示(DISPATCH)操作PROCESSDISPATCHACTION ............................................... - 28 - 流程待办列表显示操作PROCESSLISTACTION .................................................................. - 29 - 流程已办显示(DISPATCH)操作COMPLETEDDISPATCHACTION ........................................... - 29 - 流程已办列表显示操作COMPLETEDALLLISTACTION .......................................................... - 29 - 流程草稿列表显示操作PROCESSDRAFTLISTACTION .......................................................... - 29 - 流程提交显示选择路径操作PROCESSCOMMONSUBMITACTION ............................................. - 30 - 流程跟踪信息显示操作PROCESSCOMMONTRACEACTION ....................................................... - 30 - 流程待阅显示(DISPATCH)操作READERDISPATCHACTION ............................................ - 30 -

3. 流程应用支持层.................................................................................................................... - 22 -

- 3 -

工作流平台概要说明书v1.1

3.2.11 流程已阅阅显示(DISPATCH)操作READERDISPATCHACTION ........................................ - 30 -

- 4 -

工作流平台概要说明书v1.1

1 概述

1.1 文档目的

《设计说明书》阐述工作流引擎的设计架构以及对外的服务功能 《设计说明书》要达到如下一些目标:  阐述流程的定义  阐述流程的对象模型  阐述流程的调度执行

 阐述流程服务接口

1.2 术语及缩略语

工作流:工作流是业务流程的计算机化或自动化过程。通过工作流,文档、信息、任务在参与者之间根据一定规则传递,以实现整体的商务目标。

工作流引擎:为工作流实例的执行提供运行服务环境的软件或“引擎”。主要负责控制流程实例和活动实例的状态转换,也就是流程的流转。

工作流应用数据:这种数据是指那些由应用程序操作的数据。它们是针对应用程序的,是企业完成具体的业务功能所需要的数据。工作流引擎无法也不需要对它们进行访问。

流程定义:预算定义的业务流转的逻辑。 流程实例:业务的一次实际流转过程。

活动(任务)定义:组成流程定义的基本节点,流程定义由若干个活动(任务)组成。 活动(任务)实例:业务流转过程中产生的实际操作,是组成流程实例的基本元素。 参与者:任务的执行者。

流转:流程从一个状态变迁为另外一个状态的过程。

1.3 参考资料

《流程配置说明.doc》,《流程引擎数据模型.pdm》

- 5 -

工作流平台概要说明书v1.1

2 工作流引擎的设计架构

本工作流引擎采用微内核的架构。微内核架构的工作流引擎,将一些复杂的流程业务性问题,诸如组织人员任务分配,分支条件计算,事件操作,业务工作项的处理,业务数据保存,以及那些复杂的重新起草,退回,汇签等,从工作流引擎中剥离出来,流程引擎关心的内容只是如何让一个流程按照预先定义的秩序从一个节点(状态)变换到另外一个节点(状态),而将上述的这些功能通过扩展的接口进行实现,并整合到流程引擎的内核中。

使用微内核的流程引擎架构,是为了降低流程引擎中各个组件的耦合度,使得流程引擎更加容易进行功能的扩展,并且整个系统运行更加稳定。如上图,左图中没有使用微内核,各种功能直接融合在工作流引擎中,在某一个功能需要扩展的时候需要重构工作流的代码,扩展性不强;右图采用微内核的架构,将外围的功能通过扩展接口加入到引擎内核中,使得流程引擎内核更加稳定,也更容易扩展。

- 6 -

工作流平台概要说明书v1.1

2.1

工作流引擎的组件的总体架构

工作流引擎的总体架构图如下:

业务流程审批应用框架流程应用支持层系统边界对外接口层(API)扩展接口实现层流程定义流程执行扩展接口定义流程引擎内核数据访问层流程引擎数据库访问

流程引擎主要分为4部分: 1) 流程引擎内核:主要定义流程引擎的内部数据结构和流程调度。 2) 流程扩展接口实现层:实现流程引擎的各个服务组件,包括任务分配,条件计

算,事件处理等操作。

3) 流程数据访问层:主要实现流程引擎内部数据的访问逻辑,主要包括流程定义

的数据,流程实例,活动实例,任务项等数据。

4) 流程API服务接口层:主要提供流程引擎对外的服务。

- 7 -

工作流平台概要说明书v1.1

2.2 流程引擎内核

2.2.1 流程定义

流程引擎采用了基于活动图的模型(典型的有向状态机)定义,流程全部由状态(state)组成,各个状态之间定义若干个流转路径(Transition)。流程的完整定义从唯一一个起始状态开始,经过若干个状态,结束于某一个终止状态。

状态2结束状态起始状态状态1状态3结束状态

流程的定义由以下几个对象组成:

ProcessTemplate:流程模板对象,包含了流程的基本信息以及所有的状态。

State:流程状态对象,包含了状态的各个属性,所有的流转路径(Transition),进入该状态触发的事件,离开该状态触发的事件,任务分配定义。

Transition:流程的流转路径对象,包括流转路径的各个属性,起始和结束状态,流转的条件计算和触发的事件。

Task:流程状态的子属性,主要定义任务的分配。

流程引擎的对象建模可以参考《流程引擎对象建模》 2.2.2

流程模型

2.2.2.1 流程的起点和终点模型

流程有且只有一个起始节点(startNode),可以根据不同的业务需求设置多个终态,不同的终态可以对应业务层面的不同的业务状态。

- 8 -

工作流平台概要说明书v1.1

2.2.2.3 流程的激活模型

流程从起始节点开始,通过不停的激活操作,使得流程在不同的状态之间进行流转。系统目前支持的激活方式有:

1) 人工方式:通常说的人工任务,在流程产生下一步的活动的时候,同时为相应

的人员分配一个需要处理的任务(例如填写一个审批意见等),这个就是我们通常说的人工任务。在人员没有完成相关任务的时候,流程不会产生任何变化,处于一个停滞状态;当人员对自身的任务进行了相应操作后,就再次激活了流程,使得流程继续流转下去,产生新的状态。

2) 自动方式:表现形式为自动状态。当流程流转到自动状态的时候,流程并不产

生任何人工任务,系统通过内部的自动计算,直接进行再次的流转操作,产生后续的状态。

3) 定时触发:通过为响应的状态添加定时器实现(目前没有试验过),它在人工

任务的基础上,当配置的定时器触发的时候,系统强行结束当前的人工任务,并进行流程的流转。

2.2.2.3

流程的流转模型

1)串行流转

最简单的流转模型,如图:

ABC 2)自循环流转 流程可以流转到自身的状态,以达到反复执行某一个任务的目的。例如预算不足的时候的保留待办。如图:

AConditionB

这里可以根据实际情况添加判断条件,可以在条件满足的前提下进行流程的流转。 3)条件选择流转

状态A有多条路径可供选择,每条路径都带有一定的条件判断,但是每次只能选择其中的一条路径进行流程的流转。

- 9 -

工作流平台概要说明书v1.1

BAconditionCD

4)自动流转

和条件选择流转相似,不同的地方在于,条件的判断有系统自动完成,系统根据计算的结果选择唯一的一条迁移路径进行流程的流转。这个对应于流程的自动状态。

BA自动状态自动路径判别器C

5)并行流转

一个状态结束以后,同时生成多个状态,也就是我们所说的汇签的分支流程(fork)。

BAC

6)同步聚合流转

和分支流转模型组合使用,在聚合节点等待所有分支的到来,在所有分支执行完成以后,才激活流程的后续状态,继续往下执行。聚合节点可以配置成自动状态,也可以配置成一个需要人工参与的普通任务。

- 10 -

工作流平台概要说明书v1.1

BAANDDC

7)条件聚合流转(暂时没实现)

和同步聚合不同的是在汇聚节点前面有一个规则引擎,当到达的分支节点满足规则以后就激活流程的后续状态,而不必等到所有的分支都到达汇聚节点,当后续的其他分支节点到达汇聚节点的时候,将不再触发相同的流程迁移步骤。

BA规则引擎DC

8)动态自动跳转

流程从在某些条件满足的场景下,可以不按照预定义了流程流转路径,进行自动跳转。

A 2.2.3

BC 流程引擎的逻辑实现

2.2.3.1 流程引擎的启动

流程引擎的初始化操作通过WorkflowContext类的init方法完成,该操作的触发由spring在初始化WorkflowContext的实例对象的时候进行触发。Init方法的具体逻辑如下: 1.加载业务模板信息,可以根据配置的loadBusinessTemplates属性进行选择性的加载。 2.加载流程模板定义,可以根据配置的loadTemplate属性进行选择性的加载。 3.将读取的流程配置解析成流程对象模型。

- 11 -

工作流平台概要说明书v1.1

2.2.3.2 流程状态的迁移

1.获得流程的迁移路径。

2.触发起始状态的exit事件(Action)。

3.执行迁移路径上定义的所有事件触发接口(Action)。从执行的角度上讲,流程已经离开了起始状态。

4.触发目标状态的entry事件(Action),流程迁移结束。 5.为新的状态生成新的活动实例。 如果目标状态是一个自动状态的话,继续循环执行上述的步骤,直到目标状态为非自动状态。

- 12 -

工作流平台概要说明书v1.1

2.3

数据访问层

2.3.1 数据模型定义

数据访问层主要定义流程引擎的业务数据部分,流程引擎采用基于活动图的模型,业务上以人员任务(待办)为中心。人员任务分为待办任务,已办任务,待阅任务,已阅任务4种。

围绕人员任务,业务数据包括:

1) 业务流程模板信息(BizProcessTemplate):记录业务的抽象信息,包括功能,采用的流

程模板。

2) 应用上下文信息(ProcessCategory):记录了每一个运行的流程对应部署的上下文 3) 流程实例信息(ProcessInstance):记录了系统起草的每一个流程信息,包括起草的业务,

使用的流程模板,起草人,状态等信息。 4) 活动实例信息(ActivityInstance):流程每一次发生状态变幻产生的活动信息,记录了流

程当前的状态,处理人信息等。 5) 审批意见信息(Comment):审批人进行审批操作的时候为响应活动实例添加的意见。 6) 待办任务(TaskInstance):分配给每一个审批人的操作任务,每一个待办任务和相应的

活动实例管理,一个活动实例可以为多个审批人同时分配各自的任务项。信息包括人物处理人,处理状态,处理时间,任务项所关联的活动实例和流程实例等。 7) 已办任务(CompleteTaskInstance):处理完成的待办任务,信息和待办任务相同,只是

考虑到数据量的问题,单独创建一种数据结构。 8) 待阅任务(TaskMessage):分配给非流程审批人员的查看任务。 9) 已阅任务(CompleteTaskMessage):查看完成的待阅任务,和已办任务类型。

流程引擎的业务数据模型的详细信息可以参考《流程引擎数据模型》。 2.3.2

流程引擎中对象模型和数据模型的对应关系

流程引擎的对象模型主要是从如何定义流程,如何表示流程的角度上进行建模的,而数据模型是从人员任务的业务角度上进行建模的,但是两者的一些主要数据互相之间仍然有一定的联系。

- 13 -

工作流平台概要说明书v1.1

ProcessInstance1-N动态实例ProcessTemplate1-NActivityInstanc1-N动态实例State1-NTaskInstance

动态实例Task 数据模型中的ProcessInstance(流程实例)对应于对象模型中的ProcessTemplate(流程模板),两者的关系就好比ClassInstance和Class的关系。ActivityInstance和State,TaskInstance和Task也是相同的关系。

- 14 -

工作流平台概要说明书v1.1

2.4

扩展接口

扩展接口作为流程引擎内核的辅助接口,为流程引擎内核提供额外的功能。目前系统支持的扩展接口有:

1)条件扩展接口(Condition):定义在Transition上,用于判断该Transition是否是一条有效的迁移路径。

2)审批人员查找扩展接口(IAssignment):定义在Task上,用于计算流程的每一个任务的审批人员。

3)事件操作扩展接口(IAction):可以定义在State的entry和exit中,也可以定义在Transition上,用于定义在特定环境下触发的操作。

4)流程插件(Plugin):原则上讲这个接口并不能算在流程引擎的范畴内,它只是服务于业务层的一个扩展接口,主要作用还是为流程引擎做一些额外的辅助操作,例如预算查询等。 2.4.1

条件扩展接口

接口定义:

Public interface Condition{ Public Boolean parseCondition(ContextInstance ctxIns, Map args) throws WorkflowException; };

常用的实现类有:BeanShellCondition(根据beanshell判断的condition),

BeanShellWithSkipCheckCondition(BeanShellCondition基础上附加自动跳转的功能)等,具体的实现可以参考《流程配置说明》。

2.4.2 人员查找扩展接口

接口定义:

Public interface IAssignment{ Public List queryCandidates(ContextInstance ctxIns,Map args) throws WorkflowException; };

常用的实现类有:DepartmentManagerAssignment(部门负责人查找任务),CompanyManagerAssignment(公司总经理查找任务)等,具体的实现可以参考《流程配置说明》。 2.4.3

事件操作扩展接口

接口定义:

- 15 -

工作流平台概要说明书v1.1

Public interface IAction{ Object execute(ContextInstance ctxInst,Map args)throws WorkflowException };

常用的实现类有:BudgetAction(预算操作),PositionNotifyAction(待阅通知)等,具体的实现可以看草《流程配置说明》 2.4.3

流程插件

接口定义:

Public interface IProcessPlugin{

Void _plugin(Map params); };

流程的插件只能在特殊的几个地方加入到流程计算中(类似于linux内核的可插入的内核模块),目前系统中支持的插入点有2出:

1.ProcessCommonSubmitAction中计算流程审批路径的时候。 2.流程起草或者审批的时候,调用流程引擎接口前。

流程插件通过spring的配置文件定义,每一个插件都有一个独立的名字,名字由模板名称+版本+插入点标识符组成。流程插件目前的一个比较常用的操作就是为流程的参数进行一些复杂计算,例如外部接口的调用,复杂参数(超标标准)等计算逻辑。

- 16 -

工作流平台概要说明书v1.1

2.5

流程引擎对外接口(API)

流程引擎对外接口分为2部分:流程对外接口IProcessService以及任务对外接口ITaskService。IProcessService主要提供操纵流程实例的各个接口,ITaskService主要提供操纵任务实例的各个接口。 2.5.1

IProcessService接口定义

接口功能 启动流程实例,创建初始活动实例以及对应的草稿任务 挂起一个流程,暂时中止该流程的各项操作 唤醒一个流程 撤回一个激活状态的流程实例,重新将流程设定为草稿任务状态 中止流程 输入参数 bizTemplateId processParameter Piid 业务模板编码 流程起草参数 流程实例ID 流程实例ID 流程实例ID 无 返回值 TaskInstance 草稿任务项 接口名称 StartProcessWithDraft SuspendProcess resumeProcess cancelProcess Piid Piid 无 无 terminateProcess Piid Reason 流程实例ID 中止原因 流程查询参数 流程查询参数 查询起始时间 查询结束时间 分页的页号 分页的大小 流程实例无 queryProcessInstance 查询流程实例 processParameter processParameter beginTime endTime Page pageSize List 满足条件的流程实例 分页流程实例查找结果 queryProcessInstance 查询流程实例 PagedBean queryProcessInstance 查询流程实例 Piid ProcessIns流程实- 17 -

工作流平台概要说明书v1.1

ID queryActivityInstances queryProcessAuthorizationList addProcessAuthorization queryProcessAuthorization removeProcessAuth queryProcessAuth 查询流程实例相关联的所有活动实例 查询用户关联的授权信息 添加流程授权信息 查询流程授权信息 删除流程授权信息 查询指定流程指定员工的授权信息 查询所有的业务模板 查询指定的业务模板 查询流程类型 根据活动实例查找对应是流程State配置 根据当前活动实例获得可供选择的流程审批路径 获得起草状态对应的有效审批路径 获得流程的跟踪信息 Piid 流程实例ID 用户的工号 流程授权信息 授权标识符 流程授权信息 员工工号 业务模板Id tance List 例 活动实例列表 授权信息列表 Uid processAuthorization Id List 无 ProcessAuthorization 无 ProcessAuthorization Collection 授权信息 processAuthorization origUser businessTemplateId 无 ID ID activityInstId activityInstId taskParameter bizTemplateId taskParameter Piid 授权信息 queryBizTemplates queryBizTemplate queryProcessCategory getState 业务模板集合 业务模板Id BizProces业务模板sTemplate 信息 流程类型ID ProcessCategory 活动实例ID State 流程类型信息 流程配置的状态 有效的流程审批路径 有效的流程审批路径 用xml表示的流程跟踪信息 getAvailablePaths 活动实例ID PathResult 任务参数 业务模板ID PathResult 任务参数 流程实例ID String getDraftAvailablePaths getProcessInstanceTrace 2.5.2

ITaskService接口定义

接口功能 修改草稿任务的标题 输入参数 Tkiid Title 任务ID 更新的标题 返回值 无 接口名称 modifyDraftTitle - 18 -

工作流平台概要说明书v1.1

endTask 结束当前任务,执行流程的迁移 声明一个任务 Tkiid taskParameter Tkiid Uit 任务ID 任务参数 任务ID 声明人的工号 任务ID 取消声明的用户工号 任务ID 任务ID ActivityInstance[] 新生成的活动实例数组 是否声明成功 是否取消声明成功 任务拥有者的工号 任务配置信息 claimTask Boolean cancelClaim 取消一个任务的声明操作 查询任务实例的拥有者 获得任务实例对应的任务配置信息 把某一个任务实例授权给另外一个人 Tkiid Uid Tkiid Tkiid Boolean queryTaskInstanceOwner getTask String Task authorizationTask Tkiid Owner Uid 任务ID 任务拥有者的工号 授权的人员工号 无 replaceTaskOwner 将某人的待办替换给其他人 Owner Uid 任务的原始无 拥有者工号 替换的员工工号 待办任务ID Integer 加签的人员 加签任务的标题 加签的说明信息 查找的员工工号 页号 页大小 查找的员工工号 页号 页大小 查找的员工工号 流程类型 页号 页大小 任务ID TaskInsta待办任务 PagedBean 待办任务列表 PagedBean 待办任务列表 PagedBean 草稿任务列表 加签任务的ID assignAdvisedTas分发加签任务 k Tkiid User Title Content queryDraftByUID 查找员工的草Uid 稿任务 Page pageSize queryTaskInstanceByUID 查找员工的待办任务 Uid Page pageSize queryTaskInstanceByUIDAndCategory 查找员工特定类型下的待办任务 Uid categoryId Page pageSize queryTaskInstan查找待办任务 Tkiid - 19 -

工作流平台概要说明书v1.1

ce newTaskInstance 生成活动实例activityInst 对应的待办任务 taskParameter processId Users nce 活动实例 任务参数 流程ID 产生待阅任务的人员 待阅任务ID 无 阅读人员 员工工号 List 每一个流程类型下的待办任务数量 已阅任务列表 已阅任务列表 List List 生成的待办任务列表 生成的待阅任务列表 newTaskMessage 生成待阅项 readTaskMessage countTaskInstanceByUIDWithGroup queryCompletedMessagesByUID queryCompletedMessagesByUIDAndProcCategory 阅读待阅任务,生成已阅任务 统计员工每一个流程类型下的待办任务数量 查找员工的已阅任务 查找员工特定流程类型下的已阅任务 Tkiid User Uid Uid Page pageSize Uid processCategory Page pageSize 员工工号 页号 页大小 员工工号 流程类型 页号 页大小 PagedBean PagedBean queryMessage queryMessagesByUID queryMessagesByUIDAndProcCategory 查找待阅任务 查询待阅任务 Id Uid Page pageSize 待阅任务ID TaskMessage 人员工号 页号 页大小 员工工号 流程类型 页号 页大小 员工工号 List PagedBean PagedBean 待阅任务列表 待阅任务列表 待阅任务列表 查询待阅任务 Uid processCategory Page pageSize countMessagesBy根据流程类型Uid 统计待阅任务UIDWithGroup 的数量 各个流程类型下的待阅任务数量 已办任务列表 已办任务列表 queryCompletedTaskInstancesByUID queryCompletedTaskIntancesByUIDAndProcCategory 查询员工的已办任务 根据流程类型查询员工的已办任务 Udi Page pageSize Uid processCategory Page pageSize 员工工号 页号 页大小 员工工号 流程类型 页号 页大小 PagedBean PagedBean - 20 -

工作流平台概要说明书v1.1

queryCompletedDraftByUID 查询员工完成的草稿任务 Uid Page pageSize 员工工号 页号 页大小 流程实例 员工工号 PagedBean PagedBean 草稿已办任务列表 已办任务列表 queryCompletedT查询一个流程processId askInstancesByU的一个用户关IDAndProcessId 联的所有已办Uid 任务

- 21 -

工作流平台概要说明书v1.1

3. 流程应用支持层

流程应用支持层是建立在流程引擎的基础上,将流程引擎和业务层逻辑结合起来。流程应用支持层包括2部分的内容:应用框架,流程应用支持组件。

应用框架,定义了业务层调用流程引擎接口API的方式,以及页面控制层的基本结构。 流程公共应用支持组件,定义了一些为业务层服务的公共组件,包括流程的起草,草稿项的删除,待办/已办/待阅/已阅任务的显示,流程的取消,流程的重新申请,流程跟踪,审批人的选择,加签等。

3.1 应用框架

系统的应用框架,采用struts为基础的mvc结构,整个框架分为2部分: 1) 页面控制逻辑

2) 业务逻辑和流程引擎的整合

3.1.1 页面控制逻辑

页面控制逻辑分为流程公共应用组件(action)和业务组件(action)2部分, 流程公共应用组件定义了一些共有的操作,例如起草草稿,显示待办,已办等。

业务组件定义了各个业务需要的3中控制逻辑:DispatchAction,ApplyAction,ApproveAction。

DispatchAction作为业务组件控制逻辑的一个入口,通过不同的操作类型(HttpRequest对象中的forwardPath属性)显示不同的页面(申请页面和审批页面2种),同时该Action负责所有页面级的参数的计算和业务数据的读取和显示操作。

ApplyAction为业务申请页面提交操作,完成业务数据的保存操作的同时还需要提交流程的起草操作。

ApproveAction为业务的审批页面的提交操作,完成业务数据的保持操作的同时还需要提交流程审批操作。

流程公共应用组件和业务组件两部分通过使用的流程模板名称(templateName)进行关联。

使用方法是:在公共组件的最后使用templateName作为struts的跳转路径,同时在业务层为各个templateName定义一个对应的global forwardPath配置,配置的路径定义到对应业务的DispatchAction上。如下图:

- 22 -

工作流平台概要说明书v1.1

系统边界申请页面ath=applysubmitApplyActionfowardP流程公共组件templateNameDispatchActionforrdPwa成功页面 在控制逻辑中有一种特例:有写业务同时使用一套流程模板,换句话说各个业务对应的templateName是相同的,按照上述的方法就无法完成流程公共组件到各个业务DispatchAction的流转,这个时候需要引入一个ITProcessDispatch的组件,该组件本质就是一个中转分发器,它根据HttpRequest对象中的业务类型(businessType)属性,进行二次流转,流转到不同业务的DispatchAction,以达到正确流转的目的。所以可以发现在使用相同的流程模板的业务中不能出现具有相同业务类型(businessType)的2个业务。带有ITProcessDispath的流转控制图如下:

!=athapply审批页面submitApproveAction 系统边界申请页面ath=applysubmitApplyAction流程公共组件templateNameITProcessDispatchfowardPbusinessTypeDispatchActionforrdPwa成功页面bupp!=aathsinessTyplye审批页面DispatchActionsubmitApproveAction

- 23 -

工作流平台概要说明书v1.1

3.1.1.1 流程起草控制逻辑

人员选择页面起草兼人有岗如果传送算菜单链接ProcessRoleFilterAction则的岗位如果起草人为单岗ProcessStartActionDispatchAction 用户点击起草菜单的连接的时候,先经过ProcessRoleFilterAction,进行起草权限的过滤,舍去不满足业务起草权限的岗位。

如果存在多个满足权限的起草岗位的话,则流转到一个起草选择页面上,供起草人选择一个起草岗位,然后再把选择的岗位提交给ProcessStartAction进行流程的起草操作。

如果只存在一个满足权限的岗位,则直接跳转到ProcessStartAction进行流程的起草。 3.1.1.2 流程待办/已办显示控制逻辑

点击待办/已办链接ProcessDispatchAction/CompletedDispatchActionDispatchAction 流程的呆板/已办显示比较简单,点击待办,已办后直接跳转到ProcessDispatchAction或者CompletedDispatchAction上,读取相应的数据后直接跳转到。

- 24 -

工作流平台概要说明书v1.1

3.1.1.3 流程审批提交控制逻辑

ProcessCommonSubmitAction态话对框提申交批/审请,打模开路径审批信息业务申请页面/业务审批页面选择审批路径,将结果写回主页面ApplyAction

ProcessCommonSubmitAction作为一个公共的组件,提供用户选择审批路径的方法。表单在提交审批的时候并不直接提交表单,而是生成一个模态对话框(审批路径选择页面),用户在选择好审批路径后,将选择的结果回写到申请或者审批页面,最后在审批路径选择页面上触发业务申请页面或者审批页面的表单提交操作。 3.1.2 流程引擎整合

这部分的框架主要的职责是将流程引擎的接口(主要是用于流程起草和流程审批的接口)和业务层的逻辑(主要是针对各个业务的ApplyAction和ApproveAction)整合起来,使得业务的开发人员可以不必过多得调用流程的相应接口,而把主要的精力集中在业务逻辑的实现上。

框架的抽象类的逻辑图如下:

表单提交审批路径选择页面 - 25 -

工作流平台概要说明书v1.1

BaseBusinessAction{abstract} ++++getParams ()doProcess ()doBusiness ()execute (): java.util.Map: String: ActionForward: ActionForwardBaseBusinessDispatchAction{abstract} BaseBusinessStdAction{abstract} +doProcess (): String+getParams (): java.util.Map+getParams (): intBaseBusinessApplyAction{abstract} +doProcess (): StringBaseBusinessApproveAction{abstract} +doProcess (): String

BaseBusinessAction作为初始抽象类,定义了三个抽象方法: 1) getParams:从页面中获得流程参数 2) doProcess:执行相应的流程接口 3) doBusiness:执行相应的业务操作

execute方法中定义了 3者的调用顺序以及

BaseBusinessDispatchAction作为业务DispatchAction的基类,定义了获取流程参数的方法以及一个空实现的流程执行方法。

BaseBusinessStdAction作为表单提交action的基类,定义了流程参数的方法,他的子类(BaseBusinessApplyAction,BaseBusinessApproveAction)分别对应流程起草提交操作和流程审批提交操作,分别实现了doProcess方法(BaseBusinessApplyAction调用IProcessService的startProcessWithDraft方法启动一个流程实例,BaseBusinessApproveAction调用ITaskService的endTask方法执行一次流程的迁移操作)。

流程的参数有2中类型:固定定义的参数和以var开头的应用自定义参数,所有的这些参数采用hidden的隐含域存放在页面上。

获得流程参数可以有多种方式,目前系统支持2种: 1) 直接通过HttpRequest对象的getParameter方法获得

2) 通过formBean获得,此时开发人员需要从2个类中继承:BaseBusinessForm,

BaseMultiBusinessForm(一个用于普通页面的formBean,一个用于multi-part传输方式的页面,例如有文件上传)。这2个formBean中都有一个记录流程参数的属性,页面js方法会将页面中的所有流程参数写入该属性中,开发人员可以通过这2个formBean的getParams方法从该属性中解析获得所有的参数。

应用的开发者只需要从BaseDispatchAction,BaseBusinessApplyAction,BaseBusinessApproveAction3个抽象类中继承来实现自身业务的DispatchAction,

- 26 -

工作流平台概要说明书v1.1

ApplyAction,ApproveAction3个action。

- 27 -

工作流平台概要说明书v1.1

3.2 流程公共应用组件

这里说明了每一个流程应用组件的功能,具体的逻辑实现可以参考GBSWeb项目。 3.2.1 流程起草时的人员过滤操作ProcessRoleFilterAction

在起草一个新的流程的时候,对起草人的起草身份进行过滤。过滤分为2部分,一部分过滤掉用户所有岗位信息中可以起草该业务的岗位信息;另外一部分过滤掉一些特殊岗位的人员,例如大区总经理/中心总监的管理岗位。

3.2.2 流程起草操作ProcessStartAction

为新起草的流程生成必备的流程参数,通过属性的形式存放在HttpRequest对象中,并流转到后续的业务中,供业务层使用。

这些参数包括: 起草用户对象drafter 流程类型processType 业务类型businessType

使用的流程模板名称和版本号templateName和version 业务流程模板businessTemplateId 流程IDprocessId

流程公文号businessCode 起草人工号drafterId

起草人所在部门draftDept

起草人担任的岗位draftPosition

流程标识forwardPath,用于说明流程的操作功能

3.2.3 流程待办显示(Dispatch)操作ProcessDispatchAction

从流程业务数据中读取流程待办信息,并从中获得流程审批的时候需要的相关参数,通过属性的形式存放在HttpRequest对象中,并流转到对应的业务中,供审批的时候使用。

这些参数包括:

流程的活动实例集合(已经进行过的审批路径)activityList

流程的每一个活动实例及其对应的审批人工号activitySequence,这个参数用于后续流程审批的时候,判断当前审批人是否之前出现过,借此用来判断是否需要新增已办任务。

任务ID tkiid

起草人对象drafter 起草人的工号drafterId 起草人的部门draftDept

- 28 -

工作流平台概要说明书v1.1

起草人担任的岗位draftPosition 流程实例的ID processId 流程的标题title

流程类型processType 业务类型businessType

业务模板ID businessTemplateId 流程模板名称templateName 流程版本version

流程标识forwardPath,用于说明流程操作功能 流程的当前审批步骤currentStep 流程当前步骤是否允许加签 流程当前步骤是否允许撤销声明 流程当前步骤是否允许重新申请

3.2.4 流程待办列表显示操作ProcessListAction 显示流程的所有类型,分页查找指定类型的待办任务。

3.2.5 流程已办显示(Dispatch)操作CompletedDispatchAction

从流程的业务数据中读取流程已办信息,将一些必要的信息通过属性的形式存放在HttpRequest对象中,并流转到对应的业务中,进行已办页面的显示操作。

这些参数包括:

流程实例ID processId

业务模板ID businessTemplateId 业务类型businessType

流程标识forwardPath,用于说明流程操作功能

流程的活动实例集合(已经进行过的审批路径)activityList 起草人对象drafter

3.2.6 流程已办列表显示操作CompletedAllListAction 显示流程的所有类型,分页查找指定类型的已办任务。

3.2.7 流程草稿列表显示操作ProcessDraftListAction 分页查找所有流程类型下的草稿任务项。

- 29 -

工作流平台概要说明书v1.1

3.2.8 流程提交显示选择路径操作ProcessCommonSubmitAction

计算流程当前步骤下的有效路径,并计算每一条有效路径下的审批人,用于审批路径选择页面的显示操作。

3.2.9 流程跟踪信息显示操作ProcessCommonTraceAction 获取流程的审批跟踪信息,使用xml的格式传输给页面显示。

3.2.10 流程待阅显示(Dispatch)操作ReaderDispatchAction

从流程业务数据中读取流程待阅信息,并流转到对应的业务,显示待阅页面。

3.2.11 流程已阅阅显示(Dispatch)操作ReaderDispatchAction

从流程业务数据中读取流程已阅信息,并流转到对应的业务,显示待阅页面。

- 30 -

因篇幅问题不能全部显示,请点此查看更多更全内容