public R test(String name){
InputStream in=this.getClass().getClassLoader().
getSystemResourceAsStream("processes/leave.zip");
ZipInputStream zipInputStream=new ZipInputStream(in);
Deployment deploy=processEngine.getRepositoryService()
.createDeployment()
.addZipInputStream(zipInputStream)
.name("leave.bpmn20.xml")
.deploy();
}
我使用这种方式进行工作流部署的时候只对部署单元(ACT_RE_DEPLOYMENT)和资源(ACT_GE_BYTEARRAY)进行插入,没有去部署流程(ACT_RE_PROCDEF)。
部署后的数据库数据如下:
在ACT_RE_PROCDEF表中没有数据
我在网上找到一篇文章:https://blog.csdn.net/peng_wei_kang/article/details/79864183
上面是说在下面这个类中有一个方法会判断resourceName中是否是.bpmn或者.bpmn20.xml,如果包含才会插入
F:\Maven\repository\org\activiti\activiti-engine\6.0.0\activiti-engine-6.0.0.jar!\org\activiti\engine\impl\bpmn\deployer\ParsedDeploymentBuilder.class
protected boolean isBpmnResource(String resourceName) {
String[] var2 = ResourceNameUtil.BPMN_RESOURCE_SUFFIXES;
int var3 = var2.length;
for(int var4 = 0; var4 < var3; ++var4) {
String suffix = var2[var4];
if (resourceName.endsWith(suffix)) {
return true;
}
}
但是我打断点时传进来的 resourceName的值是这样的,你们可以试一下,是zip资源中的文件,所以肯定返回的都是false,而用文章中的构建方法DeploymentBuilder builder = repositoryService.createDeployment();时,这个方法并不会走,不知道为什么
于是我使用了另一种方式,没有使用zip包,使用的是bpmn20.xml和png图片的方式,这种方式会走上面的这个判断方法,而且会把leave.bpmn20.xml付给 resourceName进行判断,下面是代码和我的目录结构,这种方式可以部署成功
//使用xml文件部署流程
DeploymentBuilder deployment = repositoryService.createDeployment(); //创建一个发布对象
deployment.addClasspathResource("processes/leave.bpmn20.xml"); //添加流程文件路径
deployment.name("请假流程"); //添加流程部署名称
Deployment deploy = deployment.deploy();//发布流程*/
这种方式部署后的数据库数据:
希望有大神能帮我看看~~~小白感激不尽