我已经通过https://www.activiti.org/migration.html的指南将迁移活动从5.21.0处理到6.0.0
(我更新了文件activiti-rest/WEB-INF/classes/activiti-custom-context.xml
以设置activiti5CompatibilityEnabled和activiti5CompatibilityHandlerFactory
<bean id="activiti5CompabilityFactory" class="org.activiti.compatibility.spring.SpringActiviti5CompatibilityHandlerFactory" />
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
.........
<property name="activiti5CompatibilityEnabled" value="true" />
<property name="activiti5CompatibilityHandlerFactory" ref="activiti5CompabilityFactory" />
</bean>
并复制activiti5-compatibility-6.0.0.jar,activiti5-engine-6.0.0.jar,activiti5-spring-6.0.0.jar,activiti5-spring-compatibility-6.0.0.jar to activiti-rest& #39; s libs和activiti-app的libs)
我在旧版本中有一个活动的流程实例,如下所示
迁移后,我仍然有一个这个流程实例,但是当我提交用户任务,服务任务执行并抛出BpmnError时,BoundaryEvent无法捕获此异常,我在日志中遇到错误
03:29:59,686 [activiti-async-job-executor-thread-2] ERROR org.activiti.engine.impl.interceptor.CommandContext - Error while closing command context
org.activiti.engine.ActivitiException: Programmatic error: no parent scope execution found for boundary event
at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.executeInterruptingBehavior(BoundaryEventActivityBehavior.java:85)
at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.trigger(BoundaryEventActivityBehavior.java:56)
程序错误:在BoundaryEventActivityBehavior.executeInterruptingBehavior(BoundaryEventActivityBehavior.java:85)找不到边界事件的父作用域执行 =&GT;我不知道为什么BoundaryEvent无法找到父(服务任务 - 它在旧版本上正常工作)。
答案 0 :(得分:0)
由于Activiti User Guide定义边界错误事件 -
定义边界错误事件对嵌入式子流程或调用活动最有意义,因为子流程会为子流程内的所有活动创建范围。错误结束事件引发错误。此类错误将向上传播其父作用域,直到找到定义了与错误事件定义匹配的边界错误事件的作用域。
捕获错误事件时,边界的活动 定义的事件被销毁,也破坏了所有当前的执行 内(例如并发活动,嵌套子流程等)。 流程执行在传出序列流后继续执行 边界事件。
解决方法:强> 在服务任务之后尝试使用网关来检查是否满足完成流程的条件 - explanation