zoukankan      html  css  js  c++  java
  • 流程部署的查询、删除、流程

    流程部署的查询、删除、流程

    1. 我坚信初学者更加明白初学者学习的困难在哪里。
    2. 我坚信最好的学习资料是自己亲手记录。
    3. 我坚信最好的学习方法是自己动手。
    4. 我坚信最好的检验方式就是能把自己所学到的东西转手教给别人。
    5. -----作者: 高鹏

      教为学:JBPM4.4学习之路(三):流程部署的查询、删除、流程图查看

      前言

      数据库有增删改查。

      流程部署有什么功能?

      JBPM的操作归根结底还是对数据库进行操作。所以理论上,我们对数据库所能执行的操作,流程部署的API都能为我们提供。

      我们先上一篇博文所提到的四张表的ER图。

      一句话,再怎么强调表结构也不为过。

      这节课也是对这几张表的操作。

      随着我们的深入学习,这张ER图会越来越大,当所有的表都在这张图里面的时候,我们也学得差不多了。

      查询

      在查询之前我们先看一张图。

      这张图在哪里与数据库中的哪一张表想对应?

      1、查询所有部署。

      代码:

      1. @Test
      2.    public void testListAllDeploy(){
      3.       ProcessEngine processEngine = Configuration.getProcessEngine();
      4.        List<Deployment> listDeployments = processEngine.getRepositoryService()
      5.        .createDeploymentQuery()
      6.        .list();
      7.       for (Deployment deployment : listDeployments) {
      8.          System.out.print("ID:"+deployment.getId());
      9.          System.out.println(" STATE:"+deployment.getState());
      10.       }
      11.  
      12.    }

      API详解:

      RepositoryService接口:

      方法:createDeploymentQuery()

      获取一个DeploymentQuery接口。

      DeploymentQuery查询接口:

      方法:list()

      获取Deployment集合。

      Deployment:接口。

      String getId();

      String getName();

      long getTimestamp();

      String getState();

      不解释。

      数据库操作:

      操作

      表名

      次数

      备注

      查询

      JBPM4_PROPERTY

      2

       

      查询

      JBPM4_DEPLOYMENT

      1

       

      2、根据流程ID去查看部署。

      代码:

      1. @Test
      2.    public void testGetDeployByID(){
      3.       ProcessEngine processEngine = Configuration.getProcessEngine();
      4.       Deployment deployment = processEngine.getRepositoryService()
      5.       .createDeploymentQuery()
      6.       .deploymentId("10001")
      7.       .uniqueResult();
      8.       System.out.print("ID:"+deployment.getId());
      9.       System.out.println(" STATE:"+deployment.getState());
      10.    }

      API详解:

      DeploymentQuery deploymentId(String id);

      根据流程ID查询部署流程。

      Deployment uniqueResult();

      返回唯一的流程部署结果。

      数据库操作:

      操作

      表名

      次数

      备注

      查询

      JBPM4_PROPERTY

      2

       

      查询

      JBPM4_DEPLOYMENT

      1

       

      3、查询所有的流程定义。

      源码:

      1. @Test
      2.    public void testAllPD(){
      3.       ProcessEngine processEngine = Configuration.getProcessEngine();
      4.       List<ProcessDefinition> pdList = processEngine.getRepositoryService()
      5.       .createProcessDefinitionQuery()
      6.       .list();
      7.       for (ProcessDefinition processDefinition : pdList) {
      8.          System.out.print("ID:"+processDefinition.getId());
      9.          System.out.print("======Key:"+processDefinition.getKey());
      10.          System.out.print("======Name:"+processDefinition.getName());
      11.          System.out.println("======Version:"+processDefinition.getVersion());
      12.       }
      13.    }

      我觉得没什么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

       

      其他的几种查询方式就一一表述了,依样画葫芦吧。

      查看流程图

      查看流程图第一件事就是从数据库中把流程图取出来。

      代码如下:

      1. @Test
      2.    public void testShowImage() throws Exception{
      3.       ProcessEngine processEngine = Configuration.getProcessEngine();
      4.       InputStream inputStream = processEngine.getRepositoryService()
      5.       .getResourceAsStream("20001", "qingjia.png");
      6.  
      7.       OutputStream outputStream = new FileOutputStream("c:"+File.separator+"qingjia.png");
      8.       int b;
      9.       while ((b=inputStream.read())!=-1) {
      10.          outputStream.write(b);
      11.       }
      12.       inputStream.close();
      13.       outputStream.close();
      14.    }

      getResourceAsStream("20001", "qingjia.png")这个应该不需要解释。

      操作

      表名

      次数

      备注

      查询

      JBPM4_PROPERTY

      2

       

      查询

      JBPM4_DEPLOYMENT

      1

       

      查询

      JBPM4_LOB

      1

       

      删除部署

      代码:

      1. @Test
      2.    public void testDelete() {
      3.       ProcessEngine processEngine = Configuration.getProcessEngine();
      4.       processEngine.getRepositoryService().deleteDeployment("10001");
      5.    }

      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

       

      总结

      很多的时候,所谓的流程管理本质离不开对这几张表的增删改查。

      所以,你怎么熟悉这几张表都不过分。

  • 相关阅读:
    C#与C++与互操作
    WPF GridView动态添加项并读取数据
    C#使用消息队列(MSMQ)
    使用代码浏览WPF控件模版
    PowerShell将运行结果保存为文件
    opencv + ffmpeg
    vmware
    HttpComponents Downloads
    pytorch 安装
    opencv 3.4.0 的编译
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3113318.html
Copyright © 2011-2022 走看看