做会签相关流程,发现明明设置的并行,但是部署后,下次再打开并行标志没有了;
去检查了下ACT_GE_BYTEARRAY字段BYTES_ ,导出来看了下确实没有 multiInstanceLoopCharacteristics,那肯定是存进去的时候 就丢失了。
再排查部署过程
前端的 String xml 转成 BpmnModel bpmnModel-- 这个时候是没问题 BpmnModel bpmnModel 再转Model model --也没问题 DeploymentBuilder builder=repositoryService.createDeployment(); builder.addBpmnModel(bpmnModel.getMainProcess().getId().concat(".bpmn"), bpmnModel);//就是这一步里出的问题 builder.key(bpmnModel.getMainProcess().getId()); builder.name(bpmnModel.getProcesses().get(0).getName()); Deployment deploy=builder.deploy();
再去细节里去看的时候能发现
public DeploymentBuilder addBpmnModel(String resourceName, BpmnModel bpmnModel) {
BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();
try {
String bpmn20Xml = new String(bpmnXMLConverter.convertToXML(bpmnModel), "UTF-8");// 就是这个里面出的问题
this.addString(resourceName, bpmn20Xml);
return this;
} catch (UnsupportedEncodingException var5) {
throw new ActivitiException("Error while transforming BPMN model to xml: not UTF-8 encoded", var5);
}
}
看了下转换的代码版本activiti-bpmn-converter version=7.1.0.M6 和activiti是匹配的,先不管了
手动重写处理 发现又报错org.activiti.engine.ActivitiException: Errors while parsing:
[Validation set: 'activiti-executable-process' | Problem: 'activiti-multi-instance-missing-collection'] : Either loopCardinality or loopDataInputRef/activiti:collection must been set - [Extra info : processDefinitionId =
这时候才想到可能是少属性,果然手动补了个activiti:collection 就好用了,流程绘制功能是手写的前端,做了深入订制,改成会签执行后,没有设置匹配的会签条件,后端部署的时候,自动给过滤掉了这个有问题的会签配置。所以问题还是自己疏忽