「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战」
功能: 对流程的添加修改删除,主要是操作act_ge_nytearray
、act_re_deployment
、act_re_procdef
三张表
管理流程定义
- 获取流程引擎
- 部署流程【两种方式】
- 查询流程部署信息
- 启动流程
部署流程的方式
- 使用ClasspathResource部署
- 使用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();
- 查询条件
- deploymentId();根据部署Id去查询
- deploymentName();根据部署名称去查询
- deploymentTenantId();根据tenantId查询
- deploymentNameLike();根据部署名称模糊查询
- deploymentTenantIdLike();根据tenantId迷糊查询
- 查询排序
- orderByDeploymentId().asc();升序,默认
- orderByDeploymentId().desc();降序
>前面的也可以更改,表示根据哪个字段进行排序 3. 查询结果集 >1. .list();查询返回list集合 >2. .listPage();分页查询返回list集合,其中传入两个参数,表示从第多少个开始查询多少个 >3. .singleResult();返回单个对象(根据id查询就会返回单挑数据) >4. .count();查询部署的数量
查询流程定义(act_re_procdef)
repositoryService.createProcessDefinitionQuery();
- 查询条件,略,查询条件非常多,输出同归
- 排序,略
- 查询结果集,略
删除流程定义(删除的是部署信息)
删除的条件有三种
- deleteDeployment(deploymentId);
根据流程部署id删除,如果需要删除id正在启动中,就会报错,因为有外键约束,Task表中有这个流程的启动信息,所以无法删除
- deleteDeployment(deploymentId,true/false);
也是根据流程部署id删除,如果正在执行,会连同别的表中的启动信息也删除,
act_ru_*
和act_hi_*
。相当于上下两个方法的中间方法 - deleteDeploymentCascade(deploymentId);
等同于上面为true的情况
修改流程定义
一般都不会去修改
查询流程图
使用流程定义id
repositporyService.getProcessDiagram(流程定义id);返回的是一个InputStream信息
复制代码
使用流程部署id
扫描二维码关注公众号,回复:
13171529 查看本文章
首先使用部署id查询到流程定义id
再使用流程定义id查到流程图
复制代码
查询最新版本流程定义
可以根据流程定义中的版本号进行排序