JBoss 系列六十二:深入理解 jBPM Human Task - II(使用JMS做传输媒介执行Human Task)

原创 2013年12月02日 10:50:38

 概述

本文是继深入理解 jBPM Human Task - I,对使用JMS做传输类型过程中服务器端和客户端业务逻辑的明细。本文也是基于之前代码分析系列:

本问主要包括:
  • JMSTaskServer 启动过程
  • JMSTaskServer 处理AddTaskRequest过程
  • JMSTaskClientConnector启动连接过程
  • JMSTaskClientConnector处理AddTaskRequest过程

服务器端消息传递过程

JMSTaskServer 启动过程

JMSTaskServer 端主要包括两个消息队列ServerQueue和ResponseQueue,这两个队列负责与客户端进行交互,创建,修改Human Task。如下图所示:


JMSTaskServer启动过程中业务执行顺序包括如下三步:

1. 实例化 ServerQueue

2. 实例化 ResponseQueue

3. 创建消息队列消费者,监听到ServerQueue

JMSTaskServer 处理AddTaskRequest过程

JMSTaskServer 处理AddTaskRequest过程如下图所示:


4. 监听于ServerQueue的消费者获取客户端发送的消息,消息为ObjectMessage,封装着AddTaskRequest,包括客户端发送的Task对象实例

5. 从AddTaskCommand中获取Task实例,通过JPA将Task示例添加到数据库

6. 基于ResponseQueue创建生产者,并创建AddTaskResponse Command,将JPA生成的Task ID封装于AddTaskResponse Command

客户端消息传递过程

JMSTaskClientConnector启动连接过程

JMSTaskClientConnector启动连接还是通过两个消息队列ServerQueue和ResponseQueue进行,具体如下图:


1. 实例化 ServerQueue

2. 实例化 ResponseQueue

3. 基于消息队列ServerQueue,创建消息队列生产者

JMSTaskClientConnector处理AddTaskRequest过程

JMSTaskClientConnector处理AddTaskRequest过程如下图所示:


4. JMSTaskClientConnector基于ResponseQueue创建消费者

5. JMSTaskClientConnector基于ServerQueue创建生产者,并发送消息(Task及Content对象)到ServerQueue

6. 监听于ResponseQueue的消费者,消费服务器返回的消息,并进行处理消息,将taskID设置给ResponseHandler

总结

使用JMSTaskClientConnector连接Human Task Service完成一次AddTaskRequest过程消息传递可以分为如下几步:

  1. 客户端JMSTaskClientConnector和服务器端JMSTaskServer分别启动连接ServerQueue和ResponseQueue
  2. 服务器端JMSTaskServer监听到ServerQueue,等待客户端发送的消息
  3. 客户端JMSTaskClientConnector监听到ResponseQueue,等待服务器端返回消息,同时发送消息(Task及Content对象)给 ServerQueue
  4. 服务器端从ServerQueue消费消息,使用JPA存储 Task及Content,将JPA生成的taskID作为返回消息发送到ResponseQueue
  5. 客户端消费返回消息(taskID),将taskID设置给ResponseHandler

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java NIO Selector

A Selector is a Java NIO component which can examine one or more NIO Channel's, and determine which ...

JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程

概述JBossWeb 是JBoss 中的 Web 容器,他是对 Tomcat 的封装,本文以 Http 连接器为例,简单说明 JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程 。...

JBoss 系列六十一:深入理解 jBPM Human Task - I

概述 Human Task 是BPM流程中的节点必需通过人为的手动操作才能够执行。jBPM 5 通过 User Task(jBPM5示例之 User Task) 节点来支持Human Task。Hum...

深入理解 JBoss 7/WildFly Standalone 模式启动过程

概述JBoss 7/WildFly Standalone 模式启动过程大致如下:启动脚本 standalone.sh 启动 JBoss Modules,JBoss Modules 启动 JBoss M...

JBoss 系列七十二:jBPM 6 新功能/特性介绍(API 层面)

概述 jBPM 6.0 最终版已与上月底发布,与jBPM 5相比有很大变化,本文从API编程的角度去简单说说jBPM 6,本文设计到内容包括: 2个重要的接口运行状态管理jBPM 服务注入 (C...

JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表

JBoss 7中端口使用列表 JBoss 7中所有配置都在一个文件中(standaone*.xml, domain.xml),和之前的JBoss相比JBoss 7用到的端口变少,我们将以表格的形式列出...

JBoss 系列五十二:JBoss 7/WildFly中替换默认的欢迎Web应用

JBoss 7中默认启动后访问http://localhost:8080/会进入到默认的欢迎Web应用欢迎页面,但在实际中我们需要当访问http://localhost:8080/时进入到自己的应用页...

Tomcat,JBoss与JBoss Web

最近接触到应用服务器JBoss,此外JBoss Web与Tomcat也同为web服务器,便查阅资料对三者进行比较,供大家参考。 一、Tomcat         Tomcat 服务器是免费开源...

JBoss 系列二十七:JBoss Data Grid(Infinispan)下载安装和运行

安装Java 安装Infinispan的先决条件只有一个就是Java虚拟机,Java 1.6或以后版本的Java需要安装在您的操作系统上。一个Java虚拟机(JVM)能够创建一个Java二进制码可以运...

JBoss 系列三十四:jBPM5示例之 Looping

Looping流程如下图所示:
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)