教为学:JBPM4.4学习之路(三):流程部署的查询、删除、流程图查看
教为学:JBPM4.4学习之路(三):流程部署的查询、删除、流程图查看
前言
数据库有增删改查。
流程部署有什么功能?
JBPM的操作归根结底还是对数据库进行操作。所以理论上,我们对数据库所能执行的操作,流程部署的API都能为我们提供。
我们先上一篇博文所提到的四张表的ER图。
一句话,再怎么强调表结构也不为过。
这节课也是对这几张表的操作。
随着我们的深入学习,这张ER图会越来越大,当所有的表都在这张图里面的时候,我们也学得差不多了。
查询
在查询之前我们先看一张图。
这张图在哪里与数据库中的哪一张表想对应?
1、查询所有部署。
代码:
-
@Test
-
public void testListAllDeploy(){
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
List<Deployment> listDeployments = processEngine.getRepositoryService()
-
.createDeploymentQuery()
-
.list();
-
for (Deployment deployment : listDeployments) {
-
System.out.print("ID:"+deployment.getId());
-
System.out.println(" STATE:"+deployment.getState());
-
}
-
-
}
API详解:
RepositoryService接口:
方法:createDeploymentQuery()
获取一个DeploymentQuery接口。
DeploymentQuery查询接口:
方法:list()
获取Deployment集合。
Deployment:接口。
String getId();
String getName();
long getTimestamp();
String getState();
不解释。
数据库操作:
操作 |
表名 |
次数 |
备注 |
查询 |
JBPM4_PROPERTY |
2 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
2、根据流程ID去查看部署。
代码:
-
@Test
-
public void testGetDeployByID(){
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
Deployment deployment = processEngine.getRepositoryService()
-
.createDeploymentQuery()
-
.deploymentId("10001")
-
.uniqueResult();
-
System.out.print("ID:"+deployment.getId());
-
System.out.println(" STATE:"+deployment.getState());
-
}
API详解:
DeploymentQuery deploymentId(String id);
根据流程ID查询部署流程。
Deployment uniqueResult();
返回唯一的流程部署结果。
数据库操作:
操作 |
表名 |
次数 |
备注 |
查询 |
JBPM4_PROPERTY |
2 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
3、查询所有的流程定义。
源码:
-
@Test
-
public void testAllPD(){
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
List<ProcessDefinition> pdList = processEngine.getRepositoryService()
-
.createProcessDefinitionQuery()
-
.list();
-
for (ProcessDefinition processDefinition : pdList) {
-
System.out.print("ID:"+processDefinition.getId());
-
System.out.print("======Key:"+processDefinition.getKey());
-
System.out.print("======Name:"+processDefinition.getName());
-
System.out.println("======Version:"+processDefinition.getVersion());
-
}
-
}
我觉得没什么API必要详解。因为依样画葫芦也能知道这些API有很么意思。
操作 |
表名 |
次数 |
备注 |
查询 |
JBPM4_PROPERTY |
2 |
|
查询 |
JBPM4_DEPLOYMENT JBPM4_DEPLOYPROP |
1 |
|
查询 |
JBPM4_LOB |
1 |
|
查询 |
JBPM4_DEPLOYPROP |
1 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
|
查询 |
JBPM4_LOB |
1 |
|
查询 |
JBPM4_DEPLOYPROP |
1 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
|
查询 |
JBPM4_LOB |
1 |
|
查询 |
JBPM4_DEPLOYPROP |
1 |
其他的几种查询方式就一一表述了,依样画葫芦吧。
查看流程图
查看流程图第一件事就是从数据库中把流程图取出来。
代码如下:
-
@Test
-
public void testShowImage() throws Exception{
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
InputStream inputStream = processEngine.getRepositoryService()
-
.getResourceAsStream("20001", "qingjia.png");
-
-
OutputStream outputStream = new FileOutputStream("c:"+File.separator+"qingjia.png");
-
int b;
-
while ((b=inputStream.read())!=-1) {
-
outputStream.write(b);
-
}
-
inputStream.close();
-
outputStream.close();
-
}
getResourceAsStream("20001", "qingjia.png")这个应该不需要解释。
操作 |
表名 |
次数 |
备注 |
查询 |
JBPM4_PROPERTY |
2 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
|
查询 |
JBPM4_LOB |
1 |
删除部署
代码:
-
@Test
-
public void testDelete() {
-
ProcessEngine processEngine = Configuration.getProcessEngine();
-
processEngine.getRepositoryService().deleteDeployment("10001");
-
}
deleteDeployment
deleteDeploymentCascade
后者会把子流程一起删除!
操作 |
表名 |
次数 |
备注 |
查询 |
JBPM4_PROPERTY |
2 |
|
查询 |
JBPM4_DEPLOYMENT JBPM4_DEPLOYPROP |
1 |
|
查询 |
JBPM4_LOB |
1 |
|
查询 |
JBPM4_DEPLOYMENT |
1 |
|
查询 |
JBPM4_LOB |
1 |
|
查询 |
JBPM4_DEPLOYPROP |
1 |
|
查询 |
JBPM4_EXECUTION |
1 |
|
更新 |
JBPM4_LOB |
1 |
|
更新 |
JBPM4_DEPLOYPROP |
1 |
|
删除 |
JBPM4_LOB |
2 |
|
删除 |
JBPM4_DEPLOYPROP |
4 |
|
删除 |
JBPM4_DEPLOYMENT |
1 |
总结
很多的时候,所谓的流程管理本质离不开对这几张表的增删改查。
所以,你怎么熟悉这几张表都不过分。
我坚信最好的加明白初学者学习的困难在哪里。
我坚信最好的学学习方法是自己动手。
我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
-----作者: 高鹏