我创建了一个图,该图使用boundaryEvent表示已完成某些操作。
<boundaryEvent id="boundarysignal1" name="cancel" attachedToRef="subprocess3" cancelActivity="true">
<signalEventDefinition signalRef="cancelApplication"></signalEventDefinition>
</boundaryEvent>
一切正常,但是片刻之后(我还没有抓住),该流程失去了与事件的绑定,因此我根本无法使用与boundaryEvent相关的流程。发现在运行时Activiti将记录创建到ACT_RU_EVENT_SUBSCR表中,该表将事件订阅保留到ACT_HI_PROCINST表中存储过程实例数据的适当记录。同时,我看到该进程没有关闭并且仍在运行,相应的END_FIELD列为null。
下一个代码不返回任何内容,因为未绑定事件:
final List<Execution> executionList =runtimeService.createExecutionQuery().processVariableValueEquals("VAR_NAME","VAR_VALUE").signalEventSubscriptionName(SIGNAL_CANCEL_PROCESS).list();
同时,由于下一个结果是成功,进程处于活动状态:
final List<ProcessInstance> instances = runtimeService.createProcessInstanceQuery().variableValueEquals("VAR_NAME","VAR_VALUE").active().list();
boundaryEvent与Process分离的原因可能是什么?
信封:SpringBoot 1.3.2; Activiti 5.19.0.2
ACT_RU_EVENT_SUBSCR表(工作示例):
ACT_HI_PROCINST表(工作示例):
ACT_RU_EVENT_SUBSCR表(不是工作示例,表为空):
ACT_HI_PROCINST表(不适用示例):
流程定义图:
子流程1,2,3:
最佳答案
这里提到一种可能性:
https://community.alfresco.com/docs/DOC-4591
发行说明-Activiti-版本5.20.0
...
部署新的流程定义版本时,信号和边界事件订阅会丢失
...
这是我们升级到5.20的主要原因