工作流--JBPM核心服务及表结构
一、 使用JBPM开发工作流的一般流程
1. jBPM的运行需要数据库的支持,因此系统设计时要选定所用数据库。只要是Hibernate支持的数据库,jBPM就支持。数据库的初始化可以由jBPM自动完成,也可以通过ant generate.ddl任务生成SQL语句,在jBPM外部自己创建所需的表。
2. 使用jPdl定义工作流,生成processdinination.xml文件。可以采用GUI工具gpdl,但目前只支持jBPM1.0,而且bug很多。XML的DTD定义文件在jBPM下载包中。
3. Antcreate.pde生成pde包的工作目录。将processdinination.xml文件和其它需要的文件放在指定的目录下,使用ant build.precess.archives生成pde包。pde包的格式采用jar。
4. 更改pde工作目录/src/config/jbpm.properties的相关属性,主要是设定相关的数据库连接信息。注意要将数据库的JDBC驱动放在pde工作目录的lib目录下。
5. Antdeploy.process.archives将刚才生成的pde部署到数据库。实际上就是向数据库插入一些相关数据。
6. 利用jBPM API函数开发相应的工作流程。
二、提供的服务
JBPM为了支持相应的开发,提供了一组服务,如下图:
-管理流程定义
-部署流程定义
-删除流程定义
-查询流程定义
public class HelloTest extends TestCase {
ProcessEngine processEngine;
public setup() {
processEngine = Configuration.getProcessEngine();
}
public void testDeploy(){
RepositoryService rs = processEngine.getRepositoryService();
//发布流程定义
String deploymentId=rs.createDeployment().
addResourceFromClasspath("helloworld.jpdl.xml").deploy();
//获得流程定义
List<ProcessDefinition> list=rs.createProcessDefinitionQuery().list();
System.out.println("list.size():"+list.size());
for (ProcessDefinition pd : list) {
System.out.println("pd.id:"+pd.getId());
}
System.out.println("deploymentId:"+deploymentId);
//删除流程定义
rs.deleteDeploymentCascade(deploymentId);
//删除后查询流程定义
System.out.println("after del list count:" + rs.createProcessDefinitionQuery().list().size());
}
}
-管理流程实例
-发起新流程
-执行等待流程
-查看流程实例
-终止流程实例
-删除流程实例
public class ProcessInstanceTest extends TestCase {
ProcessEngine processEngine;
public ProcessInstanceTest() {
processEngine = Configuration.getProcessEngine();
}
@Override
protected void setUp() throws Exception {
processEngine.getRepositoryService().createDeployment()
.addResourceFromClasspath("helloworld.jpdl.xml").deploy();
}
/**
* 流程实例state节点向下执行
*/
public void testProcessInstance(){
ExecutionService es= processEngine.getExecutionService();
//流程实例
ProcessInstance pi = es.startProcessInstanceByKey("helloworld");
//state向下执行
pi= es.signalExecutionById(pi.getId());
System.out.println("pi.isEnded"+pi.isEnded());
}
/**
* 终止流程实例
*/
public void testProcessInstanceEnd(){
ExecutionService es= processEngine.getExecutionService();
//流程实例
ProcessInstance pi = es.startProcessInstanceByKey("helloworld");
//终止流程实例
es.endProcessInstance(pi.getId(), "结束流程");
}
/**
* 删除流程实例
*/
public void testProcessInstanceDel(){
ExecutionService es= processEngine.getExecutionService();
//流程实例
ProcessInstance pi = es.startProcessInstanceByKey("helloworld");
//删除流程实例
es.deleteProcessInstanceCascade(pi.getId());
}
/**
* 流程实例列表
*/
public void testProcessInstanceList(){
ExecutionService es= processEngine.getExecutionService();
//流程实例
ProcessInstance pi = null;
for (int i = 0; i < 10; i++) {
pi= es.startProcessInstanceByKey("helloworld");
}
//查询流程实例列表
List<ProcessInstance> list= es.createProcessInstanceQuery().list();
//输出列表数到控制台
System.out.println("list.size:"+list.size());
}
}
三、 JBPM表结构介绍
资源库和运行时表结构
1. JBPM4_DEPLOYMENT,JBPM4_DEPLOYPROP,JBPM4_LOB存储流程定义相关的部署信息
2. JBPM4_EXECUTION主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制
3. JBPM4_TASK存放需要人来完成的Activities(活动),需要人来参与完成的Activity 被称为Task
4. JBPM4_PARTICIPATION参与者表,存放参与者信息,参与者的种类有Candidate、Client、Owner、Replaced Assignee和Viewer。而具体的参与者既可以是单一用户,也可以是用户组
5. JBPM4_SWIMLANE泳道表。SwimLane是一种Runtime Process Role。通过SwimLane,多个Task可以一次分配到同一Actor身上 JBPM4_JOB 存放的是Timer 的定义 JBPM4_VARIABLE 存的是进行时的临时变量。
历史数据库表结构
1. JBPM4_HIST_PROCINST流程实例历史表
2. JBPM4_HIST_ACTINST流程节点(活动)历史表
3. JBPM4_HIST_DETAIL保存流程实例、活动实例、任务实例运行过程中历史明细数据
4. JBPM4_HIST_VAR保存历史的流程变量数据
5. JBPM4_HIST_TASK保存历史的任务实例记录
身份认证表
1. JBPM4_ID_GROUP用户组表
2. JBPM_ID_MEMBERSHIP保存用户和用户组之间的关联关系
3. JBPM4_ID_USER用户表
这三张表很常见,基本的权限控制,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足
引擎参数表
1. JBPM4_PROPERTY引擎参数表,记录JBPM的一些引擎参数,会保存一些初始设定的种子数据;例如引擎版本(KEY=db.version) ,ID生成器版本(KEY=next.dbid)、KEY:引擎KEY,比如next.dbid 下次执行的DBID_VERSION:版本号、VALUE:对应的引擎KEY的VALUE;
执行流程后,数据库表变化情况:
发布一个流程deploy后:
jbpm4_deployment新增一条记录
jbpm4_deployprop新增三条记录
jbpm4_lob新增两条记录
开始一个流程startProcessInstanceByKey后:
jbpm4_execution新增一条记录
jbpm4_hist_actinst新增一条记录
jbpm4_hist_procinst新增一条记录
jbpm4_hist_task新增一条记录
jbpm4_task新增一条记录
工作流--JBPM核心服务及表结构的更多相关文章
- Activiti工作流引擎数据库表结构
Activiti工作流引擎数据库表结构 一.数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_ ...
- 工作流 jBMP4.4表结构
(一)资源库和运行时表结构 JBPM4_DEPLOYMENT, JBPM4_DEPLOYPROP, JBPM4_LOB 存储流程定义相关的部署信息 JBPM ...
- Apache activiti5.13工作流框架的表结构详解
1.结构设计 1.1. 逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...
- Activiti工作流数据库表结构
Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*: ...
- Activiti学习(二)数据表结构
Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l ...
- activti表结构
1.结构设计 1.1. 逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...
- JBPM4 常用表结构
JBPM4 常用表结构 第一部分:表结构说明 Jbpm4 共有18张表,如下,其中红色的表为经常使用的表 一:资源库与运行时表结构 1. JBPM4_DEPLOYMENT 流程定义表 2. J ...
- JBPM4 常用表结构及其说明
本文从表结构.操作时表的变化以及jbpm4.4各个包的作用来介绍jbpm的. 第一部分:表结构说明 Jbpm4 共有18张表,如下,其中红色的表为经常使用的表 一:资源库与运行时表结构 1. J ...
- oracle erp 表结构
BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM ...
随机推荐
- 个人学习JQ插件编写成果:little酷炫的图片滑动切换效果
工作一个多月了,好久没来冒冒泡了,看了@wayong的JQ插件教程,自己编写了一个模仿拉勾网首页广告栏滑动特效的JQ插件,现在跟朋友们分享分享! 先上demo链接:http://runjs.cn/de ...
- ASP.NET DataTable的操作大全
DataTable表示一个与内存有关的数据表,可以使用工具栏里面的控件拖放来创建和使用,也可以在编写程序过程中根据需要独立创建和使用,最常见的情况是作为DataSet的成员使用,在这种情况下就需要用在 ...
- 清掉kugo 7 和千千静听的广告
as below,we know Ad is bothering Way to solve it! Original URL :http://tieba.baidu.com/p/1240429497? ...
- Ubuntu 14.04 字体设置
ubuntu 14.04消息公布后,我迫不及待地安装和使用.不知道怎么搞的,整个系统彻底改变了字体.有罪,看. 后来.听说文泉驿米黑效果不错.就试了一下,确实还行. 以下是设置方法: 1.安装文泉驿米 ...
- 校验、AJAX与过滤器
随笔- 65 文章- 1 评论- 343 ASP.Net MVC开发基础学习笔记:四.校验.AJAX与过滤器 一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations( ...
- Hudson安装配置、部署应用及分析
一.部署环境 机器:一台linux虚机,内存1G,操作系统CentOS release 5.6,硬盘100G. 实验应用:乐学方舟后台部署(非正式环境) 应用环境:apache-tomcat-7.0. ...
- E-mail Composition and Decoding
一.邮件涉及协议及本文说明1. 协议 SMTP(Simple Mail Transfer Protocal) 简单邮件传输协议,用于发送邮件. MIME(Mutipurpose Internet Ma ...
- iOS关于应用内分享
iOS7.0增加了AirDrop功能,可知在未来,手机信息资源的直接分享会越来越重要.而我们在iPhone系统短信点击照片会看到右上角的分享按钮,点击可以弹出一系列的应用菜单,允许用户把这张图片分享到 ...
- ubuntu 下面手动安装jdk
ubuntu 下面手动安装jdk 刚才在ubuntu安装jdk和eclipse,感觉主要安装jdk比较麻烦,记录一下笔记以备后面查看 先在官网上下载jdk的tar包:http://www.oracle ...
- Object-c学习之路八(NSArray(数组)遍历和排序)
今天学习了NSArray的遍历和排序,现在在这里做一下总结: 遍历现在实现了四中方法: 排序大概有三中方法:(代码中都有注释) 关于对象的排序还是以Student和Book为例 每个Student持有 ...