1.流程部署的几种方式:
/**部署流程定义(根据ui.modeler的 modelId部署)
* @param modelId 模型ID
* @from fhadmin.cn
*/
protected String deploymentProcessDefinitionFromUIModelId(String modelId) throws Exception{
Model model = modelService.getModel(modelId);
BpmnModel bpmnModel = modelService.getBpmnModel(model);
Deployment deployment = repositoryService.createDeployment()
.name(model.getName())
.addBpmnModel(model.getKey() + ".bpmn", bpmnModel).deploy();
return deployment.getId(); //部署ID
}
/**部署流程定义(从Classpath)
* @param name //部署名称
* @param xmlpath //xml文件路径
* @param pngpath //png文件路径
* @from fhadmin.cn
*/
protected String deploymentProcessDefinitionFromClasspath(String name, String xmlpath, String pngpath){
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); //创建部署对象
deploymentBuilder.name(name); //部署名称
deploymentBuilder.addClasspathResource(xmlpath); //从文件中读取xml资源
deploymentBuilder.addClasspathResource(pngpath); //从文件中读取png资源
Deployment deployment = deploymentBuilder.deploy(); //完成部署
return deployment.getId(); //部署ID
}
/**部署流程定义(从zip压缩包)
* @param name //部署名称
* @param zippath //zip文件路径
* @from fhadmin.cn
* @throws FileNotFoundException
*/
protected String deploymentProcessDefinitionFromZip(String name, String zippath) throws Exception{
File outfile = new File(zippath);
FileInputStream inputStream = new FileInputStream(outfile);
ZipInputStream ipInputStream = new ZipInputStream(inputStream);
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment(); //创建部署对象
deploymentBuilder.name(name); //部署名称
deploymentBuilder.addZipInputStream(ipInputStream);
Deployment deployment = deploymentBuilder.deploy(); //完成部署
ipInputStream.close();
inputStream.close();
return deployment.getId(); //部署ID
}
2.部署相关的表
1.act_re_deployment:流程模型部署对象表
每部署一次生成一条记录,首先生成这条数据,它的id主键将会被act_re_procdef和act_ge_bytearray作为外键。
2.act_re_procdef:流程定义表
每次部署生成一条或多条,一次部署可能采用zip/bar进行部署,里面是有多份流程定义文件xml的,这时候act_re_deployment只有一条部署信息,但act_re_procdef有多个记录(一个流程定义对应一条),这个表有DEPLOYMENT_ID_外键字段,用它关联act_re_deployment(相同的流程版本号会加1)
3.act_ge_bytearray:资源文件表
流程模型资源文件的真正存放地方,它每部署一次就会产生2条记录,一条是关于bpmn规范的文件内容存放在BYTES字段中,另一条是图片信息,采用二进制格式存储。 提示:可以部署后解析bpmn文件的内容自动生成流程图,实现流程图的跟踪线路。
4.act_re_model:这张表,在xml进行部署时,它没有内容(flowable放弃了此表改用act_de_model保存流程模型信息)
参考:
https://www.cnblogs.com/yangjiming/p/10972255.html
flowable实战(二)flowable流程模型管理接口_flowable中的modelservice-CSDN博客
https://www.cnblogs.com/m13002622490/archive/2022/05/30/16326934.html