概要
通过流程定义模型,进行部署流程定义,部署后会生成流程定义数据(相当于java类),此时生成的流程定义数据 主要用于生成流程实例(相当于java对象),一个流程定义 Java 类对应的可以创建无数个 java 流程实例对象。
通过 .zip 压缩包 部署 流程定义
@Autowired
private RepositoryService repositoryService;
@Test
public void deployByZip() throws Exception {
File file = new File("D:/leave.zip");
String filename = file.getName();
// 压缩包输入流
ZipInputStream zipis = new ZipInputStream(new FileInputStream(file));
// 创建部署实例
DeploymentBuilder deployment = repositoryService.createDeployment();
// 添加zip流
deployment.addZipInputStream(zipis);
// 部署名称
deployment.name(filename.substring(0, filename.indexOf(".")));
// 执行部署流程定义
deployment.deploy();
}
部署流程定义涉及表:
- ACT_RE_PROCDEF 新增数据: 流程定义数据
- ACT_RE_DEPLOYMENT 新增数据: 流程部署数据
- ACT_GE_BYTEARRAY 新增数据:将当前流程图绑定到此流程定义部署数据上
- ACT_RE_MODEL 更新部署id
通过 .bpmn 或 .bpmn.xml 文件 部署 流程定义
@Test
public void deployByBpmnFile() throws Exception {
// .bpmn 文件
File file = new File("d:/leave.bpmn20.xml");
// .bpmn20.xml 文件
//File file = new File("D:/请假流程模型.bpmn20.xml");
String filename = file.getName();
// 输入流
FileInputStream input = new FileInputStream(file);
// 创建部署实例
DeploymentBuilder deployment = repositoryService.createDeployment();
// bpmn20.xml 或 .bpmn (activiti5.10版本以上支持)
deployment.addInputStream(filename, input);
// 执行流程定义部署
deployment.deploy();
}
删除流程定义部署信息
@Test
public void delete() {
// 部署ID
String deploymentId = "aae0eb2b-cc11-11ec-ada5-28d0ea3dce6b";
// 不带级联的删除:如果有正在执行的流程,则删除失败抛出异常;不会删除 ACT_HI_和 历史表数据
repositoryService.deleteDeployment(deploymentId);
// 级联删除:不管流程是否启动,都能可以删除;并删除历史表数据。
//repositoryService.deleteDeployment(deploymentId, true);
}