教为学:JBPM4学习之路(二):流程部署
教为学: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:在特性情况也会增加一条记录。
我坚信最好的加明白初学者学习的困难在哪里。
我坚信最好的学学习方法是自己动手。
我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
-----作者: 高鹏
                    
                
                
            
        
浙公网安备 33010602011771号