面向工作流的技术规范Word格式.docx
- 文档编号:6315605
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:22
- 大小:317.63KB
面向工作流的技术规范Word格式.docx
《面向工作流的技术规范Word格式.docx》由会员分享,可在线阅读,更多相关《面向工作流的技术规范Word格式.docx(22页珍藏版)》请在冰点文库上搜索。
3提取活动7
4设计活动8
4.1相关类设计9
4.2调用顺序图10
5编码实现12
七、最佳实践12
1.1抽取活动的最佳实践12
1.2设计XPDL的最佳实践12
1.3外部应用编码的最佳实践12
一、规范简介
1目的
本文的目的是为工作流的应用提供强制的规定,并提供相应的建议。
2范围
本文只限于工作流应用的规定与建议。
3参考文档
《WFMCWorkflowProcessDefinitionInterface》WFMC2002-10
《WFMCTheWorkflowReferenceModel》DavidHollingsworth1995
《工作流系统设计方案书》陈建华2004-2
《高层设计_工作流系统》陈建华2004-2-
《Web服务世界中的业务流程和工作流》MargieVirdell2001
4定义及缩略语
工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或者任务能够在不同的执行者之间传递和执行。
流程定义一个图形流程定义或流程图,代表工作流的流程逻辑元素以及各元素之间的关系。
流程实例一个流程实例,通常称为工作,是一个流程定义的运行实例。
工作流管理系统一个软件应用程序,它存储流程定义并通过其工作流引擎组件来根据这些流程定义运行工作。
工作流引擎是运行时执行模块。
流程定义工具一个用来创建和更改流程定义的软件工具。
该工具可以是一个业务流程管理软件的组件、一个独立的应用程序或者一个工作流管理系统的组件。
流程定义工具提供了重用已存储工作流元素甚至所有子流程的能力,这使工作流应用程序开发者生产力更高。
参与者以下类型之一:
资源集、特定资源、组织单元、角色(一个人在组织内部的作用)、人或系统(自动代理)。
活动组成流程定义中的一个逻辑步骤的任务。
可以是自动的或人工的。
自动指在流程操作过程中定义脚本和触发器的能力。
流程定义中的特定活动可以作为无人参与的任务来运行,自动化可以在手工或人力驱动的任务中执行业务规则。
常见的一种自动活动就是截止期限管理,如果某个工作项在预定的截止期限之前未能完成,该管理可以自动发送一条提醒消息或触发一个延期程序。
自动任务自动任务指活动所完成的任务中,那些事先定义为由引擎自动调用外部应用而完成的任务。
人工任务人工任务指活动所完成的任务中,那些必须由人来触发执行或必须产生待办事项的任务。
活动所有者活动所有者是有权宣布一个活动结束,然后推进工作到流程中的下一个活动的参与者。
工作所有者工作所有者是有权整体控制流程实例执行过程的参与者。
工作项代表流程实例中活动的参与者将要执行的工作。
二、工作流提供的接口
1简介
1.1目的
工作流系统为工作流的客户端(业务系统)提供了调用接口,在这里进行详细描述
1.2适用范围
仅用于工作流客户端调用。
2规范
接口名
参数
返回值
说明
createWfProcessInstance
StringbusinessTypeId:
业务过程定义ID,StringwfProcessId:
业务过程子流程ID,Mapparams:
工作流控制对象,ObjectbizData:
业务数据对象
Map
创建一个新的流程实例,输入参数Mapparams表示输入的对象集合,返回值Map包括了一个ID的值,表示创建业务的主键,该接口内部实现为同步调用。
getAllWaitingManualWorkItems
StringbusinessTypeId:
业务过程定义ID
StringwfProcessId:
业务过程子流程ID,
StringactivityId:
活动ID,
StringuserId:
用户ID
intfirst起始行
intsize:
结果集的大小(起始行+结果集的大小就是结束行)
OderUtilorder:
用来描述排序信息的类(包含一个String[]及boolean[]分别用来描述order的字段及是否是按desc排序)
Page:
一个分页对象,
包含一个含有多个WorkItem对象的list,以及符合条件的WorkItem的总数
根据业务过程定义ID和业务过程子流程ID、活动ID以及用户ID得到相应的全部手工工作项
GetAllWaitingManualWorkItems1
StringbussinessInstanceId:
业务实例id
根据业务过程定义ID和业务过程子流程ID、活动ID、业务实例ID
以及用户ID得到相应的全部手工工作项
GetAllWaitingAutoWorkItems
业务过程定义ID,StringwfProcessId:
业务过程子流程ID,StringactivityId:
活动ID,String[]bussinessInstanceIds:
业务主键集合
根据业务过程定义ID、业务过程子流程ID、活动ID以及业务主键得到相应的全部未完成的自动工作项
finishWorkItem
intworkItemId:
工作项ID,Mapparams:
参数集合,StringuserId:
用户ID
void
完成工作项,同时设置工作项的属性值(params)
getNextActivities
业务过程ID
StringactivityId:
活动ID
业务过程子流程ID
List
包含若干个Activity
该方法实现查找指定activityId的后续的Activities的定义,Activity对象包括ActivityId和ActivityName
getAllWillDoInfosOfUser
List:
工作项队列,
包含多个WillDoneInfo对象
根据角色ID集得到相应的全部工作项信息
batchFinishWorkItems
业务过程子流程ID,StringactivitySetId:
活动集ID,Mapcontrolparams:
多个业务实例共享的工作流控制信息,如审批通过或拒绝,MapbizObjects:
键名为业务主键,键值为业务大对象,StringuserId:
(controlmap中业务大对象的键名为:
BizObject)
批量完成多个工作项.注意:
前一条业务的执行结果应不影响后一条业务的执行结果,每一条业务的执行应该是原子的.另外返回的Map中,键名为业务主键,键值为FinishWorkItemResult
对象其中应包含三类信息:
1.是否执行成功(boolean型)
2.提示语(String型)
3.错误堆栈(Exception型,执行成功时为null)
工作流控制类可以根据实际情况选择是否全部实现这些接口,为了减少移植的工作量,建议实现其中一些必要的接口。
其中工作项WorkItem包含如下属性并包括如下属性的获取方法:
Id:
WorkItem唯一标示;
ApplicationId:
对应的应用程序ID;
ParticiPantId:
参与者ID,可以是roleID,也可以是staffID;
BusinessTypeId:
业务类型ID
ProcessId:
业务过程ID
ProcessInstanceId:
业务过程实例ID;
ActivityId:
活动ID;
ActivityInstanceId;
活动实例ID;
Status:
状态
Params:
Map对应在xpdl中的releventdata
ExtendedAttributes:
Map,对应在xpdl中的当前人工工作项的extendedattributes的名值对
WorkItemInfo对象包括如下信息:
itemCountint:
待办事项数量
activityIdString:
BusinessTypeIdString:
三、工作流外部应用及接口定义规范(强制性规范)
工作流外部接口一般指工作流系统调用的业务系统的程序接口。
这些接口必须遵循相应的规范,工作流系统才能运行正常。
为了更好的应用工作流外部接口,特添加此强制性规范。
仅工作流所调用的外部应用。
1、业务系统的应用程序接口参数必须为一个java.util.Map的输入参数,这个Map中包含了所有的全局变量和在XPDL定义的输入参数;
2、如果在XPDL定义了该接口有输出参数,此应用程序也必须定义相应的java.util.Map的返回值,该Map中必须包含在XPDL中定义的输出参数为主键的名值对;
3、应用程序以异常作为报错机制,而不采用错误码的方式报错。
例如,通常的外部应用接口为:
publicvoidaddApplySp(Mapmap)throwsException
该map中包含了所有的全局变量和在XPDL中定义的输入参数。
如果在XPDL定义了该接口有输出参数,其接口一般为:
publicMapaddApplySp(Mapmap)throwsException
四、活动定义规范
为了制定在工作流系统中能够比较顺畅的运行的活动,特制定该项规范。
此项规范仅限于活动定义的规则。
1、若干活动之间要保证事务,必须使这些活动放在一个Blockactivity(强制规范);
2、在Blockactivity中最多只能有一个人工工作项,如果有人工工作项,则该工作项必须处于第一个活动(强制规范);
3、第一个活动的名称必须为STARTACTIVITY(强制规范);
4、如果有多个活动指向end元素,建议用一个Routeactivity作为中间活动(建议);
5、活动中的扩展属性的参数名称头两位必须为__两个下划线开头。
6、不要创建重名的活动名称。
五、XPDL定义规范
为了定义出的XPDL更加顺畅的运行,特制定该项规范。
仅适用于工作流系统的XPDL定义。
1、应用程序(application)定义只能在package一级进行定义(强制规范);
2、relevantdata(相关数据)定义只能在process一级进行定义(强制规范);
3、如果要用relevantdata中的某个变量作为外部应用的输入参数,必须还在formalparameters进行定义;
4、participants(参与者)定义必须在package一级进行定义,并且type必须为role(强制规范);
5、不要创建重名的XPDL名、过程定义名、活动名,建议在名称后面加上版本号以示区别。
六、Admin与工作流系统的调用流程
1先调用工作流接口,由工作流系统调用外部应用(推荐)
1.1流程图
1.2流程描述
第一步:
SP管理员在审批的SP列表中选择一个SP,进入SP审批界面;
第二步:
SP管理员选择审批通过/拒绝后提交,进入Admin控制层的action;
第三步:
由Admin控制层的action调用工作流系统的接口:
finishWorkItem,用来完成该工作项;
第四步:
由工作流系统根据相应配置调用外部应用,即审批通过/拒绝的外部应用;
第五步:
由外部应用返回业务主键或者异常信息给工作流系统;
第六步:
由工作流系统返回结果信息给Admin的控制层的action;
第七步:
调用外部应用修改SP状态;
第八步:
返回执行结果;
第九步:
由Admin的action解析返回结果信息;
第十步:
Admin的action显示页面和结果信息给SP管理员。
七、示例
本章将用业务申请作为示例,用基于工作流的技术将其实现
1获取软件需求
经过软件需求分析这个过程,可以得知业务申请的流程图如下:
图.业务申请流程并角色分解图
如上图所示,SP管理员主要进行填写业务申请资料和修改业务申请资料,而数据部管理员进行业务资料审批和业务测试。
数据部管理员主要进行业务资料审批和业务测试,网络部管理员进行接口测试。
这一步主要在软件需求分析时完成。
2提取活动
这个步骤主要用来从业务流程中提取各个活动,为下一个步骤的设计活动打下基础。
如上图所示,填写业务资料对应填写业务资料活动,修改业务资料对应为修改业务资料活动,业务审批拒绝对应为业务审批拒绝活动,业务审批通过为业务审批通过活动,业务测试拒绝为业务测试拒绝活动,业务测试通过为业务测试通过活动,接口测试拒绝对应为接口测试拒绝活动,接口测试通过对应为接口测试通过活动。
这些活动从业务操作的角度来看,都是原子的业务操作,因此划分成一个个业务活动。
这些活动对应着相应的业务逻辑类。
这一个步骤主要在高层设计时完成。
3制定XPDL
根据前面的分析,可以得出下面的XPDL:
4设计活动
根据上一步提取出来的活动,需要对活动进行相应设计,一个活动实质就是其相应的业务逻辑处理。
4.1相关类设计
下面就业务申请中的两个活动做相应设计:
如图表示,MMSServiceApplyServant是一个业务逻辑类,主要用来进行业务申请的相关业务逻辑操作;
WorkFlowContor是工作流控制类,用来实现第五章第四节的相关接口,在MMSServiceApplyServant和WorkFlowContor之间可以通过传数据库连接保持数据库事务的一致性;
StaffSmsNotiry、Icon、MMSServiceApply以及MiscSynInfo是数据层操作类,主要用来操作相关的表。
填写业务资料活动对应为MMSServiceApplyServant类的spAddMMSServApply方法,在该方法中,会调用MMSServiceApply.insertRecord进行添加彩信业务资料,调用Icon类的InsertByTmpFile进行插入图标,调用StaffSmsNotify进行短信通知管理员有该业务的待审批任务,这些操作成功后调用WorkFlowContor.ExecuteNewWfProcessInstance进行创建业务流程实例。
业务审批通过活动对应于MMSServiceApplyServant类的csAcceptServApply方法,该方法调用MMSServiceApply类的modifyRecord方法修改一些业务信息,调用StaffSmsNotify类进行短信通知。
最后调用WorkFlowContor类的setWorkItemStatus方法设置该工作项的业务状态。
4.2调用顺序图
SP管理员选择申请业务,进入了Admin的填写业务申请资料页面;
SP管理员填写申请资料后提交,进入Admin控制层的action;
createWfProcessInstance,用来创建过程实例;
工作流系统创建过程实例;
由工作流系统根据相应配置调用外部应用,即Admin向业务数据库表插入数据的程序;
由工作流系统返回结果信息给Admin的控制层的action;
调用外部应用修改业务状态;
第十一步:
集团数据部管理员选择MMS业务申请资料,进入了彩信业务基本资料审批页面;
集团数据部管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入Admin控制层的action;
finishWorkItem,用来创建过程实例;
Admin的action显示页面和结果信息给集团数据部管理员。
集团网络部管理员选择MMS业务申请资料,进入了彩信业务内容测试审批页面;
集团网络部管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入Admin控制层的action;
Admin的action显示页面和结果信息给集团网络部管理员。
集团计费中心管理员选择MMS业务申请资料,进入了彩信业务基本资料审批页面;
集团计费中心管理员点击审批通过/拒绝按键,填写通过通过/拒绝原因后提交,进入Admin控制层的action;
Admin的action显示页面和结果信息给集团计费中心管理员。
5编码实现
这一步骤根据上一步骤的设计采用Java语言编码实现,与以往的Admin系统编码实现类似,这里就不详细论叙。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 工作流 技术规范
![提示](https://static.bingdoc.com/images/bang_tan.gif)