教为学: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
总结
很多的时候,所谓的流程管理本质离不开对这几张表的增删改查。
所以,你怎么熟悉这几张表都不过分。