最近在边学边做一个flowable的项目,在进行前端bpmn画流程图后,我自己手动在serviceTask节点中添加extensionElements扩展节点,以便于向后台的方法传递参数,添加完后如图:
将这个改动报错后,提交后台并进行部署,结果出现异常:
org.flowable.bpmn.exceptions.XMLException:
javax.xml.stream.XMLStreamException: org.xml.sax.SAXParseException; lineNumber: 98; columnNumber: 10; cvc-complex-type.2.4.a:
发现了以元素 '{"http://www.omg.org/spec/BPMN/20100524/MODEL":extensionElements}' 开头的无效内容。
应以 '{"http://www.omg.org/spec/BPMN/20100524/MODEL":outgoing, "http://www.omg.org/spec/BPMN/20100524/MODEL":ioSpecification,
"http://www.omg.org/spec/BPMN/20100524/MODEL":property, "http://www.omg.org/spec/BPMN/20100524/MODEL":dataInputAssociation,
"http://www.omg.org/spec/BPMN/20100524/MODEL":dataOutputAssociation, "http://www.omg.org/spec/BPMN/20100524/MODEL":resourceRole,
"http://www.omg.org/spec/BPMN/20100524/MODEL":loopCharacteristics}' 之一开头。
看着这异常一脸懵逼,一切都是根据flowable的用户手册添加的居然会出现这种错误,后来忙活了一天,找了各种资料和问人,终于解决了,现在记录下我查到的可能情况:
1.bpmn文件中有未引入的命名空间,需引入对应的命名空间;
2.flowable的版本太低,当前节点是高版本节点,无法被低版本的flowable解析,需升级当前系统的flowable版本
3.当前节点内的属性位置放置错误,将其他属性放在incoming、outgoing之间或后面,应当将其他属性放在incoming、outgoing之前。
如同我上面的情况就是第三个问题,将extensionElements属性,放在了incoming、outgoing后面,所以部署时才会报错,将节点内属性位置调整后,如下图
再重新保存部署,发布成功,没有问题。真是被坑到了,没有学习过bpmn,都不知道incoming、outgoing必须放在最后才行啊