创建并开发BPM
工单管理开发中,工单流转BPM设计大致如下。
- 根据业务角色不同,使用不同的工作队列,创建客服人员、派单员以及维修人员3个泳道。
图1 工单BPM设计界面
通过在不同的泳道中,拖拽功能图元,然后通过配置图元属性,以及需要调用关键脚本逻辑,将前端页面中获取到的数据传回到后端的工单对象中,以完成工单流转的全过程。图元之间调用关系及工单流转过程,如表1所示。表1 图元调用关系及工单流程过程 序号
图元名称
图元类型
图元作用
下一步流转
1
Start
开始
用户在创建工单页面,填写工单信息并单击“提交”按钮后,触发该图元,并将工单信息传入。
携带工单信息流转到“Data Mapper”图元。
2
Data Mapper
数据映射
将当前BPM的ID赋值给工单对象中BPM的ID字段。
携带工单信息、BPM的信息流转到“创建工单”图元。
3
创建工单
调用脚本
调用“创建工单”脚本,根据传入的工单信息,完成工单创建。
工单创建完毕后,流转“派单员派单”图元。
4
派单员派单
用户任务
将创建成功的工单,流转到派单员的派单页面(派单员队列中的用户均可进行派单)。
单击“派单”按钮,选择需要指定的“维修人员”后,将派单信息流转到“派单”图元。
5
派单
调用脚本
调用“派发工单”脚本,根据传入的派单信息进行工单信息(当前处理人/状态)的修改。
“派发工单”脚本执行后,会返回维修人员的用户Id,工单将流转到“维修人员”图元。
6
维修人员接单
用户任务
将派发成功的工单流转到指定的维修人员的工单处理界面。
单击“处理”按钮,进行工单的处理,可选择“接单”或“拒单”,并将处理信息流转到“接单”图元。
7
接单
调用脚本
调用“处理工单”脚本,根据传入的处理信息进行工单信息(当前处理人/状态)的修改。
“处理工单”脚本执行后返回处理结果,并将处理结果流转到“Exclusive”排他网关图元,进行下一步判断。
8
Exclusive
排他网关
根据脚本返回的处理结果进行判断,执行不同的流程。
- 如果脚本返回结果为“接单”,将流转到“维修人员关单”图元。
- 如果脚本返回结果为“拒单”,将重新流转回“派单员派单”图元,重新进行派单。
9
维修人员关单
用户任务
将接单成功的工单流转到接单的维修人员的工单处理界面。
对于处理中状态的工单,单击“处理”按钮,进行工单的处理,即进行关闭操作,将处理信息流转到“关闭工单”图元。
10
关闭工单
调用脚本
调用处理工单脚本,根据传入的处理信息,将工单状态修改为关闭。
关闭工单成功后,将流转到结束图元。
11
End
结束
整个流程执行完毕。
-
操作步骤
创建流程大致是先创建3个泳道,再拖拽泳道图元,然后配置相关图元,保存并启用。
- 在“我的应用”中,单击“设备维修管理系统”,进入应用。
- 在“WorkOrder”目录中,将鼠标放在“Bpm”上,单击界面上出现的“+”,在弹出菜单中选择“BPM”。
- 在弹窗中,设置“标签”、“名称”为“WorkOrderBpm”,单击“添加”。
图2 添加BPM
- 在设计区域,单击2次“AddLane”,为BPM添加2个角色泳道。
图3 添加泳道
- 修改泳道基础属性。
- 选中“Lane”,在右侧属性配置区域,设置泳道标签为“客服人员”,“工作队列”设置为创建工作队列中创建的“客服人员”。
图4 修改客服人员泳道基本信息
- 参考上一步,分别设置其他两个泳道的“标签”及“工作队列”。
表2 泳道标签及工作队列 泳道初始标签
泳道修改后标签
工作队列
Lane(上一步已配置)
客服人员
客服人员
lane1
派单员
派单员
lane2
维修人员
维修人员
- 选中“Lane”,在右侧属性配置区域,设置泳道标签为“客服人员”,“工作队列”设置为创建工作队列中创建的“客服人员”。
- 创建BPM中用的变量及对象变量。
- 在右侧属性面板区域,单击,展开全局上下文。
图5 展开全局上下文
- 单击“变量”后的图标4次,分别创建以下变量,单击变量后的,可以修改字段类型,创建完成后,如图6所示。
表3 BPM变量 变量名
字段类型
id
文本
status
文本
assignedFme
文本
transInfo
任意
- 单击“对象变量”的,在弹窗中设置“名称”为“workOrderData”,“对象”设置为“HW__WorkOrder__CST”(工单对象),加粗斜体内容请以实际命名空间前缀为准,然后单击“保存”。
图7 新增对象变量
- 再次单击“对象变量”的,在弹窗中设置“名称”为“statusInfo”,“对象”设置为“HW__WorkOrder__CST”(工单对象),然后单击“保存”。
- 在右侧属性面板区域,单击,展开全局上下文。
- 拖拽并配置“客服人员”泳道。
- 从左侧“活动”图元区域,拖拽一个“数据映射”图元到“客服人员”泳道中。
- 选中“Data Mapper”图元,然后在右侧导航菜单上单击,进入数据映射配置,再单击,展开全局上下文。
图8 拖拽并设置“数据映射”图元
- 分别从全局上下文的“对象变量”、“系统变量”中拖拽参数到数据映射配置下:
- 从左侧“活动”图元区域,拖拽一个“调用脚本”图元到“客服人员”泳道中,并设置“标签”为“创建工单”、“名称”为“createWorkOrder”。
图10 设置创建工单图元
- 选中“创建工单”图元,单击,再单击“全局上下文”,配置“创建工单”图元绑定的脚本以及输入输出参数。
- 在“脚本配置”下选择“生成工单”脚本“HW__createWorkOrder”。
- 从全局上下文中拖拽对象变量“workOrderData”到“输入参数”的“源”输入框中,作为输入参数的值。
- 设置“输出参数”为“id”,并拖拽变量“id”作为“目标”输入框中的值。
图11 配置“创建工单”图元
- 从“Start”图元中拖拽一条连线到“Data Mapper”图元,然后从“Data Mapper”图元拖拽一条连线到“创建工单”图元,默认“连线类型”为“下一步”。
图12 拖拽连线
- 拖拽并配置“派单员”泳道。
- 从左侧“活动”图元区域,依次拖拽一个“用户任务”、“调用脚本”图标到“派单员”泳道中。
- 设置“用户任务”图元的“标签”为“派单员派单”、“名称”为“dispatchWorkOrderList”。
- 设置“调用脚本”图元的“标签”为“派单”、“名称”为“dispatch”。
- 选中“派单员派单”图元,单击,设置“任务标题”、“任务描述”为“派单员派单”,“渲染类型”为“标准页面”,“页面”设置为“HW__dispatchWorkOrder”。
图13 用户任务配置
- 选中“派单”图元,单击,再单击“全局上下文”,配置“派单”图元绑定的脚本以及输入输出参数。
- 在“脚本配置”下选择“生成工单”脚本“HW__dispatchWorkOrder”。
- 从全局上下文中,拖拽变量“transInfo”到“输入参数”的“源”输入框中,作为输入参数的值。
- 在“输出参数”下,单击“新增行”,设置“输入参数”为“id”、“assignedFme”,并从全局上下文中,拖拽变量“id”、“assignedFme”作为“目标”输入框中的值。
图14 配置“派单”图元
- 从“派单员派单”图元中拖拽一条连线到“派单”图元,然后再从“创建工单”图元中拖拽一条连线到“派单员派单”图元,默认“连线类型”均为“下一步”。
图15 拖拽连线
- 拖拽并配置“维修人员”泳道。
- 从左侧“活动”图标区域,拖拽2个“用户任务”、2个“调用脚本”、1个“排他网关”以及“终止”图元到“维修人员”泳道中,然后调整图元顺序。
图16 拖拽并调整图元顺序
- 从左到右,分别设置2个“用户任务”、2个“调用脚本”图元的基本属性,具体如表4所示,设置完成后如图17所示。
- 配置“维修人员接单”图元。
- 配置“接单”图元。
选中“接单”图元,单击,再单击“全局上下文”,并展开全局上下文,配置“维修人员接单”图元,详细配置如表5所示。
请直接从全局上下文拖拽“statusInfo”、“id”、“status”到输入输出参数对应“源”或“目标”下,请勿手动输入,手动输入的值系统可能不识别。
图19 配置“接单”图元
表6 接单图元配置 参数项
值
脚本
HW__modifyOrderStatus
输入参数“statusInfo”
对象变量下“statusInfo”
输出参数“id”
变量下“id”
输出参数“status”
变量下“status”
- 配置“维修人员关单”图元。
选中“维修人员关单”图元,单击,设置“任务标题”为“维修人员关单”,“任务描述”为“维修人员任务列表”,“渲染类型”为“标准页面”,“页面”设置为“HW__workOrderListM”,并设置“当前泳道中的上一个任务被分配的人员”,如图20所示。
- 配置“关闭工单”图元。
选中“关闭工单”图元,单击,再单击“全局上下文”,并展开全局上下文,配置“关闭工单”图元,详细配置如表5所示。
请直接从全局上下文拖拽“statusInfo”、“id”、“status”到输入输出参数对应“源”或“目标”下,请勿手动输入,手动输入的值系统可能不识别。
图21 拖拽关闭工单输入输出值
表7 接单图元配置 参数项
值
脚本
HW__modifyOrderStatus
输入参数“statusInfo”
对象变量下“statusInfo”
输出参数“id”
变量下“id”
输出参数“status”
变量下“status”
- 从左侧“活动”图标区域,拖拽2个“用户任务”、2个“调用脚本”、1个“排他网关”以及“终止”图元到“维修人员”泳道中,然后调整图元顺序。
- 拖拽图元直接的关系连线,具体如图22所示。
- 配置“排他网关”图元连线属性。
- 选中“派单员派单”与“排他网关”之间的连线,单击鼠标右键,选择“配置”,设置“标签”为“拒单”,再单击“新增行”,拖拽变量“status”到“资源”下,设置“比较符”为“==”,“值”为“"拒单"”。
图23 选中排他网关图元连线
图24 配置“拒单”连线
- 选择“排他网关”图元与“维修人员关单”图元之间的连线,参考上一步,设置连线,设置“标签”为“接单”,再单击“新增行”,拖拽变量“status”到“资源”下,设置“比较符”为“==”,“值”为“"接单"”。
图25 配置“接单”连线
- 选中“派单员派单”与“排他网关”之间的连线,单击鼠标右键,选择“配置”,设置“标签”为“拒单”,再单击“新增行”,拖拽变量“status”到“资源”下,设置“比较符”为“==”,“值”为“"拒单"”。
- 单击页面上方的,再单击,启用BPM。