我正在使用Activti版本6.0.0。
我希望在activiti中同步执行任务,但是我有一个长时间运行的任务,可能需要20分钟才能执行。 我想在我的控制器中快速获取流程实例ID,而不考虑在bpmn中完成任务,所以我在我的bpmn文件中添加了一个“0分钟”的中间计时器事件。
我已经开始执行一个进程,让我们说使用processInstanceid p1.At那个时候只有我再次启动进程,让我们说使用processInstanceid p2。 现在两个进程都到达了等待事件为20分钟的任务(我已经使用了while循环)。现在根据流程,两个进程都应该到达结束任务并完成执行但不是没有进程完成执行并从第一个任务到结束任务多次运行。
如何从开始任务到结束任务独立且平行地运行多个进程(其中一个任务具有需要很长时间才能执行的代码)
答案 0 :(得分:-1)
可能你的任务是超时,重试逻辑正在踢,导致多次运行。最终,实例将在3次重试后失败。 为了完全坦诚,长时间运行任务的同步执行可能会导致实际问题,特别是在负载下,您可以轻松地超出可用线程,内存或其他资源。 你可以更好地使用异步模型,例如Camunda在这里很好地记录:https://github.com/camunda/camunda-bpm-examples/tree/master/servicetask/service-invocation-asynchronous
我已成功将此模式与所有Activiti变体一起使用,并且效果很好。