工作流执行在等待计时器处无限循环

时间:2018-11-22 09:54:37

标签: workflow alfresco activiti bpm bpmn.io

我们有一个工作流,该工作流执行一项任务,以在找不到数据的情况下检查数据库中的记录,并等待一分钟,然后执行任务。以下是我们工作流程的摘录。

<intermediateCatchEvent id="BHTimer" name="Wait 1 Minute">
  <incoming>BHNotActive</incoming>
  <outgoing>IsTickOpen</outgoing>
  <timerEventDefinition>
    <timeDuration xsi:type="tFormalExpression">PT1M</timeDuration>
  </timerEventDefinition>
</intermediateCatchEvent>

我们注意到,即使添加了数据库记录,此任务也将无限循环。奇怪的是,任务执行的频率从1分钟更改为〜200ms,导致ACT_HI_ACTINST表中累积了数百万条记录。以下是我们系统中许多此类流程之一的表格数据统计信息。

在几秒钟内,该事件已执行了数千次,并一直持续在数据库表“ ACT_HI_ACTINST”和“ ACT_RU_EXECUTION”下为同一作业创建数百万个过程条目。

在查询下面运行将返回数百万条记录:
1.从ACT_HI_ACTINST中选择*,其中PROC_INST_ID_ ='f33c539a-dfe2-11e8-9d30-0050569941b2'; 2.从ACT_RU_EXECUTION中选择*,其中PROC_INST_ID_ ='f33c539a-dfe2-11e8-9d30-0050569941b2';

以下是我们遇到性能问题时活动表的统计信息。

表名:记录数

ACT_RU_EXECUTION:3435162 ACT_RU_TASK:318122 ACT_RU_IDENTITYLINK:251334 ACT_RU_VARIABLE:265008


表名:记录数

ACT_HI_IDENTITYLINK:2526867 ACT_HI_PROCINST:54564894 ACT_HI_ACTINST:28169298 ACT_HI_TASKINST:4769590 ACT_HI_VARINST:8711507

其中一些进程成为孤立进程(发出关闭命令时,进程尚未结束)。我们注意到的另一件事是act_ru_job表中此类进程的异常消息-异常消息列中的消息“ JobEntity [id = 2786e249-dff6-11e8-a9c8-005056990bf2]同时被另一个事务更新”消息。

我们有一个清除作业,以删除与已完成的进程(act_hi_procinst表中填充了end_time_的进程相关的数据,但是这些进程不会被删除,因为它们永远不会无限循环)。

我们已经检查了工作流程,但没有看到任何并行执行路径,因此我们不确定为什么会发生此错误。要注意的一件事是,它部署在2节点群集环境中,这可能是两个节点都同时选择要执行的进程。

我们的问题是: 1. Activiti如何使流程执行群集安全?有集群特定的配置吗? 2.我们使用设计师生成的工作流程有缺陷吗?请查看随附的工作流代码段,图表和建议。示意图:https://i.stack.imgur.com/xMQWm.jpg。 如果有人需要完整的工作流XML,我也可以附加它。由于字数限制,请避免。

工作流是使用BPMN Designer生成的。 Activiti版本:5.17.0, 数据库:Oracle, Web服务器:Tomcat

这在我们的生产环境中引起了严重的性能问题,解决该问题的任何帮助都将受到赞赏。

0 个答案:

没有答案