JBoss 系列九十九:Rest WebService jBPM 6 集成示例

概述

jBPM 6 提供 Rest API 供第三方应用整合使用 jBPM 6,本文演示如果通过 Rest API:

  • 启动流程
  • 获取流程实例信息
  • 启动 User Task
  • 完成 User Task

jBPM 6 中使用 RestEasy 实现 Rest WebService ,所以我们通过 Rest 客户端 API 与 jBPM 6 所提供的 Rest API 交互。

本文所使用的流程如下

如上流程只有一个 User Task 节点,User Task 执行开始和执行结束都输出相关提示。流程 ID为 org.brms.test,节点名字为 Test,执行节点需要的 userID 为 kylin,角色为 IT。

为方便观察,我们需要 jBPM 6 使用 Mysql 替换默认的 H2 数据库

启动流程

启动流程 Rest API 如下:

/runtime/{id: [a-zA-Z0-9-:\\.]+}")/process/{id: [a-zA-Z0-9-:\\.]+}/start

运行 RestEasyClientProcessStart.java 启动流程,启动流程后我们到数据库中查看:

mysql> select id, duration, start_date, end_date, processId, processInstanceId, processName, status from ProcessInstanceLog;
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+
| id | duration | start_date          | end_date            | processId     | processInstanceId | processName | status |
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+
|  1 |    51569 | 2014-05-10 21:17:20 | 2014-05-10 21:18:11 | org.brms.test |                 1 | test        |      2 |
|  2 |  3770025 | 2014-05-10 21:24:57 | 2014-05-10 22:27:47 | org.brms.test |                 2 | test        |      2 |
|  3 |  4060507 | 2014-05-10 21:25:33 | 2014-05-10 22:33:13 | org.brms.test |                 3 | test        |      2 |
|  4 |  2620216 | 2014-05-10 21:49:41 | 2014-05-10 22:33:21 | org.brms.test |                 4 | test        |      2 |
|  5 |  2561315 | 2014-05-10 21:50:49 | 2014-05-10 22:33:30 | org.brms.test |                 5 | test        |      2 |
|  6 |  2557182 | 2014-05-10 21:51:01 | 2014-05-10 22:33:38 | org.brms.test |                 6 | test        |      2 |
|  7 |  2558504 | 2014-05-10 21:51:07 | 2014-05-10 22:33:45 | org.brms.test |                 7 | test        |      2 |
|  8 |     NULL | 2014-05-11 13:21:05 | NULL                | org.brms.test |                 1 | test        |      1 |
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+

如上ProcessInstanceLog表中 ID 为 8 的;流程示例为我们通过 Rest API 启动的流程实例,注意,status列为1表示流程未被执行。

获取流程实例

获取流程实例 Rest API 如下:

/runtime/{id: [a-zA-Z0-9-:\\.]+}")/process/instance/{id: [0-9]+}

运行 RestEasyClientGetProcessInstance.java获取流程实例 ,我们运行结果会有如下输出

ProcessInstance 1 [processId=org.brms.test,state=1]

注意,我们测试流程的ID 为 org.brms.test,数据库中 processInstanceId 为 1,所以我们的 Rest Path如下:

http://localhost:8080/business-central/rest/runtime/org.kie.example:project1:1.0.0-SNAPSHOT/process/instance/1

开始 User Task

开始 User Task Rest API 如下:

/task/execute{id: \\d+}/start

运行RestEasyClientTaskStart.java 开始执行 User Task ,开始执行之前我们首先到数据库中看当前 User Task  的信息:

mysql> select id, createdOn, deploymentId, processInstanceId, processId, status, createdBy_id from Task;
+----+---------------------+-----------------------------------------+-------------------+---------------+----------+--------------+
| id | createdOn           | deploymentId                            | processInstanceId | processId     | status   | createdBy_id |
+----+---------------------+-----------------------------------------+-------------------+---------------+----------+--------------+
|  1 | 2014-05-11 13:21:05 | org.kie.example:project1:1.0.0-SNAPSHOT |                 1 | org.brms.test | Reserved | kylin        |
+----+---------------------+-----------------------------------------+-------------------+---------------+----------+--------------+

注意,此 Task 与 processInstanceId 为 1 的流程示例关联,当前状态没有开始。

运行RestEasyClientTaskStart.java 开始执行 User Task ,执行之后我们同样到数据库查看当前 User Task  的信息:

mysql> select id, createdOn, deploymentId, processInstanceId, processId, status, createdBy_id from Task;
+----+---------------------+-----------------------------------------+-------------------+---------------+------------+--------------+
| id | createdOn           | deploymentId                            | processInstanceId | processId     | status     | createdBy_id |
+----+---------------------+-----------------------------------------+-------------------+---------------+------------+--------------+
|  1 | 2014-05-11 13:21:05 | org.kie.example:project1:1.0.0-SNAPSHOT |                 1 | org.brms.test | InProgress | kylin        |
+----+---------------------+-----------------------------------------+-------------------+---------------+------------+--------------+

主要当前 Task 的状态改变为 InProgress。

完成User Task

完成User Task Rest API 如下:

/task/execute{id: \\d+}/complete

运行 RestEasyClientTaskComplete.java可以完成 User Task ,执行完成后去数据库查看当前 User Task  的信息:

mysql> select id, createdOn, deploymentId, processInstanceId, processId, status, createdBy_id from Task;
Empty set (0.00 sec)

如上数据库中没有Task信息,即jBPM 中当某一 Task 执行完成后会将其的信息删除,如果我们接着去查看流程实例的信息:

mysql> select id, duration, start_date, end_date, processId, processInstanceId, processName, status from ProcessInstanceLog;
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+
| id | duration | start_date          | end_date            | processId     | processInstanceId | processName | status |
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+
|  1 |    51569 | 2014-05-10 21:17:20 | 2014-05-10 21:18:11 | org.brms.test |                 1 | test        |      2 |
|  2 |  3770025 | 2014-05-10 21:24:57 | 2014-05-10 22:27:47 | org.brms.test |                 2 | test        |      2 |
|  3 |  4060507 | 2014-05-10 21:25:33 | 2014-05-10 22:33:13 | org.brms.test |                 3 | test        |      2 |
|  4 |  2620216 | 2014-05-10 21:49:41 | 2014-05-10 22:33:21 | org.brms.test |                 4 | test        |      2 |
|  5 |  2561315 | 2014-05-10 21:50:49 | 2014-05-10 22:33:30 | org.brms.test |                 5 | test        |      2 |
|  6 |  2557182 | 2014-05-10 21:51:01 | 2014-05-10 22:33:38 | org.brms.test |                 6 | test        |      2 |
|  7 |  2558504 | 2014-05-10 21:51:07 | 2014-05-10 22:33:45 | org.brms.test |                 7 | test        |      2 |
|  8 |  1069981 | 2014-05-11 13:21:05 | 2014-05-11 13:38:54 | org.brms.test |                 1 | test        |      2 |
+----+----------+---------------------+---------------------+---------------+-------------------+-------------+--------+

我们可以发现 ID 为 8,processInstanceId 为 1的流程 status栏变为 2,这表明流程已经执行完成,我们也可以发现流程开始时间为 2014-05-11 13:21:05,结束时间为 2014-05-11 13:38:54,执行的周期(duration)为 1069981 毫秒。

JBoss 系列九十九:Rest WebService jBPM 6 集成示例,布布扣,bubuko.com

时间: 2024-07-30 16:24:40

JBoss 系列九十九:Rest WebService jBPM 6 集成示例的相关文章

JBoss 系列一 O O:Maven jBPM 6 集成示例

概述 jBPM 6 中底层架构基于 Maven,所以我们可以很容易的进行 Maven jBPM 6 集成示例,本文分三个部分: 基本原理介绍 Maven jBPM 6 集成 jBPM 6 中使用 Maven 特性实时监听服务器端的更新 基本原理介绍 如下图 如图所示,我们有两台服务器,jBPM 6 服务器和客户端服务器: 首先 jBPM 6 服务器如果我们通过 Work Bench 将编辑完成的流程打包发布,它会将其发布到 jBPM 6 服务器对应的 Maven 仓库,这个仓库相比较客户端的应用

JBoss 系列九十八:JBoss MSC - 浅析 ServiceContainer

ServiceContainer 接口类图 ServiceContainer 接口类图如下所示: 如图: ServiceContainer - ServiceContainer 即是 JBoss MSC 的抽象,它抽象的是一个模块化的容器,它设计用来管理一系列服务 ServiceTarget - 提供了添加服务,添加依赖等方法,另外这些添加只有在ServiceBuilder 的 install() 方法后才生效 ServiceRegistry - 服务注册接口,可根据服务名获取一个服务,或获取所

JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MSC 替换了之前的 JMX Kernel 和 MicroContainer,它主要特定能够总结例如以下三点: 高并发容器(A highly concurrent state machine) 无多相位,设计简单(No multiple phases, much simpler) 不依赖 JMX 和 J

JBoss 系列九十六:JBoss MSC - 简单介绍及一个简单示例

什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MSC 替换了之前的 JMX Kernel 和 MicroContainer,它主要特定可以总结如下三点: 高并发容器(A highly concurrent state machine) 无多相位,设计简单(No multiple phases, much simpler) 不依赖 JMX 和 Jav

JBoss 系列九十七:JBoss MSC - 浅析 ServiceName

概述 JBoss MSC 是WildFly 8 和 JBoss 7的底层容器.它管理 JBoss 中的所有 Service,JBoss 中的每一个Service都有一个名字,JBoss MSC通过 ServiceName 对象来抽象Service的名字,ServiceName 代吗链接:ServiceName.java,类图如下: 树状结构 WildFly 中的一切都是一个Service,每个 Service 都有一个名字,Service 之间有树形关系,所以 ServiceName 也是树状结

JBoss 系列一 O O:Maven jBPM 6 集成演示样例

概述 jBPM 6 中底层架构基于 Maven,所以我们能够非常easy的进行 Maven jBPM 6 集成演示样例,本文分三个部分: 基本原理介绍 Maven jBPM 6 集成 jBPM 6 中使用 Maven 特性实时监听server端的更新 基本原理介绍 例如以下图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3lsaW5zb29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss

[C# 网络编程系列]专题九:实现类似QQ的即时通信程序

转自:http://www.cnblogs.com/zhili/archive/2012/09/23/2666987.html 引言: 前面专题中介绍了UDP.TCP和P2P编程,并且通过一些小的示例来让大家更好的理解它们的工作原理以及怎样.Net类库去实现它们的.为了让大家更好的理解我们平常中常见的软件QQ的工作原理,所以在本专题中将利用前面专题介绍的知识来实现一个类似QQ的聊天程序. 一.即时通信系统 在我们的生活中经常使用即时通信的软件,我们经常接触到的有:QQ.阿里旺旺.MSN等等.这些

SHUOJ1857 Yaoge鸡排系列之九——好多鸡排!!!【矩阵快速幂】

转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://202.121.199.212/JudgeOnline/problem.php?id=1857 1857: Yaoge鸡排系列之九——好多鸡排!!! Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 98  Solved: 6 Description Yaoge买了n块鸡排,其中第n块鸡排的质量为M(n),同时

单片机入门指南系列(九) 用万用焊板搭建实验电路

原文发表自我的个人主页:http://purplesword.info/mcu-primer-9 ,欢迎大家访问,多谢支持~ 这一篇我们继续上篇的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路.在此之前,先普及几点基础知识. 1.电路板 首先我们了解下电路板.前面介绍了面包板可以搭建电路,但是在实际制作出来的电子设备中,我们用的通常都是电路板.电路板主要用于固定元器件,对元器件之间进行可靠的连接. 电路板基板常用不易燃烧的玻璃纤维.酚醛树脂.电木等材料制作.电路连接使用附着在其表面的铜皮