-
Notifications
You must be signed in to change notification settings - Fork 0
Deploy ProcessDefine
scutuyu edited this page May 18, 2018
·
2 revisions
部署之后的流程定义时不能修改的,那如何控制修改呢?使用流程定义的key相同的情况下,实现版本升级。
资源文件夹下保证有leave.bpmn
和leave.png
文件,如果没有png
文件,框架会根据bpmn
文件自动生成png
图片
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deploy = repositoryService.createDeployment() // 创建部署对象
.name("资源文件部署") // 添加部署对象
.addClasspathResource("leave.bpmn") // 加载资源, 当流程定义的key值相同,则版本升级
.addClasspathResource("leave.png") // 加载资源,如果没有加载图片,那么将会自动生成图片存在数据库
.deploy(); // 完成部署
确保资源文件夹下有一个名为leave.zip
的压缩包,且压缩包中有leave.bpmn
和leave.png
文件
RepositoryService repositoryService = processEngine.getRepositoryService();
InputStream inputStream = ResourceUtil.getInputString(this.getClass(), "leave.zip");
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
Deployment deploy = repositoryService.createDeployment() // 创建部署对象
.name("zip方式部署") // 添加部署对象
.addZipInputStream(zipInputStream)
.deploy(); // 完成部署
RepositoryService repositoryService = processEngine.getRepositoryService();
String bpmn = "leave.bpmn";
String png = "leave.png";
InputStream inputStreamBpmn = ResourceUtil.getInputString(this.getClass(), bpmn);
InputStream inputStreamPng = ResourceUtil.getInputString(this.getClass(), png);
Deployment deploy = repositoryService.createDeployment() // 创建部署对象
.name("inputStream流部署") // 添加部署对象
.addInputStream(bpmn, inputStreamBpmn) // 使用资源文件名称(要求与资源文件的名称一致)和输入流完成部署
.addInputStream(png, inputStreamPng) // 使用资源文件名称和输入流完成部署
.deploy(); // 完成部署
public class ResourceUtil {
private static final Logger logger = LoggerFactory.getLogger(ResourceUtil.class);
public static final InputStream getInputString(Class c, String fileName){
if (c == null || fileName == null || "".equals(fileName)){
logger.error("param exception");
return null;
}
return c.getClassLoader().getResourceAsStream(fileName);
}
}
- act_re_deployment(部署对象表)
- act_re_procdef(流程定义表)
- act_ge_bytearray(资源文件表)
- 类加载器加载资源文件,在classpath根目录加载指定文件夹下的指定文件,比如:this.getClass().getClassLoader().getResourceAsStream("dir/file.properties");
- 从当前包下加载指定文件夹下的指定文件,比如:this.getClass().getResourceAsStream("dir/file.properties");
- 从classpath根目录下加载指定文件夹下的指定文件,比如:this.getClass().getResourceAsStream("/dir/file.properties");与第二种方式相比,路径开头多了一个斜杠,多了一个斜杠就和第一种方式一样了