activity的管理流程

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

功能: 对流程的添加修改删除,主要是操作act_ge_nytearrayact_re_deploymentact_re_procdef三张表

管理流程定义

  1. 获取流程引擎
  2. 部署流程【两种方式】
  3. 查询流程部署信息
  4. 启动流程

部署流程的方式

  1. 使用ClasspathResource部署
  2. 使用zip部署
    //注意,这个zip文件就是对应的.bpmn和.png文件进行压缩后的文件
    InputStream inputStream=this.getClass().getResourceAsStream("/xxx.zip");
    //这个路径加/和不加的区别:
    //1. 不加就是代表从这个包中找对应的文件
    //2. 加/就是代表从classpath的根木录中找文件
    ZipInputStream zipInputStream=new ZipInputStream(inputStream);
    //转换成ZipInputStream
    repositoryService.createDeployment().name().addZipInputStream(zipInputStream).deploy();
    复制代码

部署一次数据库中流程部署对象就有一条语句
但是对应的key和name是相同的,所以此时如果启动,启动的就是版本字段中最新的那个

查询流程部署信息(act_re_deployment)

repositoryService.createDeploymentQuery();

  1. 查询条件
    1. deploymentId();根据部署Id去查询
    2. deploymentName();根据部署名称去查询
    3. deploymentTenantId();根据tenantId查询
    4. deploymentNameLike();根据部署名称模糊查询
    5. deploymentTenantIdLike();根据tenantId迷糊查询
  2. 查询排序
    1. orderByDeploymentId().asc();升序,默认
    2. orderByDeploymentId().desc();降序

>前面的也可以更改,表示根据哪个字段进行排序 3. 查询结果集 >1. .list();查询返回list集合 >2. .listPage();分页查询返回list集合,其中传入两个参数,表示从第多少个开始查询多少个 >3. .singleResult();返回单个对象(根据id查询就会返回单挑数据) >4. .count();查询部署的数量

查询流程定义(act_re_procdef)

repositoryService.createProcessDefinitionQuery();

  1. 查询条件,略,查询条件非常多,输出同归
  2. 排序,略
  3. 查询结果集,略

删除流程定义(删除的是部署信息)

删除的条件有三种

  1. deleteDeployment(deploymentId);

    根据流程部署id删除,如果需要删除id正在启动中,就会报错,因为有外键约束,Task表中有这个流程的启动信息,所以无法删除

  2. deleteDeployment(deploymentId,true/false);

    也是根据流程部署id删除,如果正在执行,会连同别的表中的启动信息也删除,act_ru_*act_hi_*。相当于上下两个方法的中间方法

  3. deleteDeploymentCascade(deploymentId);

    等同于上面为true的情况

修改流程定义

一般都不会去修改

查询流程图

使用流程定义id

repositporyService.getProcessDiagram(流程定义id);返回的是一个InputStream信息
复制代码

使用流程部署id

首先使用部署id查询到流程定义id
再使用流程定义id查到流程图
复制代码

查询最新版本流程定义

可以根据流程定义中的版本号进行排序

猜你喜欢

转载自juejin.im/post/7031111544532369415