jBPM-4.3 流程定义 zip 包中的所有文件都是资源
ZipInputStream zis = new ZipInputStream(new FileInputStream("process.jpdl.zip"));
processEngine.getRepositoryService().createDeployment().addResourcesFromZipInputStream(zis).deploy();
如果是部署的是 zip 包,那么 zip 包中的所有文件都是可用的资源。换句话说,你可以把杂七杂八的文件都放在 zip 包中一起部署。比如现在我的 process.jpdl.zip 里面不仅有 process.jpdl.xml 和 process.png,还有一个 resource.xml,那么这个 resource.xml 也是可以被获取到的,如:
Set<String> resourceSet = processEngine.getRepositoryService().getResourceNames(deployId);
for (String s : resourceSet) {
System.out.println(s);
}
// Output:
// resource.xml
// process.jpdl.xml
// process.png
除了得到资源的 InputStream 外:
ByteArrayInputStream bis = (ByteArrayInputStream)processEngine.getRepositoryService().getResourceAsStream(deployId, "resource.xml");
资源还可以被动态修改,不过要注意,动态修改资源这个方法在 RepositoryServiceImpl 中,RepositoryService 接口并没有暴露这个方法:
is2 = new FileInputStream("newResource.xml");
RepositoryServiceImpl rsi = (RepositoryServiceImpl)processEngine.getRepositoryService();
rsi.updateDeploymentResource(deployId, "resource.xml", is2);
这样就把 newResource.xml 的内容写入了 resource.xml 中(覆盖原有内容),此时再获取 resource.xml 的 InputStream,输出出来的结果就是 newResource.xml 的内容
Comments