我们遇到了几个在到达流程结束事件之后执行servicetasks的情况。
一个例子来自 ACT_HI_ACTINST
表如下所示(行号列“l#”手动添加):
SELECT
EXECUTION_ID_,
PROC_INST_ID_,
ACT_ID_,
ACT_TYPE_,
START_TIME_,
END_TIME_
FROM ACT_HI_ACTINST
WHERE PROC_INST_ID_ =
'9841ea77-cee8-11e6-b457-005056aa6e09'
ORDER BY
START_TIME_;
EXECUTION_ID_ PROC_INST_ID_ L# ACT_ID_ ACT_TYPE_ START_TIME_ END_TIME_
==================================== ==================================== === ============================ ======================== =================== ===================
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 1. startevent1 startEvent 2016-12-31 00:35:06 2016-12-31 00:35:06
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 2. lockOrder serviceTask 2016-12-31 00:35:06 2016-12-31 00:35:06
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 3. processingOrderStatus serviceTask 2016-12-31 00:35:06 2016-12-31 00:35:06
989cb4b1-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 4. subprocess1 subProcess 2016-12-31 00:35:06 2016-12-31 00:37:18
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 5. startevent2 startEvent 2016-12-31 00:35:06 2016-12-31 00:35:06
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 6. prepareContractContext serviceTask 2016-12-31 00:35:07 2016-12-31 00:35:07
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 7. processingContractStatus serviceTask 2016-12-31 00:35:08 2016-12-31 00:35:09
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 8. createSsoAccount serviceTask 2016-12-31 00:35:09 2016-12-31 00:35:09
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 9. exclusivegateway1 exclusiveGateway 2016-12-31 00:35:09 2016-12-31 00:35:09
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 10. exclusivegateway2 exclusiveGateway 2016-12-31 00:35:09 2016-12-31 00:35:09
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 11. modifyParty serviceTask 2016-12-31 00:35:10 2016-12-31 00:35:26
a44b1fb0-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 12. timerintermediatecatchevent1 intermediateTimer 2016-12-31 00:35:26 2016-12-31 00:37:30
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 13. createNotification serviceTask 2016-12-31 00:37:17 2016-12-31 00:37:17
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 14. closedContractStatus serviceTask 2016-12-31 00:37:18 2016-12-31 00:37:18
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 15. endevent1 endEvent 2016-12-31 00:37:18 2016-12-31 00:37:18
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 16. registerClosedOrderEvent serviceTask 2016-12-31 00:37:19 2016-12-31 00:37:19
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 17. closedOrderStatus serviceTask 2016-12-31 00:37:19 2016-12-31 00:37:19
9841ea77-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 18. endevent2 endEvent 2016-12-31 00:37:19 2016-12-31 00:37:19
989e8977-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 19. modifyService serviceTask 2016-12-31 00:37:30 2016-12-31 00:37:31
eeec32ad-cee8-11e6-b457-005056aa6e09 9841ea77-cee8-11e6-b457-005056aa6e09 20. waitingForModifyService intermediateMessageCatch 2016-12-31 00:37:31 2016-12-31 00:37:17
现在 endEvent2
(第18行)是一个进程结束事件,在它完成之后,另一个任务被执行(这个 modifyService
(第19行)任务应该在 timerintermediatecatchevent1
(第12行),在大多数情况下是)。
我们仅将activiti用作spring应用程序的处理引擎。有5个应用程序示例连接到同一个数据库。
什么会导致这种行为?我们定期观察,这对我们的业务流程非常危险。作为提示-无序的任务在不同的机器上执行。
此外,我们还调整了async executor引擎的设置—代码段的设置如下:
asyncExecutor.setDefaultAsyncJobAcquireWaitTimeInMillis(1000);
asyncExecutor.setDefaultTimerJobAcquireWaitTimeInMillis(5 * 1000);
asyncExecutor.setMaxAsyncJobsDuePerAcquisition(10);
asyncExecutor.setMaxTimerJobsPerAcquisition(10);
asyncExecutor.setAsyncJobLockTimeInMillis(10 * 60 * 1000);
asyncExecutor.setTimerLockTimeInMillis(10 * 60 * 1000);
activiti版本:5.20.0
任何帮助或暗示都将不胜感激。
进一步阅读
户外论坛上的交叉柱:https://community.alfresco.com/message/805537-servicetask-executed-after-process-end-event
暂无答案!
目前还没有任何答案,快来回答吧!