JBPM4学习之路(二):流程部署
-
画流程图
要部署流程,得先有流程,要有流程,得先有流程图,那要流程图,得画呗。我们画的流程图如下:
步骤:
- 拖一个开始节点,一个结束节点,两个任务节点。
- 设置两个任务节点。
- 第一个任务节点的设置如下。
- 第二个任务节点设置如下。
- 整个流程图的设置如下。
- 连线。
- XML文件的内容如下:
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<process name="qingjia" xmlns="http://jbpm.org/4.4/jpdl">
-
<start g="293,63,48,48" name="start1">
-
<transition g="-69,-22" name="to 申请请假" to="申请请假"/>
-
</start>
-
<end g="290,375,48,48" name="end1"/>
-
<task assignee="张三" g="272,160,92,52" name="申请请假">
-
<transition g="-69,-22" name="to 批复请假" to="批复请假"/>
-
</task>
-
<task g="270,261,92,52" name="批复请假" assignee="李四">
-
<transition g="-50,-22" name="to end1" to="end1"/>
-
</task>
-
</process>
流程图画了,也自动生成了"流程图"。
部署流程
部署流程的代码:
-
@Test
-
public void testDeploy() {
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
processEngine.getRepositoryService()
-
.createDeployment()
-
.addResourceFromClasspath("qingjia.jpdl.xml")
-
.addResourceFromClasspath("qingjia.png")
-
.deploy();
-
}
这几行代码对数据库的操作。
先解释几行代码和类。
ProcessEngine接口:流程引擎接口,是所有服务的起点。是线程安全的。
方法:
getRepositoryService():获取RepositoryService对象。
Configuration类:配置类,用来读取配置文件,产生流程引擎类。
方法:
getProcessEngine():获取流程引擎对象。
RepositoryService接口:流程服务接口。提供对流程的部署、查询、删除操作。
方法:
createDeployment():创建一个部署产生一个NewDeployment。
NewDeployment接口。
方法
addResourceFromClasspath():添加资源。//根据资源类型的不同,这里提供了几种方法。暂时不一一列举了。
deploy():产生一个真实的部署。
首次:
操作
表名
次数
备注
查询
JBPM4_PROPERTY
4
插入
JBPM4_PROPERTY
1
查询
JBPM4_PROPERTY
1
更新
JBPM4_PROPERTY
1
查询
JBPM4_LOB
2
插入
JBPM4_DEPLOYMENT
1
插入
JBPM4_LOB
2
插入
JBPM4_DEPLOYPROP
1
更新
JBPM4_DEPLOYPROP
1
更新
JBPM4_LOB
2
更新
JBPM4_DEPLOYPROP
1
查询
JBPM4_DEPLOYMENT
JBPM4_DEPLOYPROP
4
插入
JBPM4_DEPLOYPROP
3
更新
JBPM4_DEPLOYPROP
6
其他部署:
操作
表名
次数
备注
查询
JBPM4_PROPERTY
3
更新
JBPM4_PROPERTY
1
查询
JBPM4_LOB
2
插入
JBPM4_DEPLOYMENT
1
插入
JBPM4_LOB
2
插入
JBPM4_DEPLOYPROP
1
更新
JBPM4_DEPLOYPROP
1
更新
JBPM4_LOB
2
更新
JBPM4_DEPLOYPROP
1
查询
JBPM4_DEPLOYMENT
JBPM4_DEPLOYPROP
4
插入
JBPM4_DEPLOYPROP
3
更新
JBPM4_DEPLOYPROP
6
查询和跟新,我现在水平不够管不了,先不管,看看插入。
JBPM4_PROPERTY:
我找了很多资料,也没找到对这张表确切的定义,以及其表字段的明确所指。所以,我谈谈我的理解。
- KEY_:这个值永远不变?还是我见识不够,会有新的产生?或者为什么做预留?里面的值是next.dbid
- VALUE_:和KEY_下一次部署的dbid值。
- VERSION:不明白为什么叫版本?指的KEY-VALUE的版本?反正每部署一次,加一。
JBPM4_DEPLOYMENT:
流程定义表。
- OBID_:其实就是主键ID,流程的OBID是由JBPM4_PROPERTY的next.obid的值在部署的时候决定的。
- NAME_:流程模板名称。//暂时没搞懂由哪里决定的。
- TIMESTAMP_:时间戳。//暂时不知道有什么用。
- STATE_:状态。
JBPM4_DEPLOYPROP:
流程定义属性表。
- OBID_: 主键ID,同一个部署流程是在JBPM4_DEPLOYMENT的OBID_的基础上进行加法操作。比如JBPM4_DEPLOYMENT的OBID_是20001,这里可能是20002、20003,以此类推。
- DEPLOYMENT_:JBPM4_DEPLOYMENT主键的外键,也就是流程ID。
- OBJNAME_:流程名称。
-
KEY_:类型。
Langid:语言版本
Pdid:流程定义名称和版本号。
Pdkey:流程定义名称。
Pdversion:流程定义版本号。
- STRINGVAL_:类型字符串的值。
- LONGVAL_:类型数值。
JBPM4_LOB:
流程图资源存储表。
- OBID_: 主键ID,同一个部署流程是在JBPM4_DEPLOYMENT的OBID_的基础上进行加法操作。比如JBPM4_DEPLOYMENT的OBID_是20001,这里可能是20002、20003,以此类推。
- DBVERSION_:版本。
- BLOB_VALUE_:流程图的资源。
- DEPLOYMENT_:JBPM4_DEPLOYMENT主键的外键,也就是流程ID。
- NAME_:流程图资源名字。
部署流程对表的添加操作
发布一个流程deploy后
JBPM4_PROPERTY:新增一条记录
JBPM4_DEPLOYPROP:新增三条记录
JBPM4_LOB:新增若干条记录(不定)
JBPM4_PROPERTY:在特性情况也会增加一条记录。