《面向工作流的技术规范.doc》由会员分享,可在线阅读,更多相关《面向工作流的技术规范.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 面向工作流的技术规范面向工作流的技术规范文件编号:版本号:目目 录录一、一、 规范简介规范简介11 1 目的目的12 范围范围13 3 参考文档参考文档14 定义及缩略语定义及缩略语1二、二、 工作流外部应用及接口定义规范(强制性规范)工作流外部应用及接口定义规范(强制性规范)21 简介简介2 1.1 目的2 1.2 适用范围22 规范规范2三、三、 活动定义规范活动定义规范31 简介简介3 1.1 目的3 1.2 适用范围32 规范规范3四、四、 XPDL 定义规范定义规范31 简介简介3 1.1 目的3 1.2 适用范围32 规范规范3五、五、 ADMIN 与工作流系统的调用流程与工作流
2、系统的调用流程41 先调用工作流接口,由工作流系统调用外部应用(推荐)先调用工作流接口,由工作流系统调用外部应用(推荐)4 1.1 流程图4 1.2 流程描述4六、六、 示例示例51 获取软件需求获取软件需求52 业务分析业务分析63 提取活动提取活动74 设计活动设计活动8 4.1 相关类设计9 4.2 调用顺序图105 编码实现编码实现12七、七、 最最佳佳实践实践12 1.1 抽取活动的最佳实践12 1.2 设计 XPDL 的最佳实践12 1.3 外部应用编码的最佳实践121/19 一、一、规范简介规范简介1 1 目的目的本文的目的是为工作流的应用提供强制的规定,并提供相应的建议。2 范
3、围范围本文只限于工作流应用的规定与建议。3 3 参考文档参考文档WFMC Workflow Process Definition InterfaceWFMC 2002-10 WFMC The Workflow Reference ModelDavid Hollingsworth 1995 工作流系统设计方案书 陈建华 2004-2 高层设计_工作流系统陈建华 2004-2-Web 服务世界中的业务流程和工作流 Margie Virdell 20014 定义及缩略语定义及缩略语工作流工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、 信息或者任务能够在不同的执行者之间传
4、递和执行。 流程定义流程定义 一个图形流程定义或流程图,代表工作流的流程逻辑元素以及各元素之间的 关系。 流程实例流程实例 一个流程实例,通常称为工作,是一个流程定义的运行实例。 工作流管理系统工作流管理系统 一个软件应用程序,它存储流程定义并通过其工作流引擎组件来根据 这些流程定义运行工作。工作流引擎是运行时执行模块。 流程定义工具流程定义工具 一个用来创建和更改流程定义的软件工具。该工具可以是一个业务流程 管理软件的组件、一个独立的应用程序或者一个工作流管理系统的组件。流程定义工具 提供了重用已存储工作流元素甚至所有子流程的能力,这使工作流应用程序开发者生产 力更高。 参与者参与者 以下类
5、型之一:资源集、特定资源、组织单元、角色(一个人在组织内部的作 用) 、人或系统(自动代理) 。 活动活动 组成流程定义中的一个逻辑步骤的任务。可以是自动的或人工的。自动指在流程 操作过程中定义脚本和触发器的能力。流程定义中的特定活动可以作为无人参与的任务 来运行,自动化可以在手工或人力驱动的任务中执行业务规则。常见的一种自动活动就 是截止期限管理,如果某个工作项在预定的截止期限之前未能完成,该管理可以自动发 送一条提醒消息或触发一个延期程序。 自动任务自动任务 自动任务指活动所完成的任务中,那些事先定义为由引擎自动调用外部应用 而完成的任务。 人工任务人工任务 人工任务指活动所完成的任务中,
6、那些必须由人来触发执行或必须产生待办2/19 事项的任务。 活动所有者活动所有者 活动所有者是有权宣布一个活动结束,然后推进工作到流程中的下一个活 动的参与者。 工作所有者工作所有者 工作所有者是有权整体控制流程实例执行过程的参与者。 工作项工作项 代表流程实例中活动的参与者将要执行的工作。二、二、工作流提供的接口工作流提供的接口1 简介简介1.1 目的目的工作流系统为工作流的客户端(业务系统)提供了调用接口,在这里进行详细描述1.2 适用范围适用范围仅用于工作流客户端调用。2 规范规范接口名参数返回值说明createWfProcessInstanceString businessTypeId
7、:业务过程定义 ID, String wfProcessId:业务过程子流程 ID, Map params:工作流控制对象,Object bizData:业务数据对象Map创建一个新的流程实例, 输入参数 Map params 表 示输入的对象集合,返 回值 Map 包括了一个 ID 的值,表示创建业务的 主键,该接口内部实现 为同步调用。getAllWaitingManualWorkItemsString businessTypeId: 业务过程定义 IDString wfProcessId:业务过程子流程 ID,String activityId: 活动ID,String userId:
8、用户 IDint first 起始行int size: 结果集的大小(起始行+结果集的大小就是结 束行)OderUtil order:用来描述排序信息的类(包含一个String及 boolean分别Page:一个分页对象,包含一个含有多个 WorkItem对象的 list,以及符合条件的WorkItem 的总数根据业务过程定义 ID 和 业务过程子流程 ID、活 动 ID 以及用户 ID 得到 相应的全部手工工作项3/19 用来描述 order 的字段及是否是按 desc 排序)GetAllWaitingManualWorkItems1String businessTypeId: 业务过程定义
9、 IDString wfProcessId:业务过程子流程 ID,String activityId: 活动ID, String bussinessInstanceId:业务实例 idString userId: 用户 IDint first 起始行int size: 结果集的大小(起始行+结果集的大小就是结 束行)OderUtil order:用来描述排序信息的类(包含一个String及 boolean分别用来描述 order 的字段及是否是按 desc 排序)Page:一个分页对象,包含一个含有多个 WorkItem对象的 list,以及符合条件的WorkItem 的总数根据业务过程定义
10、ID 和 业务过程子流程 ID、活 动 ID、业务实例ID 以及用户 ID 得到相应的 全部手工工作项GetAllWaitingAutoWorkItemsString businessTypeId:业务过程定义 ID,String wfProcessId:业务过程子流程 ID,String activityId:活动 ID, String bussinessInstanceIds:业务主键集合int first 起始行int size: 结果集的大小(起始行+结果集的大小就是结 束行)OderUtil order:用来描述排序信息的类(包含一个String及 boolean分别用来描述 ord
11、er 的字段及是否是按 desc 排序)Page:一个分页对象,包含一个含有多个 WorkItem对象的 list,以及符合条件的WorkItem 的总数根据业务过程定义 ID、业务过程子流程 ID、活动 ID 以及业务主键得到相 应的全部未完成的自动 工作项finishWorkItemint workItemId:工作项 ID , Map params :参数集合,String userId:用户 IDvoid完成工作项,同时设置 工作项的属性值 (params)getNextActivitiesString businessTypeId: 业务过程 IDString activityId:
12、活动 IDString wfProcessId:业务过程子List 包含若干个 Activity该方法实现查找指定 activityId 的后续的 Activities 的定义, Activity 对象包括4/19 流程 IDActivityId 和 ActivityNamegetAllWillDoInfosOfUserString userId: 用户 IDList:工作项队列,包含多个 WillDoneInfo 对象根据角色 ID 集得到相应 的全部工作项信息getNextActivitiesString businessTypeId: 业务过程 IDString activityId:活
13、动 IDString wfProcessId:业务过程子流程 IDList 包含若干个 Activity该方法实现查找指定 activityId 的后续的 Activities 的定义, Activity 对象包括 ActivityId 和 ActivityNamegetAllWillDoInfosOfUserString userId: 用户 IDList:工作项队列,包含多个 WillDoneInfo 对象根据角色 ID 集得到相应 的全部工作项信息batchFinishWorkItemsString businessTypeId:业务过程定义 ID, String wfProcessId
14、:业务过程子流程 ID, String activitySetId: 活动集 ID, Map controlparams: 多个业务实例共享的工作流控制信息,如审批通过或拒绝, Map bizObjects:键名为业务主键,键值为业务大对象,String userId: 用户 ID(controlmap 中业务大对象的键名为: BizObject)Map 批量完成多个工作项. 注 意: 前一条业务的执行结 果应不影响后一条业务 的执行结果,每一条业务 的执行应该是原子的. 另 外返回的 Map 中,键名为 业务主键,键值为 FinishWorkItemResult对象其中应包含三类信 息: 1
15、. 是否执行成功(boolean 型) 2. 提示语(String 型) 3. 错误堆栈(Exception 型,执行成功时为 null)工作流控制类可以根据实际情况选择是否全部实现这些接口,为了减少移植的工作量,建议 实现其中一些必要的接口。 其中工作项 WorkItem 包含如下属性并包括如下属性的获取方法: Id:WorkItem 唯一标示; ApplicationId:对应的应用程序 ID; ParticiPantId:参与者 ID,可以是 roleID,也可以是 staffID; BusinessTypeId:业务类型 ID ProcessId:业务过程 ID5/19 Process
16、InstanceId:业务过程实例 ID; ActivityId:活动 ID; ActivityInstanceId;活动实例 ID; Status:状态 Params:Map 对应在 xpdl 中的 relevent data ExtendedAttributes:Map ,对应在 xpdl 中的当前人工工作项的 extended attributes 的名值对WorkItemInfo 对象包括如下信息: itemCount int:待办事项数量 activityId String:活动 IDBusinessTypeId String:业务类型 IDString wfProcessId:业务
17、过程子流程 ID三、三、工作流外部应用及接口定义规范(强制性规范)工作流外部应用及接口定义规范(强制性规范)1 简介简介工作流外部接口一般指工作流系统调用的业务系统的程序接口。这些接口必须遵循相应 的规范,工作流系统才能运行正常。1.1 目的目的为了更好的应用工作流外部接口,特添加此强制性规范。1.2 适用范围适用范围仅工作流所调用的外部应用。2 规范规范1、业务系统的应用程序接口参数必须为一个 java.util.Map 的输入参数,这个 Map 中包含了所有的全局变量和在 XPDL 定义的输入参数; 2、如果在 XPDL 定义了该接口有输出参数,此应用程序也必须定义相应的 java.uti
18、l.Map 的返回值,该 Map 中必须包含在 XPDL 中定义的输出参数为主键的 名值对; 3、应用程序以异常作为报错机制,而不采用错误码的方式报错。 例如,通常的外部应用接口为: public void addApplySp(Map map) throws Exception 该 map 中包含了所有的全局变量和在 XPDL 中定义的输入参数。 如果在 XPDL 定义了该接口有输出参数,其接口一般为: public Map addApplySp(Map map) throws Exception6/19 四、四、活动定义规范活动定义规范1 简介简介1.1 目的目的为了制定在工作流系统中能够
19、比较顺畅的运行的活动,特制定该项规范。1.2 适用范围适用范围此项规范仅限于活动定义的规则。2 规范规范1、 若干活动之间要保证事务,必须使这些活动放在一个 Block activity(强制规范) ; 2、 在 Block activity 中最多只能有一个人工工作项,如果有人工工作项,则该工作项必 须处于第一个活动(强制规范) ; 3、 第一个活动的名称必须为 STARTACTIVITY(强制规范) ; 4、 如果有多个活动指向 end 元素,建议用一个 Route activity 作为中间活动(建议) ; 5、 活动中的扩展属性的参数名称头两位必须为_两个下划线开头。 6、 不要创建重
20、名的活动名称。五、五、XPDL 定义规范定义规范1 简介简介1.1 目的目的为了定义出的 XPDL 更加顺畅的运行,特制定该项规范。1.2 适用范围适用范围仅适用于工作流系统的 XPDL 定义。2 规范规范1、 应用程序(application)定义只能在 package 一级进行定义(强制规范) ; 2、 relevant data(相关数据)定义只能在 process 一级进行定义(强制规范) ;7/19 3、 如果要用 relevant data 中的某个变量作为外部应用的输入参数,必须还在 formal parameters 进行定义; 4、 participants(参与者)定义必须
21、在 package 一级进行定义,并且 type 必须为 role(强 制规范) ; 5、 不要创建重名的 XPDL 名、过程定义名、活动名,建议在名称后面加上版本号以示 区别。六、六、Admin 与工作流系统的调用流程与工作流系统的调用流程1 先调用工作流接口,由工作流系统调用外部应用(推荐)先调用工作流接口,由工作流系统调用外部应用(推荐)1.1 流程图流程图updateSpBus inessStatus: 数据部管理 员cs_csmms_basicinf o_audit_src.dommsAdminBasicInf oAuditPass.do工作流系统mmsApplySpA udit 1
22、: 进入SP基本信息页面2: 审批通过/拒绝3: 调用工作流接口finishWorkItem4: 调用外部应用9: 解析结果集10: 展示结果6: 更新SP状态5: 返回执行结果7: 返回执行结果8: 返回执行结果8/19 1.2 流程描述流程描述第一步:SP 管理员在审批的 SP 列表中选择一个 SP,进入 SP 审批界面; 第二步:SP 管理员选择审批通过/拒绝后提交,进入 Admin 控制层的 action; 第三步:由 Admin 控制层的 action 调用工作流系统的接口:finishWorkItem,用来完成该工作项;第四步:由工作流系统根据相应配置调用外部应用,即审批通过/拒绝
23、的外部应用;第五步:由外部应用返回业务主键或者异常信息给工作流系统;第六步:由工作流系统返回结果信息给 Admin 的控制层的 action;第七步:调用外部应用修改 SP 状态;第八步:返回执行结果;第九步:由 Admin 的 action 解析返回结果信息;第十步:Admin 的 action 显示页面和结果信息给 SP 管理员。七、七、示例示例本章将用业务申请作为示例,用基于工作流的技术将其实现1 获取软件需求获取软件需求经过软件需求分析这个过程,可以得知业务申请的流程图如下:9/19 开始填写彩信业务申请 资料业务资料审批业务测试接口测试修改业务申请资料成为待商用业务通过拒绝通过拒绝通
24、过拒绝结束角色SP管理员数据部管理员网络部管理员图. 业务申请流程并角色分解图 如上图所示,SP 管理员主要进行填写业务申请资料和修改业务申请资料,而数据部管理 员进行业务资料审批和业务测试。数据部管理员主要进行业务资料审批和业务测试,网络部 管理员进行接口测试。这一步主要在软件需求分析时完成。2 提取活动提取活动这个步骤主要用来从业务流程中提取各个活动,为下一个步骤的设计活动打下基础。10/19 开始填写彩信业务申请 资料业务资料审批业务测试接口测试修改业务申请资料成为待商用业务通过拒绝通过拒绝通过拒绝结束活动业务审批通过活动业务审批拒绝活动业务测试通过活动业务测试拒绝活动接口测试拒绝活动接
25、口测试通过活动填写资料活动修改资料活动如上图所示,填写业务资料对应填写业务资料活动,修改业务资料对应为修改业务资料活动,业务审批拒绝对应为业务审批拒绝活动,业务审批通过为业务审批通过活动,业务测试拒绝为业务测试拒绝活动,业务测试通过为业务测试通过活动,接口测试拒绝对应为接口测试拒绝活动,接口测试通过对应为接口测试通过活动。这些活动从业务操作的角度来看,都是原子的业务操作,因此划分成一个个业务活动。这些活动对应着相应的业务逻辑类。这一个步骤主要在高层设计时完成。3 制定制定 XPDL根据前面的分析,可以得出下面的 XPDL:11/19 4 设计活动设计活动根据上一步提取出来的活动,需要对活动进行
26、相应设计,一个活动实质就是其相应的业 务逻辑处理。4.1 相关类设计相关类设计下面就业务申请中的两个活动做相应设计:12/19 如图表示,MMSServiceApplyServant 是一个业务逻辑类,主要用来进行业务申请的相关 业务逻辑操作;WorkFlowContor 是工作流控制类,用来实现第五章第四节的相关接口,在 MMSServiceApplyServant 和 WorkFlowContor 之间可以通过传数据库连接保持数据库事务的 一致性;StaffSmsNotiry、Icon、MMSServiceApply 以及 MiscSynInfo 是数据层操作类,主要 用来操作相关的表。
27、填写业务资料活动对应为 MMSServiceApplyServant 类的 spAddMMSServApply 方法,在 该方法中,会调用 MMSServiceApply.insertRecord 进行添加彩信业务资料,调用 Icon 类的 InsertByTmpFile 进行插入图标,调用 StaffSmsNotify 进行短信通知管理员有该业务的待审批 任务,这些操作成功后调用 WorkFlowContor. ExecuteNewWfProcessInstance 进行创建业务流程实例。业务审批通过活动对应于 MMSServiceApplyServant 类的 csAcceptServAp
28、ply 方法,该方 法调用 MMSServiceApply 类的 modifyRecord 方法修改一些业务信息,调用 StaffSmsNotify 类 进行短信通知。最后调用 WorkFlowContor 类的 setWorkItemStatus 方法设置该工作项的业务 状态。4.2 调用顺序图调用顺序图: SP管理员cs_applyservic e_add_src.jspMmsServApplyAd dActioncreateWfProce ssInstancecreateMmsSe rviceupdateServiceB usinessStatus2: 提交 3: 调用工作流接口4: 创
29、建工作流实例5: 调用外部应用6: 返回业务主键1: SP填写业务申请资料7: 修改业务的状态8: 返回结果9: 返回结果10: 解析结果11: 展示结果信息第一步:SP 管理员选择申请业务,进入了 Admin 的填写业务申请资料页面; 第二步:SP 管理员填写申请资料后提交,进入 Admin 控制层的 action; 第三步:由 Admin 控制层的 action 调用工作流系统的接口:createWfProcessInstance,用来创建过程实例;第四步:工作流系统创建过程实例;第五步:由工作流系统根据相应配置调用外部应用,即 Admin 向业务数据库表插入数据的程序;第六步:由外部应用
30、返回业务主键或者异常信息给工作流系统;第七步:由工作流系统返回结果信息给 Admin 的控制层的 action;第八步:调用外部应用修改业务状态;第九步:返回执行结果;第十步:由 Admin 的 action 解析返回结果信息;第十一步:Admin 的 action 显示页面和结果信息给 SP 管理员。13/19 : 集团数据部 管理员cs_applyservice _audit_src.jspcs_applyservice _audit_src.dofinishWorkI temmmsApplySer vAuditupdateServiceB usinessStatus2: 提交9: 解析结
31、果3: 调用工作流接口8: 返回结果4: 调用外部应用5: 返回业务主键6: 修改业务的状态7: 返回结果1: 业务基本资料审批10: 显示结果页面第一步:集团数据部管理员选择 MMS 业务申请资料,进入了彩信业务基本资料审批页面; 第二步:集团数据部管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入 Admin 控制层的 action; 第三步:由 Admin 控制层的 action 调用工作流系统的接口:finishWorkItem,用来创建过程实例;第四步:由工作流系统根据相应配置调用外部应用,即 Admin 向业务数据库表插入数据的程序;第五步:由外部应用返回业务主键或者
32、异常信息给工作流系统;第六步:由工作流系统返回结果信息给 Admin 的控制层的 action;第七步:调用外部应用修改业务状态;第八步:返回执行结果;第九步:由 Admin 的 action 解析返回结果信息;第十步:Admin 的 action 显示页面和结果信息给集团数据部管理员。: 集团网络部 管理员cs_testservice _audit_src.jspcs_testservice _audit_src.dofinishWorkI temmmsTestServ AuditupdateServiceB usinessStatus2: 提交9: 解析结果3: 调用工作流接口8: 返回结
33、果4: 调用外部应用5: 返回业务主键6: 修改业务的状态7: 返回结果1: 业务接口测试10: 展示结果信息第一步:集团网络部管理员选择 MMS 业务申请资料,进入了彩信业务内容测试审批页面; 第二步:集团网络部管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入14/19 Admin 控制层的 action; 第三步:由 Admin 控制层的 action 调用工作流系统的接口:finishWorkItem,用来创建过程实例;第四步:由工作流系统根据相应配置调用外部应用,即 Admin 向业务数据库表插入数据的程序;第五步:由外部应用返回业务主键或者异常信息给工作流系统;第六步
34、:由工作流系统返回结果信息给 Admin 的控制层的 action;第七步:调用外部应用修改业务状态;第八步:返回执行结果;第九步:由 Admin 的 action 解析返回结果信息;第十步:Admin 的 action 显示页面和结果信息给集团网络部管理员。: 集团计费中 心管理员cs_chargeservic e_audit_src.jspcs_chargeservice _audit_src.dofinishWorkI temmmsChargeSe rvAuditupdateServiceB usinessStatus2: 提交9: 解析结果3: 调用工作流接口8: 返回结果4: 调用外
35、部应用5: 返回业务主键6: 修改业务的状态7: 返回结果1: 业务接口测试10: 展示结果信息第一步:集团计费中心管理员选择 MMS 业务申请资料,进入了彩信业务基本资料审批页面;第二步:集团计费中心管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入 Admin 控制层的 action; 第三步:由 Admin 控制层的 action 调用工作流系统的接口:finishWorkItem,用来创建过程实例;第四步:由工作流系统根据相应配置调用外部应用,即 Admin 向业务数据库表插入数据的程序;第五步:由外部应用返回业务主键或者异常信息给工作流系统;第六步:由工作流系统返回结果信息给 Admin 的控制层的 action;第七步:调用外部应用修改业务状态;第八步:返回执行结果;第九步:由 Admin 的 action 解析返回结果信息;第十步:Admin 的 action 显示页面和结果信息给集团计费中心管理员。5 编码实现编码实现这一步骤根据上一步骤的设计采用 Java 语言编码实现,与以往的 Admin 系统编码实现类似, 这里就不详细论叙。15/19
限制150内