HY-UEP应用平台开发手册-流程系统分册.docx_第1页
HY-UEP应用平台开发手册-流程系统分册.docx_第2页
HY-UEP应用平台开发手册-流程系统分册.docx_第3页
HY-UEP应用平台开发手册-流程系统分册.docx_第4页
HY-UEP应用平台开发手册-流程系统分册.docx_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

内部资料 注意保密HY-UEP应用开发平台开发指南工作流开发分册烟台海颐软件股份有限公司2013年1月HY-UEP应用开发平台开发指南 工作流开发分册文 档 说 明文档名称HY-UEP应用开发平台开发指南 工作流开发分册文档编号 文档版本0.1文档密级 内部版本0.1.0.2文档类型初稿 征集意见稿 最终稿文档编制 编制时间2013-01-05文档审核 审核时间 文档审核 审核时间 所属项目 项目编号 文档备注 修 订 记 录修订人修订内容摘要产生版本修订日期审核人批准人批准时间 烟台海颐软件股份有限公司第 2 页 共 20 页目 录1 前言11.1 编写目的11.2 适用范围11.3 相关说明12 综述12.1 系统架构12.2 开发流程23 开发指南33.1 开发环境配置33.2 任务相关数据说明33.2.1 模板相关数据33.2.2 实例及任务列表43.2.3 任务执行情况53.2.4 待办任务63.3 启动流程实例63.4 流程传递指南73.4.1 正常传递73.4.2 选择传递83.4.3 派工提交83.4.4 回退93.4.5 任务抽回93.5 人员分配103.6 流程和办理进度的网页监控113.7 重要常量说明113.8 系统配置说明134 开发示例144.1 自由流的实现144.2 会签的实现154.3 并行子流程的实现154.4 自动活动的实现154.5 流程初始化参数的实现155 常见问题解答15HY-UEP应用开发平台开发指南 工作流开发分册1 前言1.1 编写目的工作流平台依托海颐企业级应用开发平台开发实现,为方便进行二次开发和流程调度,单独封装了一套进行流程调度的API接口。这些接口表现为一个JAVA类的方法,并通过参数和返回值进行流程调度和信息交互。通过这些API的调用,可以协助开发者实现任务的提交,激发工作流进行相应的调度等。使用HY-UEP平台的工作流模块进行二次开发,需要了解系统提供的这些API接口,需要掌握这些接口的含义、使用场合、参数的含义以及遵循一些约定等,本文档详细阐述了这些API编程细节,并对调度引擎中的重要常量、重要参数、常见示例等做了说明;从开发指南到开发示例,一步步指导开发人员完成工作流的二次开发工作。1.2 适用范围工作流模块是HY-UEP的选配模块,因此只有在UEP STUDIO集成开发环境中创建UEP项目时选择了支持工作流模块的特性,项目中才能进行工作流的相关开发工作。本文档面向的读者主要是使用HY-UEP平台的工作流模块进行二次开发的开发人员。1.3 相关说明在工作流调度接口中,使用最多的是各类任务的提交接口,本文档主要详细介绍了任务正常提交、选择传递、派工提交、任务激活、默认回退以及任务抽回等接口。本文档还介绍了几种常用业务需求的解决方案:自由流的实现、会签的实现、并行子流程的实现、自动活动的实现以及流程初始化参数的实现等。要求预期读者需要具备一定的工作流基础知识,并且在开发过程中可能会涉及到众多的平台知识,请参阅HY-UEP相关文档。2 综述2.1 系统架构HY-UEP的工作流平台作为海颐企业应用平台的一个系统模块,以业务服务的形式为企业应用提供服务。工作流平台是基于WfMC的工作流模型,结合多年的开发经验开发出的遵循xpdl模型标准,满足分布式、异构环境要求的工作流系统。体系结构如下图所示:工作流平台包括流程建模工具和工作流引擎两部分,流程建模工具用于流程定义,集成到了UEP Studio开发环境中。流程引擎负责流程的调度和运行,包括三部分:工作流接口、调度内核和引擎服务。工作流接口对外提供流程定义、监控和调度接口。调度内核负责流程调度,产生流程实例、活动实例和任务项并处理,处理过程中调用引擎服务的事件服务、时限服务、应用代理和日志服务。2.2 开发流程UEP项目如果使用流程模块,首先要在项目上增加流程模块的支持,有了流程模块的支持后,就可以绘制业务流程模板,进行基于流程的业务流程开发了。具体开发过程如下:1. 分析业务需求,找出需要绘制的业务流程模板。2. 归纳业务办理步骤,创建标准环节,为流程绘制做准备。3. 绘制流程模板,请参考流程建模的操作手册。校验成功后加载流程模板。4. 在业务应用中建立业务功能和流程模板的对应方式,并确定业务工作单和流程实例的关联方法,以便运行业务功能时能够启动对应模板的流程实例,并把流程实例关联到业务工作单上。5. 显示待办任务。6. 在业务办理界面中增加流程传递的功能。下面的章节对后面几个过程进行说明。3 开发指南3.1 开发环境配置工作流模块只能依托UEP项目进行开发,所以得首先安装集成开发环境UEP-SUTDIO,然后在新建UEP项目时要勾选“工作流模块”,也可以在已有的UEP项目中再增加“工作流模块”的支持。详细操作参考UEP Studio平台操作指南.doc。3.2 任务相关数据说明3.2.1 模板相关数据3.2.1.1 模板类别EP_WF_ TEMPLATE_CLASS:模板类别表,存储工作流系统中定义的模板分类信息。字段说明:列名代码类型说明模板类别号TEMPLATE_CLASS_NOnumber(8)上级模板类别号UP_CLASS_NOnumber(8)模板类别名TEMPLATE_CLASS_NAMEvarchar2(64)使用系统标志MODULE_IDvarchar2(32)排序序号ORDER_CODEvarchar2(32)备注REMARKvarchar2(255)3.2.1.2 模板库主信息EP_WF_ TEMPLATE:存储工作流系统中已经定义的模板信息。字段说明:列名代码说明类型模板号TEMPLATE_NO模板的编号,与版本号一起唯一标识一模板number(8)版本号VERSION_NO标识一模板的具体版本,与模板号一起唯一标识一模板varchar2(8)模板名TEMPLATE_NAME模板的名称varchar2(64)模板类别号TEMPLATE_CLASS_NO模板所属的模板类别号number(8)是否运行版RUN_FLAG是否是当前执行版,Y,Nvarchar2(1)模板对应程序窗口TAG一个流程模板对应的程序主窗口或主类varchar2(128)子流程标识AS_SUBFLOW标识一模板是否只能作为子流程使用,不能独立启动实例varchar2 (1)流程模板类型MODEL_TYPE流程模板类型,1:模型1;2:模型2varchar2(1)所属部门DEPARTMENTnumber(10)创建时间CREATE_TIMEdate创建者CREATORvarchar2(16)合格标志VALID_FLAGY:合格;N不合格varchar2(1)启用时间START_DATEdate停止时间END_DATEdate动态修改标志MODIFY_FLAGY:动态修改;N:没有动态修改varchar2(1)前身版本PRE_VERSION_NOvarchar2(8)排序序号ORDER_CODEvarchar2(32)描述信息DESCRIPTION_INFOvarchar2(255)模板日历CALENDAR_TYPE1:默认日历;2:7*24小时日历varchar2(1)3.2.2 实例及任务列表3.2.2.1 实例列表EP_WF_INSTANCE_LIST:存放工作流系统中的实例信息。字段说明:列名代码说明类型实例号INSTANCE_IDnumber(10)模板号TEMPLATE_NOnumber(8)版本号VERSION_NOvarchar2(8)调度状态STATE0 挂起 1 运行 2 正常结束 3 异常结束varchar2(1)实例开始时间START_TIME启动时间date实例结束时间END_TIME结束时间date实例启动人START_OPERATORvarchar2(32)所属部门DEPARTMENT实例的默认部门number(10)锁定标志LOCK_FLAGvarchar2(1)顶级部门TOP_DEPARTMENTnumber(10)备注REMARKvarchar2(255)3.2.2.2 当前任务清单EP_WF_TASK_LIST:存放实例对应的当前任务列表信息。字段说明:列名代码说明类型实例号INSTANCE_ID当前任务的实例号,与任务号一起标识一当前任务number(10)活动实例ACTIVITY_INSTANCE_NO活动实例号number(4)任务号TASK_ID当前任务的任务号,与实例号一起标识一当前任务number(4)活动号ACTIVITY_NO当前任务的环节号number(4)标准环节号STD_TACHE_NO当前任务对应的标准环节number(10)活动名称ACTIVITY_NAME活动名称Varchar2(128)处理实体号ENTI_ID当前活动的处理实体varchar2(255)处理实体类型ENTI_TYPE当前活动处理实体的类型,1:角色;2:人员;3:软模块;4:子流程varchar2(8)版本号VERSION_NO实例使用模板的版本号char(8)模板号TEMPLATE_NO实例使用模板的模板号number(8)任务状态TASK_STATE0 等待前驱计数完成; 7 待领取;8待处理;9正在处理 ;A 已提交 ;char(1)日历类型CALENDAR_TYPE1:默认日历2:724小时3: 组织日历4: 流程日历varchar(1)计时要求标志TIME_FLAG任务是否要求计时varchar2 (1)任务传来人员LAST_COMMITOR当存在并行流程时可以有多个varchar2(255)超时标志OVERTIME_FLAG任务是否超时(Y/N)varchar2 (1)超时大小OVER_NUM超时的时间(单位分钟)number(18)段时限超时标志SEG_OVERTIME_FLAGvarchar2 (1)任务到达时间TASK_REACH_TIMEdate实例启动人START_OPERATORvarchar2(32)角色ROLE_CODEvarchar2(16)父活动实例号PRT_ACTINS_NO为子流程时,保存父活动实例号number(4)调度状态STATE是运行,挂起,结束,异常结束 分别是 1, 0 ,2,3varchar2 (1)任务应完成时间TASK_LIMIT_TIME设置时限时的到期时间date所属部门DEPARTMENTNumber(10)层次标志LEVEL_DESCvarchar2(64)任务开始处理时间START_TREATE_TIMEDate传来方式COMMIT_TYPE正常传递 1,选择传递 2 派工提交 3 默认回退 4 任务抽回 5varchar2(1)3.2.3 任务执行情况3.2.3.1 任务执行情况EP_WF_ TASK_EXEC_INFO:存储实例的详细办理进度信息。字段说明:列名代码说明类型实例号INSTANCE_IDnumber(10)任务号TASK_IDnumber(4)活动实例号ACTIVITY_INSTANCE_NO活动号ACTIVITY_NOnumber(4)标准环节号STD_TACHE_NOnumber(10)活动名称ACTIVITY_NAMEVarchar2(128)日历类型CALENDAR_TYPE1:默认日历2:724小时3: 组织日历4: 流程日历Varchar2(1)任务状态TASK_STATE0 等待前驱计数完成; 7 待领取;8待处理;9正在处理 ;A 已提交 ;varchar2 (1)模板号TEMPLATE_NOnumber(8)版本号VERSION_NOvarchar2 (8)计时要求标志TIME_FLAGvarchar2 (1)超时标志OVERTIME_FLAGvarchar2 (1)超时大小OVER_NUM超时数以秒记number(18)段时限超时标志SEG_OVERTIME_FLAGvarchar2(1)任务传来人员LAST_COMMITOR当存在并行流程时可以有多个varchar2(255)任务到达时间TASK_REACH_TIMEdate任务提交时间TASK_COMMIT_TIMEdate任务提交人TASK_COMMITOR一个环节的任务提交人只能有一个,但是执行实体可以有多个varchar2(255)调度状态STATE是运行,挂起,结束,异常结束 分别是 1, 0 ,2,3varchar2 (1)任务应完成时间TASK_LIMIT_TIMEdate父活动实例号PRT_ACTINC_NONumber(4)所属部门DEPARTMENTNumber(10)层次标志LEVEL_DESCvarchar2(64)任务开始处理时间START_TREATE_TIMEDate传来方式COMMIT_TYPE正常传递 1,选择传递 2 派工提交 3 默认回退 4 任务抽回 5varchar2(1)3.2.4 待办任务流程引擎根据活动的处理实体设置进行人员分配,分配结果体现在EP_WF_TASK_LIST表里,和待办任务有关的字段见下表:字段名称说明ENTI_ID处理人员任务的处理人帐号ROLE_CODE角色代码任务的处理角色DEPARTMENT部门代码任务的处理部门TASK_STATE任务状态0 等待前驱计数完成; 7 待领取;8待处理;9正在处理 ;A 已提交 ;检索待办任务时要综合考虑上述表中字段的值,由于部门是树型的,涉及到上下级等多个层次,一般不会根据部门过滤待办任务。如果不考虑部门,每个操作员能看到的任务为下面几种情况的并集: 任务状态是待处理,操作员的角色符合任务处理角色的值 任务状态是待处理和正在处理,操作员帐号符合处理人员的值3.3 启动流程实例流程模板定义完毕后,需要加载模板使模板生效,成为当前运行版,只有当前运行版的模板版本才能启动流程实例。调用createProcessInstance接口启动流程实例,接口参数说明如下:参数名称类型说明templateNolong要启动实例的模板的模板号versionNoString要启动实例的模板的版本号userIdlong流程实例启动人autoCommitboolean流程的第一个人工活动的处理人的处理方式,false是流程启动人,true表示根据活动的处理实体设置由流程引擎分配的,不一定是实例启动人rightboolean是否检查流程启动人具有该模板的启动权限orgIdlong指明流程实例的实例部门,-1表示启动人所在的部门formalParamsMap流程的形参值,分输入和输出参数,输入参数需要调用者提供参数值;输出参数是流程引擎设置值,流程调度过程中调用getProcessFormalParamValue得到。调用getProcessFormalParams接口得到流程的形参3.4 流程传递指南任务办理完毕提交时,平台流程模块提供了几种传递方式,以满足不同的传递要求,下面详细说明。3.4.1 正常传递最基本的使用方法,调用normalCommitTask接口实现,引擎按照模板中定义的格式将任务向下传递。这里有几点需要注意:1) 如果当前活动是多任务项,多任务项是指同一个活动实例产生了多个任务,这些任务可以并行执行,也可以串行执行;如果是并行执行,当前任务正常提交后,要查看当前活动实例下有没有其他的未完成的任务,直到所有的任务都完成了,流程才能流转到下一个活动节点;如果是串行执行,当前任务正常提交后,才会根据需要产生下一个任务,直到所有的任务都产生并完成,流程才能流转到下一个活动节点;2) 如果流程传递到的活动是自动活动,自动活动是指不需要人工参与的活动,所以不会产生任务项,自动活动在执行完相应的代码或服务后,流程会自动继续向下流转;3.4.2 选择传递接口中提供了两种选择传递的方法,一种是同一流程内的选择传递,另一种是跨流程的选择传递。实现选择传递的过程如下:1) 首先通过调用getOptionalTransions方法获得可以选择传递的活动列表List,这个列表中包含了通过跳转边或是自由流所能到达的活动;NextActivityInfo中详细记录了可到达的活动的模板号 、版本号、活动号、跳转途径以及跳转控制策略等信息,应用程序可以利用它构造出可选择传递的活动列表,供客户选择。2) 选择好要跳转的活动后 ,如果是同一流程内跳转,可以调用简单格式的selectCommitTask即可,如果是跨流程跳转,则需要调用复杂格式的selectCommitTask方法,其中最后一个参数nextActivityInfo就可以直接从NextActivityInfo中得到。当然,为了通用,统一使用复杂格式的选择传递方法即可。3.4.3 派工提交派工提交一般用于指定下一个活动执行人员的情况,如班长派工,计量外勤派工等,引擎并没有限定只有流程中的派工活动才能调用派工接口,任一个活动都可以使用派工提交接口。派工提交可用于在单一节点产生不固定数目的任务,在派工的参数中指定任务处理人或处理部门,一个节点指定了几个处理人或处理部门就产生几个任务,这些任务以多任务项的形式存在。还可对子流程派工实现并行子流程,对子流程派工只能派工到部门,并且这个部门就作为该子流程的实例部门,并且各子流程内的任务是相互不影响的。进行派工提交的控制步骤:1) 首先调用getDispatchActivities接口得到当前活动可达的活动列表List,这些活动列表中包含当前活动能到达的人工活动、子流程活动以及子流程的首活动。可以根据实际情况,构造一个或多个派工提交对象DispatchInfo,在DispatchInfo中可以指定派工的部门或人员,指定几个部门或几个人员就产生几个任务,这些任务以多任务项的形式存在,并且可以通过DispatchInfo指定这些任务是并行执行还是串行执行。其中需要注意的是对子流程派工只能按照部门派工。2) 调用dispatchCommitTask接口实现派工提交。需要注意几种派工失效的情形:1) 当派工后继环节跨越分支环节时,由于传递时可能存在条件边不满足而造成派工失效。2) 当前活动是多任务项,如果不是最后一个任务进行派工,由于该活动还没有结束而造成派工失效3.4.4 回退回退是指活动的默认回退,按照模板定义的环节顺序回退,不一定是回退到传来的活动。回退调用的接口是returnTask,接口的详细说明请参照API文档。关于回退的一些约定:1) 以流程定义的顺序回退,而不是回退到传来活动2) 当某个活动是选择传递而来,前驱活动没有走过,这种情况下,回退到跳转来的活动。3) 如果当前活动是个并行多任务项,一个任务还都没有处理,则可以回退,否则不能回退;如果当前活动是个串行多任务项,会回退到当前任务的前一个任务,如果是第一个任务,就回退到前一个活动。4) 如果回退到的活动是个并行多任务项,则会退后产生所有的任务,如果回退到的活动是个串行多任务项,则回退后产生串行多任务项的最后一个任务。5) 当回退到子流程时,调度到子流程执行过的最后一个人工活动。6) 对于模型1来说,如果回退中包含分支活动,则根据配置决定是否需要杀死相关任务。3.4.5 任务抽回当某个任务传递后的所有后继环节没有处理时,可以进行抽回,抽单前,应该调用canTaskRedraw 接口判断某个任务是否可以抽回,然后调用taskRedraw 接口实现任务的抽回。任务抽回有以下约定:1) 如果要抽回的活动是个多任务项,则只要有一个任务完成了,就不能抽回。2) 如果当前活动是个并行多任务项,且后续活动任务还没有开始,则只抽回当前一个任务;如果当前活动是个串行多任务项,则只抽回当前任务。3.5 人员分配现有的人员分配支持活动分配到人员或岗位,即在流程中可以指定哪些活动分到人,哪些活动分到角色。在实际工作中,人员,部门,角色这些东西一般是相互关联的,引擎的调度规则可以大致作如下的描述:1) 如果重复执行保持不变,则首先查看该活动是否已经执行过,如果执行过,找出ENTI_ID直接置入,ENTI_TYPE则是指定到人,DEPARTMENT为人员所在部门;如果没有执行过,则按照活动的设置进行人员分配;2) 若活动直接指定到部门(直接指定或动态部门),不分配到人,则按照流程的设置, 直接将部门写入DEPARTMENT,ENTI_TYPE为按照部门分配,处理人员为空;3) 若活动指定到角色(直接指定或动态角色),不分配到人,则按照流程中的设置,将角色代码写入任务表中的ROLE_CODE字段,处理人员为空,ENTI_TYPE 为按照角色分配,处理部门则根据调度时的实际情况指定:首先若在流程中指定部门,则直接置入;若流程中指定动态部门,则首先计算部门表达式,然后置入;如果属于派工指定部门提交,则将派工的部门置入;如果最后部门仍然是-1,则将实例的默认部门置入。4) 若活动指定到个人(直接指定或动态指定),人员分配后ENTI_ID为指定的处理人员,ENTI_TYPE 为执行类型,DEPARTMENT为人员所在的部门5) 若活动的处理实体是相关活动(流程内部相关或跨流程相关),如果相关活动已经执行过,则直接得到处理人员置入ENTI_ID,由于已经指定到人,ENTI_TYPE 为指定到人,DEPARTMENT为人员所在的部门;如果相关活动没有执行,则按照相关活动的设置进行重新分配;6) 分配到人的策略:若是全局分配,则检查有没有默认部门,若有,从默认部门开始找起,搜索顺序为:默认部门,默认部门下面的部门,逐次向上搜索;若没有指定默认部门,则只按照角色在全局分配;若派工指定部门或模板中指定部门,则只检索指定部门,若没有则将处理人员设为-1;若按照传来部门优先,则只搜索传来人员所在部门,若没有,则将处理人员置为-1!。注意:在任务列表中,ENTI_ID 存放的是处理人员的账号id,LAST_COMMITOR中存放的是传来人员的姓名;办理进度中LAST_COMMITOR中存放的是传来人员的姓名,TASK_COMMITOR中存放的是编号3.6 流程和办理进度的网页监控我们主要借助SVG技术,实现工作流以及办理进度在网页中的图形展示。具体步骤如下所示:1) 在需要显示图形的地方调用标签workflow:flowsvg2) 调用js函数showSvg进行图表展示,showSvg方法有四个参数templateNo模板号、versionNo版本号、instanceId实例号、prtActivityInstanceNo父活动实例号flowSvg.showSvg(templateNo, versionNo, instanceId, prtActivityInstanceNo);其中flowSvg是标签workflow:flowsvg的id。3) 调用说明:只需要显示流程时,对应的实例号指定为-1;如果要显示子流程的流程图,要指定prtActivityInstanceNo;在发布的目录中,需要加入一个icons的子目录,用于存放svg中使用的各种图标.3.7 重要常量说明分类名称、代码值说明流程类型MODEL_TYPE字符型1模型12模型2活动类型 ACTIVITY_TYPE字符型1开始活动2人工活动3自动活动4子流程活动5结束活动6分支活动7汇聚活动8路由活动标准环节号 STD_TACHE_NO数字型-1开始活动-5结束活动-3自动活动-4子流程活动-6分支活动-7汇聚活动-8路由活动内置活动号 ACTIVITY_NO数字型1开始活动2结束活动活动启动策略START_POLICY字符型0待激活1直接运行2动态指定跳转回退控制策略 JUMP_POLICY 字符型K杀死相关任务R保留相关任务处理实体类型 ENTI_TYPE字符型1指定角色+部门2指定人员3相关活动4子流程5自动活动6动态角色7动态指定人员边的类型 TRANSITION_TYPE字符型1正常边2条件边3跳转边4默认边5自动边6自由流边任务调度状态 STATE字符型1运行0挂起2结束3异常结束任务状态 TASK_STATE字符型0等待前驱库所计算完毕7待领取8待处理9正在处理A完成事件类型EVENT_TYPE 字符型0流程实例启动前1流程实例启动后2活动实例启动前3活动实例启动后4活动实例完成前5活动实例完成后6任务项执行前7任务项执行后8任务项完成前9任务项完成后3.8 系统配置说明为实现通用和灵活性,调度引擎中设置了许多参数和开关量,这些重要参数可能影响到调度细节,在现场中根据各自的需要进行设置或删除这些参数。参数名称参数说明值说明CAL_VAR_AT_GET_DISPTACHETACHE获取派工后继环节时是否进行变量计算Y:计算;N:不计算KILLED_SUBFLOW_DEAL_METHOD子流程杀死后父任务的处理方式K:杀死,T:向下传递DELETED_TASK_STATUS因跳转,回退原因删除的任务状态A 完成GENERATE_SAME_TASK是否重复产生处理就绪状态的任务Y:产生,N:不产生MULTI_GEN_BRANCH_TASK分支上有活动任务时,

温馨提示

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

评论

0/150

提交评论