JBoss 系列九十九:Rest WebService jBPM 6 集成演示样例
概述
jBPM 6 提供 Rest API 供第三方应用整合使用 jBPM 6,本文演示假设通过 Rest API:
- 启动流程
- 获取流程实例信息
- 启动 User Task
- 完毕 User Task
jBPM 6 中使用 RestEasy 实现 Rest WebService ,所以我们通过 Rest client 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 集成演示样例的更多相关文章
- JBoss 系列一 O O:Maven jBPM 6 集成演示样例
概述 jBPM 6 中底层架构基于 Maven,所以我们能够非常easy的进行 Maven jBPM 6 集成演示样例,本文分三个部分: 基本原理介绍 Maven jBPM 6 集成 jBPM 6 中 ...
- JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...
- JBoss 系列十九:使用JGroups构建块RspFilter对群组通信返回消息进行过滤
内容概述 本部分说明JGroups构建块接口RspFilter,具体提供一个简单示例来说明如何使用JGroups构建块RspFilter对群组通信返回消息进行过滤. 示例描述 我们知道构建块基于通道之 ...
- [hadoop系列]Pig的安装和简单演示样例
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yaho ...
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- CRL快速开发框架系列教程九(导入/导出数据)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十九】
<Web 前端开发精华文章推荐>2013年第七期(总第十九期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- solr与.net系列课程(九)solr5.1的配置
solr与.net系列课程(九)solr5.1的配置 最近一些园友来咨询solr5.1的配置方式,然后我就去官网下载了个最新版本的solr,发现solr5.0以后solr的下载包里的内容发生的变化,移 ...
随机推荐
- 安卓 报错 Check the Eclipse log for stack trace.
移除Android Dependencies就行了. 在properties的Libraries里
- TalkingData游戏版本在Cocos2d-x 3.0使用
Cocos2dx在3.0的版本中改动确实不少啊,所以导致原来可以在Cocos2.x版本上的demo都不能直接用,所以不得不重要写一个新的demo 但是TalkingData的库一直都是可以用的,只是之 ...
- ar命令和nm命令(建库!)
ar 命令详解 今天,跟着我们的技术大牛学了不少东西,首先就是这个ar命令啦. 当我们的程序中有经常使用的模块,而且这些模块在其他程序中也会用到,为了实现代码重用减少软件开发周期,我们可以将它们生成库 ...
- Bootstrap_排版_列表
一.基本列表 <h5>普通列表</h5> <ul> <li>列表项目</li> <li>列表项目</li> < ...
- 深入理解javascript闭包(一)
原文转自脚本之家(http://www.jb51.net/article/24101.htm) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. ...
- C语言对数组取地址
#include <stdio.h> main() { ] = {,,,,}; printf("a=%p\n" , a); printf("a=%p\n&qu ...
- testservice小项目总结
关于自做小项目testservice的总结: 1.Activity与Service的绑定及之间的通信: 1)关于Activity和Service的生命周期的理解: 2)bindService方法中Se ...
- bzoj4160: [Neerc2009]Exclusive Access 2
Description 给出 N 个点M 条边的无向图,定向得到有向无环图,使得最长路最短. N ≤ 15, M ≤ 100 Input 第一行一个数M (1≤M≤100). 接下来M行,每行两个大写 ...
- Skynet:特性收集
基于云风的 blog,收集 skynet 的特性以便将来在代码中一一验证. “ ... ” 部分节选自云风的 BLOG. 1. 基于 Erlang-Actor 模式的 C 实现 “把一个符合规范的 C ...
- Solr4.8.0源码分析(13)之LuceneCore的索引修复
Solr4.8.0源码分析(13)之LuceneCore的索引修复 题记:今天在公司研究elasticsearch,突然看到一篇博客说elasticsearch具有索引修复功能,顿感好奇,于是点进去看 ...