【问题标题】:Why process in Activiti lose boundaryEvent during lifecycle为什么 Activiti 中的进程在生命周期中会丢失边界事件
【发布时间】:2017-07-14 12:58:34
【问题描述】:

我创建了一个图表,它使用边界事件来表示某些操作已经完成。

<boundaryEvent id="boundarysignal1" name="cancel" attachedToRef="subprocess3" cancelActivity="true">
 <signalEventDefinition signalRef="cancelApplication"></signalEventDefinition>
 </boundaryEvent>

一切正常,但在某一时刻(我还没有捕捉到它),进程失去了与事件的绑定,所以我根本无法使用与边界事件相关的流。发现在运行时 Activiti 会在 ACT_RU_EVENT_SUBSCR 表中创建记录,该表保存对 ACT_HI_PROCINST 表中适当记录的事件订阅,该表存储流程实例数据。同时我看到该进程没有关闭并且处于活动状态,相应的 END_FIELD 列为空。

由于事件未绑定,下一个代码不返回任何内容:

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 ;活动 5.19.0.2

ACT_RU_EVENT_SUBSCR 表(工作示例):

ACT_HI_PROCINST 表(工作示例):

ACT_RU_EVENT_SUBSCR 表(不工作示例,表为空):

ACT_HI_PROCINST 表(非工作示例):

流程定义图:

子流程 1、2、3:

【问题讨论】:

  • 什么在发送 cancelApplication 信号?能发一下全过程图吗?当内部过程结束时会发生什么?
  • 我的意思是 process.bpmn.xml 模式。您是使用 activiti 建模器还是手动构建这些流程?
  • Q1:“您是使用 Activiti 建模器还是手动构建这些流程?” A1:我正在使用 Activiti 可视化插件来创建 bpmn.xml shema。 Q2:“什么在发送 cancelApplication 信号?” A2:它是从代码发送的。 Q3:“可以发全过程图吗?” A3:已经添加了子流程的图表

标签: java alfresco activiti bpmn


【解决方案1】:

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

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

【讨论】:

  • 您能否描述一下您在迁移到新的 5.20 版本后的操作?据我了解,您之前的 5.19 版本已经损坏了进程。迁移到新版本是否修复了所有问题(已经损坏的进程只能通过版本升级修复)?还是这个缺陷无法重现?
  • 迁移没有修复(或改变)任何东西。我们不得不一一重启受影响的进程。幸运的是,它们没有在外部系统中包含任何表单和瞬态数据,因此可以轻松重启。
  • 非常感谢分享您的经验!
猜你喜欢
  • 2013-10-15
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 2015-02-21
  • 1970-01-01
相关资源
最近更新 更多