工作流引擎说明书_第1页
工作流引擎说明书_第2页
工作流引擎说明书_第3页
工作流引擎说明书_第4页
工作流引擎说明书_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、工作流引擎设计说明书文档版本记录版本号编写日期更改内容1.02009-5-11初始稿目录1概述-5-1.1 文档目的-.5.1.2 术语及缩略语-.6-.1.3 参考资料-.5.3.0 工作流引擎的设计架构-.6.-.4.0 1工作流引擎的组件的总体架构.7.5.0 2流程引擎内核-a-. 流程定义-.8-. 流程模型-.8-.1 流程的起点和终点模型-.8.-.流程的激活模型-.9.-.流程的流转模型-.9.-.2.3数据访问层13.-.1) 数据模型定义23.二-1) 流程引擎中对象模型和数据模型的对应关系1.31) 4扩展接口15.

2、-.1.1.1 条件扩展接口1.5.-.1.1.2 人员查找扩展接口15.-1.1.3 事件操作扩展接口15.-1.1.4 流程插件16.-.2.5流程引擎对外接口(API) IPROCESSERVICE接口定义 ITASISERVICE接口定义1.8.3 流程应用支持层22-.3.2 应用框架22-.3.2.1 页面控制逻辑22-.流程起草控制逻辑24.流程待办/已办显示控制逻辑24流程审批提交控制逻辑 流程引擎整合25.3.3 流程公共应用组件28-3.3.1 流程起草时的人员过滤操作PROCESISOLFILTERACTION28-3.3.2

3、流程起草操作PROCESSTARTCTION.283.3.3 流程待办显示(DISPATCH操作PROCES0SPATCIA3TION283.3.4 流程待办列表显示操作PROCESSSTACTION293.3.5 流程已办显示(DISPATCH操作COMPLETEDSPATCHACTION293.3.6 流程已办列表显示操作COMPLETEtoLLISTACTION29-3.3.7 流程草稿列表显示操作PROCESDRAFTJSTACTION29-3.3.8 流程提交显示选择路径操作PROCESGDMMONIIBMrACTION.30-3.3.9 流程跟踪信息显示操作PROCE3COMMCT

4、RACACTION3.0-3.3.10 流程待阅显示(DISPATCH操作READEDSPATCHCTION30-3.3.11 流程已阅阅显示(DISPATCH操作READEBSPATCIACTION30-概述文档目的设计说明书阐述工作流引擎的设计架构以及对外的服务功能设计说明书要达到如下一些目标:阐述流程的定义阐述流程的对象模型阐述流程的调度执行阐述流程服务接口术语及缩略语工作流:工作流是业务流程的计算机化或自动化过程。通过工作流,文档、信息、任务在参与者之间根据一定规则传递,以实现整体的商务目标。工作流引擎:为工作流实例的执行提供运行服务环境的软件或引擎”。主要负责控制流程实例和活动实例的

5、状态转换,也就是流程的流转。工作流应用数据:这种数据是指那些由应用程序操作的数据。它们是针对应用程序的,是企业完成具体的业务功能所需要的数据。工作流引擎无法也不需要对它们进行访问。流程定义:预算定义的业务流转的逻辑。流程实例:业务的一次实际流转过程。活动(任务)定义:组成流程定义的基本节点,流程定义由若干个活动(任务)组成。活动(任务)实例:业务流转过程中产生的实际操作,是组成流程实例的基本元素。参与者:任务的执行者。流转:流程从一个状态变迁为另外一个状态的过程。参考资料流程配置说明.doc,流程引擎数据模型.pdm工作流引擎的设计架构本工作流引擎采用微内核的架构。微内核架构的工作流引擎,将一

6、些复杂的流程业务性问题,诸如组织人员任务分配,分支条件计算,事件操作,业务工作项的处理,业务数据保存,以及那些复杂的重新起草,退回,汇签等,从工作流引擎中剥离出来,流程引擎关心的内容只是如何让一个流程按照预先定义的秩序从一个节点(状态)变换到另外一个节点(状态),而将上述的这些功能通过扩展的接口进行实现,并整合到流程引擎的内核中。使用微内核的流程引擎架构,是为了降低流程引擎中各个组件的耦合度,使得流程引擎更加容易进行功能的扩展,并且整个系统运行更加稳定。如上图,左图中没有使用微内核,各种功能直接融合在工作流引擎中,在某一个功能需要扩展的时候需要重构工作流的代码,扩展性不强;右图采用微内核的架构

7、,将外围的功能通过扩展接口加入到引擎内核中,使得流程引擎内核更加稳定,也更容易扩展。1工作流引擎的组件的总体架构工作流引擎的总体架构图如下:业务(应用框架流程应用支持层系统边界.对外接口层(API)扩展接口定义流程引擎内核数据访问层卬一卜流程引擎数I据库访问一流程引擎主要分为4部分:流程引擎内核:主要定义流程引擎的内部数据结构和流程调度。流程扩展接口实现层:实现流程引擎的各个服务组件,包括任务分配,条件计算,事件处理等操作。流程数据访问层:主要实现流程引擎内部数据的访问逻辑,主要包括流程定义的数据,流程实例,活动实例,任务项等数据。流程API服务接口层:主要提供流程引擎对外的服务。2流程引擎内

8、核流程定义流程引擎采用了基于活动图的模型(典型的有向状态机)定义,流程全部由状态(state)组成,各个状态之间定义若干个流转路径(Transition)o流程的完整定义从唯一一个起始状态开始,经过若干个状态,结束于某一个终止状态。流程的定义由以下几个对象组成:ProcessTemplate:流程模板对象,包含了流程的基本信息以及所有的状态。State:流程状态对象,包含了状态的各个属性,所有的流转路径(Transition),进入该状态触发的事件,离开该状态触发的事件,任务分配定义。Transition:流程的流转路径对象,包括流转路径的各个属性,起始和结束状态,流转的条件计算和触发的事件。

9、Task:流程状态的子属性,主要定义任务的分配。流程引擎的对象建模可以参考流程引擎对象建模流程模型流程的起点和终点模型流程有且只有一个起始节点(startNode),可以根据不同的业务需求设置多个终态,不同的终态可以对应业务层面的不同的业务状态。流程的激活模型流程从起始节点开始,通过不停的激活操作,使得流程在不同的状态之间进行流转。系统目前支持的激活方式有:人工方式:通常说的人工任务,在流程产生下一步的活动的时候,同时为相应的人员分配一个需要处理的任务(例如填写一个审批意见等),这个就是我们通常说的人工任务。在人员没有完成相关任务的时候,流程不会产生任何变化,处于一个停滞状态;当

10、人员对自身的任务进行了相应操作后,就再次激活了流程,使得流程继续流转下去,产生新的状态。自动方式:表现形式为自动状态。当流程流转到自动状态的时候,流程并不产生任何人工任务,系统通过内部的自动计算,直接进行再次的流转操作,产生后续的状态。定时触发:通过为响应的状态添加定时器实现(目前没有试验过),它在人工任务的基础上,当配置的定时器触发的时候,系统强行结束当前的人工任务,并进行流程的流转。流程的流转模型1)串行流转最简单的流转模型,如图:2)自循环流转流程可以流转到自身的状态,以达到反复执行某一个任务的目的。例如预算不足的时候的保留待办。如图:这里可以根据实际情况添加判断条件,可以

11、在条件满足的前提下进行流程的流转。3)条件选择流转状态A有多条路径可供选择,每条路径都带有一定的条件判断,但是每次只能选择其中的一条路径进行流程的流转。4)自动流转和条件选择流转相似,不同的地方在于,条件的判断有系统自动完成,系统根据计算的结果选择唯一的一条迁移路径进行流程的流转。这个对应于流程的自动状态。5)并行流转一个状态结束以后,同时生成多个状态,也就是我们所说的汇签的分支流程(fork)。6)同步聚合流转和分支流转模型组合使用,在聚合节点等待所有分支的到来,在所有分支执行完成以后,才激活流程的后续状态,继续往下执行。聚合节点可以配置成自动状态,也可以配置成一个需要人工参与的普通任务。和

12、同步聚合不同的是在汇聚节点前面有一个规则引擎,当到达的分支节点满足规则以后就激活流程的后续状态,而不必等到所有的分支都到达汇聚节点,当后续的其他分支节点到达汇聚节点的时候,将不再触发相同的流程迁移步骤。流程从在某些条件满足的场景下,可以不按照预定义了流程流转路径,进行自动跳转。2.2.3流程引擎的逻辑实现流程引擎的启动流程引擎的初始化操作通过WorkflowContext类的init方法完成,该操作的触发由spring在初始化WorkflowContext的实例对象的时候进行触发。Init方法的具体逻辑如下:.加载业务模板信息,可以根据配置的loadBusinessTemplates属性进行选

13、择性的加载。.加载流程模板定义,可以根据配置的loadTemplate属性进行选择性的加载。.将读取的流程配置解析成流程对象模型。流程状态的迁移.获得流程的迁移路径。.触发起始状态的exit事件(Action)。.执行迁移路径上定义的所有事件触发接口(Action)。从执行的角度上讲,流程已经离开了起始状态。.触发目标状态的entry事件(Action),流程迁移结束。.为新的状态生成新的活动实例。如果目标状态是一个自动状态的话,继续循环执行上述的步骤,直到目标状态为非自动状态。3数据访问层数据模型定义数据访问层主要定义流程引擎的业务数据部分,流程引擎采用基于活动图的模型,业务上

14、以人员任务(待办)为中心。人员任务分为待办任务,已办任务,待阅任务,已阅任务4种。围绕人员任务,业务数据包括:1)业务流程模板信息(BizProcessTemplate):记录业务的抽象信息,包括功能,采用的流程模板。2)应用上下文信息(ProcessCategory):记录了每一个运行的流程对应部署的上下文3)流程实例信息(ProcessInstance):记录了系统起草的每一个流程信息,包括起草的业务,使用的流程模板,起草人,状态等信息。4)活动实例信息(ActivityInstance):流程每一次发生状态变幻产生的活动信息,记录了流程当前的状态,处理人信息等。5)审批意见信息(Comm

15、ent):审批人进行审批操作的时候为响应活动实例添加的意见。6)待办任务(TaskInstance):分配给每一个审批人的操作任务,每一个待办任务和相应的活动实例管理,一个活动实例可以为多个审批人同时分配各自的任务项。信息包括人物处理人,处理状态,处理时间,任务项所关联的活动实例和流程实例等。7)已办任务(CompleteTaskInstance):处理完成的待办任务,信息和待办任务相同,只是考虑到数据量的问题,单独创建一种数据结构。8)待阅任务(TaskMessage):分配给非流程审批人员的查看任务。9)已阅任务(CompleteTaskMessage):查看完成的待阅任务,和已办任务类型

16、。流程引擎的业务数据模型的详细信息可以参考流程引擎数据模型。流程引擎中对象模型和数据模型的对应关系流程引擎的对象模型主要是从如何定义流程,如何表示流程的角度上进行建模的,而数据模型是从人员任务的业务角度上进行建模的,但是两者的一些主要数据互相之间仍然有一定的联系。ProcessInstance动态实例一:ProcessTemplate')1-N1-NActivitylnstanc动态实例State1-N1-NTaskInstance动态实例Task数据模型中的ProcessInstance(流程实例)对应于对象模型中的ProcessTemplate(流程模板),两者的关系就好比Clas

17、sInstance和Class的关系。ActivityInstance和State,TaskInstance和Task也是相同的关系。2.4扩展接口扩展接口作为流程引擎内核的辅助接口,为流程引擎内核提供额外的功能。目前系统支持的扩展接口有:1)条件扩展接口(Condition):定义在Transition上,用于判断该Transition是否是一条有效的迁移路径。2)审批人员查找扩展接口(Assignment):定义在Task±,用于计算流程的每一个任务的审批人员。3)事件操作扩展接口(lAction):可以定义在State的entry和exit中,也可以定义在Transition上

18、,用于定义在特定环境下触发的操作。4)流程插件(Plugin):原则上讲这个接口并不能算在流程引擎的范畴内,它只是服务于业务层的一个扩展接口,主要作用还是为流程引擎做一些额外的辅助操作,例如预算查询条件扩展接口接口定义:PublicinterfaceConditionPublicBooleanparseCondition(ContextInstancectxIns,Mapargs)throwsWorkflowException;常用的实现类有:BeanShellCondition(根据beanshell判断的condition),BeanShellWithSkipCheckCondition(

19、BeanShellCondition基础上附加自动跳转的功能)等,具体的实现可以参考流程配置说明。人员查找扩展接口接口定义:PublicinterfaceIAssignmentPublicListqueryCandidates(ContextInstancectxIns,Mapargs)throwsWorkflowException;常用的实现类有:DepartmentManagerAssignment(部门负责人查找任务),CompanyManagerAssignment(公司总经理查找任务)等,具体的实现可以参考流程配置说明。事件操作扩展接口接口定义:PublicinterfaceIAct

20、ionObjectexecute(ContextInstancectxInst,Mapargs)throwsWorkflowException);常用的实现类有:BudgetAction(预算操作),PositionNotifyAction(待阅通知)等,具体的实现可以看草流程配置说明2.4.3流程插件接口定义:PublicinterfaceIProcessPluginVoid_plugin(Mapparams););流程的插件只能在特殊的几个地方加入到流程计算中(类似于linux内核的可插入的内核模块),目前系统中支持的插入点有2出:.ProcessCommonSubmitAction中计算

21、流程审批路径的时候。.流程起草或者审批的时候,调用流程引擎接口前。流程插件通过spring的配置文件定义,每一个插件都有一个独立的名字,名字由模板名称+版本+插入点标识符组成。流程插件目前的一个比较常用的操作就是为流程的参数进行一些复杂计算,例如外部接口的调用,复杂参数(超标标准)等计算逻辑。2.5流程引擎对外接口(API)流程引擎对外接口分为2部分:流程对外接口IProcessService以及任务对外接口ITaskService。IProcessService主要提供操纵流程实例的各个接口,ITaskService主要提供操纵任务实例的各个接口。IProcessService接口定义接口名

22、称接口功能输入参数返回值StartProcessWithDraft启动流程实例,创建初始活动实例以及对应的草稿任务bizTemplateId业务模板编码TaskInstance草稿任务项processParameter流程起草参数SuspendProcess挂起一个流程,暂时中止该流程的各项操作Piid流程实例ID无resumeProcess唤醒一个流程Piid流程实例ID无cancelProcess撤回一个激活状态的流程实例,重新将流程设定为草稿任务状态Piid流程实例ID无terminateProcess中止流程Piid流程实例IDReason中止原因queryProcessInstanc

23、e查询流程实例processParameter流程查询参数List满足条件的流程实例queryProcessInstance查询流程实例processParameter流程查询参数PagedBean分页流程实例查找结果beginTime查询起始时间endTime查询结束时间Page分页的页号pageSize分页的大小queryProcessInstance查询流程实例Piid流程实例ProcessIns流程实IDtance例queryActivitylnstances查询流程实例相关联的所有活动实例Piid流程实例IDList活动实例列表queryProcessAuthorizationLis

24、t查询用户关联的授权信息Uid用户的工号List授权信息列表addProcessAuthorization添加流程授权信息processAuthorization流程授权信息无queryProcessAuthorization查询流程授权信息Id授权标识符ProcessAuthorization授权信息removeProcessAuth删除流程授权信息processAuthorization流程授权信息无queryProcessAuth查询指定流程指定员工的授权信息origUser员工工号ProcessAuthorization授权信息businessTemplateId业务模板Idquery

25、BizTemplates查询所有的业务模板无Collection业务模板集合queryBizTemplate查询指定的业务模板ID业务模板IdBizProcessTemplate业务模板信息queryProcessCategory查询流程类型ID流程类型IDProcessCategory流程类型信息getState根据活动实例查找对应是流程State配置activityInstId活动实例IDState流程配置的状态getAvailablePaths根据当前活动实例获得可供选择的流程审批路径activityInstId活动实例IDPathResult后效的流程审批路径taskParameter

26、任务参数getDraftAvailablePaths获得起草状态对应的有效审批路径bizTemplateId业务模板IDPathResult后效的流程审批路径taskParameter任务参数getProcessInstanceTrace获得流程的跟踪信息Piid流程实例IDString用xml表示的流程跟踪信息ITaskService接口定义接口名称接口功能输入参数返回值modifyDraftTitle修改草稿任务的标题Tkiid任务ID无Title更新的标题endTask结束当前任务,执行流程的迁移Tkiid任务IDActivityInstance新生成的活动实例数组taskParamet

27、er任务参数claimTask声明一个任务Tkiid任务IDBoolean是否声明成功Uit声明人的工号cancelClaim取消一个任务的声明操作Tkiid任务IDBoolean是否取消声明成功Uid取消声明的用户工号queryTaskInstanceOwner查询任务实例的拥有者Tkiid任务IDString任务拥有者的工号getTask获得任务实例对应的任务配置信息Tkiid任务IDTask任务配置信息authorizationTask把某一个任务实例授权给另外一个人Tkiid任务ID无Owner任务拥后若的工号Uid授权的人员工号replaceTaskOwner将某人的待办替换给其他人

28、Owner任务的原始拥有者工号无Uid替换的员工工号assignAdvisedTask分发加签任务Tkiid待办任务IDInteger加签任务的IDUser加签的人员Title加签任务的标题Content加签的说明信息queryDraftByUID查找员工的草稿任务Uid查找的员工工号PagedBean草稿任务列表Page页号pageSize页大小queryTaskInstanceByUID查找员工的待办任务Uid查找的员工工号PagedBean待办任务列表Page页号pageSize页大小queryTaskInstanceByUIDAndCategory查找员工特定类型下的待办任务Uid查找

29、的员工工号PagedBean待办任务列表categoryId流程回Page页号pageSize页大小queryTaskInstan查找待办任务Tkiid任务IDTaskInsta待办任务cencenewTaskInstance生成活动实例对应的待办任务activityInst活动实例List生成的待办任务列表taskParameter任务参数newTaskMessage生成待阅项processId流程IDList生成的待阅任务列表Users产生待阅任务的人员readTaskMessage阅读待阅任务,生成已阅任务Tkiid待阅任务ID无User阅读人员countTaskInstanceByUI

30、DWithGrouP统计员工每一个流程类型下的待办任务数量Uid员工工号List隼-个流程类型下的待办任务数量queryCompletedMessagesByUID查找员工的已阅任务Uid员工工号PagedBean已阅任务列表Page页号pageSize页大小queryCompletedMessagesByUIDAndProcCategory查找员工特定流程类型下的已阅任务Uid员工工号PagedBean已阅任务列表processCategory流程类型Page页号pageSize页大小queryMessage查找待阅任务Id待阅任务IDTaskMessage待阅任务列表queryMessag

31、esByUID查询待阅任务Uid人员工号PagedBean待阅任务列表Page页号pageSize页大小queryMessagesByUIDAndProcCategory查询待阅任务Uid员工工号PagedBean待阅任务列表processCategory流程类型Page页号pageSize页大小countMessagesByUIDWithGroup根据流程类型统计待阅任务的数量Uid员工工号List各个流程类型下的待阅任务数量queryCompletedTaskInstancesByUID查询员工的已办任务Udi员工工号PagedBean已办任务列表Page页号pageSize页大小quer

32、yCompletedTaskIntancesByUIDAndProcCategory根据流程类型查询员工的已办任务Uid员工工号PagedBean已办任务列表processCategory流程类型Page页号pageSize页大小queryCompletedDraftByUID查询员工完成的草稿任务Uid员工工号PagedBean草稿已办任务列表Page页号pageSize页大小queryCompletedTaskInstancesByUIDAndProcessId查询一个流程的一个用户关联的所有已办任务processId流程实例PagedBean已办任务列表Uid员工工号3.流程应用支持层流

33、程应用支持层是建立在流程引擎的基础上,将流程引擎和业务层逻辑结合起来。流程应用支持层包括2部分的内容:应用框架,流程应用支持组件。应用框架,定义了业务层调用流程引擎接口API的方式,以及页面控制层的基本结构。流程公共应用支持组件,定义了一些为业务层服务的公共组件,包括流程的起草,草稿项的删除,待办/已办/待阅/已阅任务的显示,流程的取消,流程的重新申请,流程跟踪,审批人的选择,加签等。应用框架系统的应用框架,采用struts为基础的mvc结构,整个框架分为2部分:1)页面控制逻辑2)业务逻辑和流程引擎的整合页面控制逻辑页面控制逻辑分为流程公共应用组件(action)和业务组件(action)2

34、部分,流程公共应用组件定义了一些共有的操作,例如起草草稿,显示待办,已办等。业务组件定义了各个业务需要白3中控制逻辑:DispatchAction,ApplyAction,ApproveAction。DispatchAction作为业务组件控制逻辑的一个入口,通过不同的操作类型(HttpRequest对象中的forwardPath属性)显示不同的页面(申请页面和审批页面2种),同时该Action负责所有页面级的参数的计算和业务数据的读取和显示操作。ApplyAction为业务申请页面提交操作,完成业务数据的保存操作的同时还需要提交流程的起草操作。ApproveAction为业务的审批页面的提交

35、操作,完成业务数据的保持操作的同时还需要提交流程审批操作。流程公共应用组件和业务组件两部分通过使用的流程模板名称(templateName)进行关联。使用方法是:在公共组件的最后使用templateName作为struts的跳转路径,同时在业务层为各个templateName定义一个对应的globalforwardPath配置,配置的路径定义到对应业务的DispatchAction上。如下图:ApplyAction成功页面ApproveActon在控制逻辑中有一种特例:有写业务同时使用一套流程模板,换句话说各个业务对应的templateName是相同的,按照上述的方法就无法完成流程公共组件到各

36、个业务DispatchAction的流转,这个时候需要引入一个ITProcessDispatch的组件,该组件本质就是一个中转分发器,它根据HttpRequest对象中的业务类型(businessType)属性,进行二次流转,流转到不同业务的DispatchAction,以达到正确流转的目的。所以可以发现在使用相同的流程模板的业务中不能出现具有相同业务类型(businessType)的2个业务。带有ITProcessDispath的流转控制图如下:用户点击起草菜单的连接的时候,先经过ProcessRoleFilterAction,进行起草权限的过滤,舍去不满足业务起草权限的岗位。如果存在多个满

37、足权限的起草岗位的话,则流转到一个起草选择页面上,供起草人选择一个起草岗位,然后再把选择的岗位提交给ProcessStartAction进行流程的起草操作。如果只存在一个满足权限的岗位,则直接跳转到ProcessStartAction进行流程的起草。流程待办/已办显示控制逻辑ProcessDispatchAction流程的呆板/已办显示比较简单,点击待办,已办后直接跳转到或者CompletedDispatchAction上,读取相应的数据后直接跳转至U。流程审批提交控制逻辑ProcessCommonSubmitAction作为一个公共的组件,提供用户选择审批路径的方法。表单在提交审批的时候并不

38、直接提交表单,而是生成一个模态对话框(审批路径选择页面)用户在选择好审批路径后,将选择的结果回写到申请或者审批页面,最后在审批路径选择页面上触发业务申请页面或者审批页面的表单提交操作。3.1.2流程引擎整合这部分的框架主要的职责是将流程引擎的接口(主要是用于流程起草和流程审批的接口)和业务层的逻辑(主要是针对各个业务的ApplyAction和ApproveAction)整合起来,使得业务的开发人员可以不必过多得调用流程的相应接口,而把主要的精力集中在业务逻辑的实现上。框架的抽象类的逻辑图如下:BaseBusinessActionabstractgetParams():java.util.Map

39、doProcess():StringdoBusiness():ActionForwardexecute():ActionForwardBaseBusinessDispatchActionabstractBaseBusinessStdActionabstract+doProcess():String+getParams():java.util.Map+getParams():intBaseBusinessApplyActionabstractBaseBusinessApproveActionabstract+doProcess():String+doProcess():StringBaseBus

40、inessAction作为初始抽象类,定义了三个抽象方法:getParams:从页面中获得流程参数doProcess:执行相应的流程接口doBusiness:执行相应的业务操作execute方法中定义了3者的调用顺序以及BaseBusinessDispatchAction作为业务DispatchAction的基类,定义了获取流程参数的方法以及一个空实现的流程执行方法。BaseBusinessStdAction作为表单提交action的基类,定义了流程参数的方法,他的子类(BaseBusinessApplyAction,BaseBusinessApproveAction)分别对应流程起草提交操作

41、和流程审批提交操作,分别实现了doProcess方法(BaseBusinessApplyAction调用IProcessService的startProcessWithDraft方法启动一个流程实例,BaseBusinessApproveAction调用ITaskService的endTask方法执行一次流程的迁移操作)。流程的参数有2中类型:固定定义的参数和以var开头的应用自定义参数,所有的这些参数采用hidden的隐含域存放在页面上。获得流程参数可以有多种方式,目前系统支持2种:1)直接通过HttpRequest对象的getParameter方法获得2)通过formBean获得,此时开发

42、人员需要从2个类中继承:BaseBusinessForm,BaseMultiBusinessForm(一个用于普通页面的formBean,一个用于multi-part传输方式的页面,例如有文件上传)。这2个formBean中都有一个记录流程参数的属性,页面js方法会将页面中的所有流程参数写入该属性中,开发人员可以通过这2个formBean的getParams方法从该属性中解析获得所有的参数。应用的开发者只需要从BaseDispatchAction,BaseBusinessApplyAction,BaseBusinessApproveAction?个抽象类中继承来实现自身业务的DispatchA

43、ction,ApplyAction,ApproveAction3个actiono3.2流程公共应用组件这里说明了每一个流程应用组件的功能,具体的逻辑实现可以参考GBSWeb项目。流程起草时的人员过滤操作ProcessRoleFilterAction在起草一个新的流程的时候,对起草人的起草身份进行过滤。过滤分为2部分,一部分过滤掉用户所有岗位信息中可以起草该业务的岗位信息;另外一部分过滤掉一些特殊岗位的人员,例如大区总经理/中心总监的管理岗位。流程起草操作ProcessStartActionHttpRequest对象中,并为新起草的流程生成必备的流程参数,通过属性的形式存放在流转到后续的业务中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论