本文是继深入理解 jBPM Human Task - I,对使用JMS做传输类型过程中服务器端和客户端业务逻辑的明细。本文也是基于之前代码分析系列:
JMSTaskServer 端主要包括两个消息队列ServerQueue和ResponseQueue,这两个队列负责与客户端进行交互,创建,修改Human Task。如下图所示:
JMSTaskServer启动过程中业务执行顺序包括如下三步:
1. 实例化 ServerQueue
2. 实例化 ResponseQueue
3. 创建消息队列消费者,监听到ServerQueue
JMSTaskServer 处理AddTaskRequest过程如下图所示:
4. 监听于ServerQueue的消费者获取客户端发送的消息,消息为ObjectMessage,封装着AddTaskRequest,包括客户端发送的Task对象实例
5. 从AddTaskCommand中获取Task实例,通过JPA将Task示例添加到数据库
6. 基于ResponseQueue创建生产者,并创建AddTaskResponse Command,将JPA生成的Task ID封装于AddTaskResponse Command
JMSTaskClientConnector启动连接还是通过两个消息队列ServerQueue和ResponseQueue进行,具体如下图:
1. 实例化 ServerQueue
2. 实例化 ResponseQueue
3. 基于消息队列ServerQueue,创建消息队列生产者
JMSTaskClientConnector处理AddTaskRequest过程如下图所示:
4. JMSTaskClientConnector基于ResponseQueue创建消费者
5. JMSTaskClientConnector基于ServerQueue创建生产者,并发送消息(Task及Content对象)到ServerQueue
6. 监听于ResponseQueue的消费者,消费服务器返回的消息,并进行处理消息,将taskID设置给ResponseHandler
使用JMSTaskClientConnector连接Human Task Service完成一次AddTaskRequest过程消息传递可以分为如下几步: