操作数据表
流程定义部署后操作 activiti数据表如下:
act_re_deployment 流程定义部署表,记录流程部署信息
act_re_procdef 流程定义表,记录流程定义信息
act_ge_bytearray 资源表
说明: act_re_deployment 和 act_re_procdef 一对多关系,一次部署在流程部署表生成一条记录,但一次部署可以部署多个流程定义,每个流程定义在流程定义表生成一条记录。每一个流程定义在act_ge_bytearray会存在两个资源记录,bpmn 和 png。
建议: 一次部署一个流程,这样部署表和流程定义表是一对一有关系,方便读取流程部署及流程定义信息。
流程定义部署
// 上传文件部署
@SneakyThrows
public void deploy(String name, MultipartFile file) {
InputStream fileInputStream = file.getInputStream();
String processName = name +".bpmn";
repositoryService
.createDeployment()
// 文件名, 流
.addInputStream(processName, fileInputStream)
// 流程定义名称
.name(name)
// 分类
.category("process")
.deploy();
}
将线下定义的流程部署到 activiti数据库中,这就是流程定义部署,通过调用 activiti的 api将流程定义的 bpmn 文件添加部署到 activiti中,可以将两个文件打成 zip 包进行部署,也可以通过Model进行部署。
流程定义删除
public void deleteDeployment() {
// 流程部署id
String deploymentId = "8801";
// 通过流程引擎获取repositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
//删除流程定义,如果该流程定义已有流程实例启动则删除时出错
repositoryService.deleteDeployment(deploymentId);
//设置true 级联删除流程定义,即使该流程有流程实例启动也可以删除
repositoryService.deleteDeployment(deploymentId, true);
}
说明:
使用 repositoryService 删除流程定义
如果该流程定义下没有正在运行的流程,则可以用普通删除。
如果该流程定义下存在已经运行的流程,使用普通删除报错,可用级联删除方法将流程及相关记录全部删除。项目开发中使用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。
流程定义挂起
repositoryService.suspendProcessDefinitionById 和 repositoryService.suspendProcessDefinitionByKey 方法参数效果自行查询
流程定义查询
repositoryService.createProcessDefinitionQuery()和repositoryService.createNativeProcessDefinitionQuery() 说明:
通过获取查询API进行组装进行查询
createNativeProcessDefinitionQuery 是原生查询