Activiti工作流部署问题,没有对ACT_RE_PROCDEF表进行插入
public R test(String name){InputStream in=this.getClass().getClassLoader().getSystemResourceAsStream("processes/leave.zip");ZipInputStream zipInputStream=new Zi...
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();//发布流程*/
这种方式部署后的数据库数据:
希望有大神能帮我看看~~~小白感激不尽

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)