我创建了一个图,该图使用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表(工作示例):
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

ACT_HI_PROCINST表(工作示例):
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

ACT_RU_EVENT_SUBSCR表(不是工作示例,表为空):
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

ACT_HI_PROCINST表(不适用示例):
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

流程定义图:
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

子流程1,2,3:
java - 为什么Activiti中的进程在生命周期中会丢失boundaryEvent-LMLPHP

最佳答案

这里提到一种可能性:
https://community.alfresco.com/docs/DOC-4591
发行说明-Activiti-版本5.20.0
...
部署新的流程定义版本时,信号和边界事件订阅会丢失
...

这是我们升级到5.20的主要原因

07-22 07:38