jbpm5 持久化及流转流程剖析.docx

上传人:牧羊曲112 文档编号:1663012 上传时间:2022-12-13 格式:DOCX 页数:23 大小:1.23MB
返回 下载 相关 举报
jbpm5 持久化及流转流程剖析.docx_第1页
第1页 / 共23页
jbpm5 持久化及流转流程剖析.docx_第2页
第2页 / 共23页
jbpm5 持久化及流转流程剖析.docx_第3页
第3页 / 共23页
jbpm5 持久化及流转流程剖析.docx_第4页
第4页 / 共23页
jbpm5 持久化及流转流程剖析.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《jbpm5 持久化及流转流程剖析.docx》由会员分享,可在线阅读,更多相关《jbpm5 持久化及流转流程剖析.docx(23页珍藏版)》请在三一办公上搜索。

1、Jbpm5 持久化及流转流程剖析1 Jbpm5 持久化结构图Jbpm5实例流程图下面的文档讲解了基于该流程的步骤流程2 第一步启动任务流程时序图:2.1 启动TaskServer使用线程启动TaskServer,初始化持久化OrganizationEntity,将流程中需要使用到的 groupId,actorId.全部初始化到表中。2.2 启动流程1)根据路径解析*.bpmn2或*.bpmn 文件,放入到内存中。 在该类注册了相关的对象org.jbpm.bpmn2.xml.BPMNSemanticModule .2.2.1 开启事务2.2.2 Ksession开始执行任务在org.drools

2、.persistence.SingleSessionCommandService 中 execute执行,流程实例为org.jbpm.ruleflow.instance.RuleFlowProcessInstance 的对象进入 mand.runtime.process.StartProcessCommand 中执行 excute2.2.3 执行StartNode执行StartNode,结点任务任务流转核心方法2.2.4 流程执行HumanTaskNode流程执行到HumanTask任务结点,引擎会执行org.jbpm.workflow.instance.node.WorkItemNodeIn

3、stance 这个实例类的internalTrigger方法,并持久化WorkItemInfo2.3 初始化Handler官方默认提供了WorkItemHandler的实现,com.carefx.workflow.handler.CommandBasedWSHumanTaskHandler。这个handler 就类似人工任务的范本,如果业务系统要做其他事情,可以适当的修改这个类就可以,例如:与外部组织机构交互等。2.3.1 初始化Client初始化TaskClient. 用于Client 与 服务端Server 交互2.3.2 建立Mina通信连接 Jbpm5 默认以 Mina 作为通信持久化

4、通信桥梁2.3.3 注册事件Complete2.3.4 注册事件Fail2.3.5 注册事件Skip初始化CommandBasedWSHumanTaskHandler方法时,由客户端发起,向服务端中注册任务事件(TaskCompletedEvent, TaskFailedEvent, TaskSkippedEvent, TaskClaimedEvent等)。客户端(通过mina发起):服务端(通过mina接收):2.4 调用excuteWorkItem 方法调用excuteWorkItem 方法,目的初始化任务信息(任务名称、任务优先级、处理任务人员分配等),将得到的任务信息 一并发送到服务端

5、进行持久化2.4.1 初始化Task任务信息2.4.2 调用Client添加任务信息2.4.3 AddTaskRequest由客户端(TaskClient) 向服务端(TaskServer)转发持久化 Task 请求该方法最后一行 通过发送 AddTaskRequest 请求,发送到服务端 ,由服务端持久化Task和 Content 信息2.4.4 持久化Task服务端(org.jbpm.task.service.TaskServerHandler)接收到客户端发送来的消息AddTaskRequest, 1)持久化Task信息,插入相关的表(PeopleAssignments_PotOwner

6、s,PeopleAssignments_ExclOwners,PeopleAssignments_Stakeholders,PeopleAssignments_Bas,PeopleAssignments_Recipients,Task, I18NTEXT)2.4.5 AddTaskResponse通过AddTaskResponse,由服务端(TaskServer) 发起请求通知客户端(TaskClient),通知客户端(org.jbpm.task.service.TaskClientHandler)添加任务完毕,持久化ProcessInstanceInfo, WorkItemInfo 数据此时

7、路程已经执行到了HumanTask任务结点上,同时分配了任务给具体的人。进行了持久化操作。接着等待人员触发该任务2.4.6 返回任务结束返回sessionId,procesInstanceId给用户,外部系统保持以便获取持久化信息。2.5 关闭事务(提交事务)持久化processInfo,workItem 等,并对 sessionInfo 解锁2.6 执行流程的后续操作2.6.1 执行HumanTaskAfterNode拦截器2.6.2 执行StartAfterNode拦截器2.6.3 执行HumanTaskAfterNode拦截器2.6.4 Ksession.disponse()释放kses

8、sion3 第二步人工任务流程时序图:3.1 启动TaskServerTaskServer 保持启动状态,或者重新启动一个线程亦可。3.2 调用人工任务执行接口外部系统通过该接口实现人工任务的交互3.3 解析bpmn2读取原来流程的bpmn2 文件并解析到jbpm5 框架中3.4 通过kessionId 获取ksession通过第一步返回的sessionId.获取到持久化的sessionInfo 信息,以及 processInstance信息。同时processInstance流程实体采用数据锁,保证并发安全性3.5 初始化Client3.5.1 建立Mina 通信连接初始化TaskClien

9、t, 建立起Mina连接 3.5.2 注册事件Complete3.5.3 注册事件Fail3.5.4 注册事件Skip同时由客户端(TaskClient)发起,须向服务端(TaskServer)中注册任务事件(TaskCompletedEvent, TaskFailedEvent, TaskSkippedEvent, TaskClaimedEvent)。注册几个事件,就需要发起几个Mina 请求客户端(通过mina发起):服务端(通过mina接收):3.5.5 返回3.6 registerWorkItemHandler(容器注册人工任务Handler)通过handler注册后,jbpm5 会自

10、动实现与业务系统的交互3.7 发起查询人工任务请求转发请求查询人工任务请求到 TaskClient3.7.1 QueryTasksAssignedAsPotentialOwner客户端(TaskClient)向服务端(TaskServer)发送请求。发起QueryTasksAssignedAsPotentialOwner 查询请求:查询分配的用户任务列表服务端(TaskServer) 接收QueryTasksAssignedAsPotentialOwner 请求3.7.2 QueryTaskSummaryResponse客户端(TaskClient)接收返回QueryTaskSummaryRe

11、sponse 请求自此,一个来回后,客户端总算获取到了任务信息,接下来再往下走吧3.7.3 返回人工任务信息人工任务返回 包含在 responseHandler 中 通过该接口的getResults 既可获取3.8 发起开始执行任务请求(Start)1. 查看是否需要分配任务,查看是否有groupId,如果groupId不为空则可以让该组下的某个用户先领取任务。(此处不介绍分配任务情况)2. 开始执行任务3.8.1 OperationRequest客户端(TaskClient)发起开始执行任务请求服务端(TaskServer)接收开始执行任务请求3.8.2 OperationResponse客

12、户端(TaskClient)接收请求自此,processInfo任务状态保存为InProcess.3.8.3 返回3.9 发起成功完成人工任务请求(Complete)完成任务,该流程极为繁琐。3.9.1 OpertationRequest客户端(TaskClient)向服务端(TaskServer)发送完成任务请求OperationRequest3.9.2 EventTriggerResponse由服务端(TaskServer)向服务端(TaskClient)发送EventTriggerResponse请求,目的需要客户端调用任务信息,促发getContentRequest,让Content做

13、持久化3.9.3 OperataionResponse服务端(TaskServer)向服务端(TaskClient)发送OperationResponse请求。3.9.4 GetTaskRequest客户端(TaskClient)向服务端(TaskServer)发送GetTaskRequest请求,查询用户任务信息。3.9.5 GetTaskResponse服务端(TaskServer)向服务端(TaskClient)发送GetTaskResponse请求,返回任务信息,并执行GetCompletedTaskResponseHandler 中的execute方法3.9.6 GetContent

14、Request客户端(TaskClient)向服务端(TaskServer)发送GetContentRequest请求,查询Content信息3.9.7 GetContentResponse服务端(TaskServer)向服务端(TaskClient)发送GetContentResponse请求,3.9.8 调用WorkItem管理器 completeWorkItem接口3.9.9 Ksession开启事务3.9.10 Kession 执行CompleteWorkItemCommand3.9.11 结点开始流转3.9.12 调用HumanHandler(初始化)初始化下个结点的 workIte

15、m 信息3.9.13 初始化client3.9.14 注册CompleteEvent3.9.15 注册FailEvent3.9.16 注册SkipEvent3.9.17 excuteWorkItem3.9.18 初始化下个结点的Task在CommandBasedWSHumanTaskHandler 中执行初始化下个结点的Task3.9.19 发送创建任务持久化请求3.9.20 AddTaskRequest3.9.21 AddTaskResponse3.9.22 返回3.9.23 返回3.9.24 提交事务3.9.25 返回4 相关表操作步骤TaskClientTaskServer操作类型涉及的

16、表2.1AOrganizationalEntity2.2.3ASessionInfo2.3.2AProcessInstanceInfo2.3.1AWorkItemInfo2.3.1AVariableInstanceLog, ProcessInstanceLog,NodeInstanceLog2.3.1AVariableInstanceLog,NodeInstanceLog2.4.4ATask,I18NText, PeopleAssignments_Bas,PeopleAssignments_PotOwners,PEOPLEASSIGNMENTS_EXCLOWNERS,PEOPLEASSIGNM

17、ENTS_RECIPIENTS,PEOPLEASSIGNMENTS_STAKEHOLDERS,Content,3.7UProcessInstanceInfo3.9.10AWorkItemInfo(新增下个结点)3.9.11AVariableInstanceLog, NodeInstanceLog3.9.17UProcessInstanceInfo(锁定)3.9.17DWorkItemInfo(删除原有结点)3.9.20ATask,I18NText, PeopleAssignments_Bas,PeopleAssignments_PotOwners,PEOPLEASSIGNMENTS_EXCLOWNERS,PEOPLEASSIGNMENTS_RECIPIENTS,PEOPLEASSIGNMENTS_STAKEHOLDERS,Content,3.924USessionInfo

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号