need to achieve:


分叉处理多个任务

<fork name="customFork" >
  <transition to="task1" />
  <transition to="task2" />        
  <transition to="task3" />
       ... ... ...
  <transition to="taskN" />         
</fork>

JBPM解决方案应并行执行任务,而不是默认情况下如何完成任务。

我已经阅读了建议使用的JBPM文档 async="true" 在节点/任务上,但是目前尚不清楚 确切地 这应该实施。建议之一是将其持续到DB中,并将任务发送到JMS队列,而不是处理自定义的多线程管理。但是,我发现JBPM对此没有直接的解决方案,这太奇怪了。

我希望有人会在这里证明我错了,并将用JBPM 3.2.6向我展示简单而优雅的解决方案。 因为这是红帽支持的最新支持

谢谢你。

有帮助吗?

解决方案

正如您可能注意到的那样,JBPM没有针对过程实例数据的并发控件。例如,访问时无法锁定过程变量,也不能被引擎隐式锁定。真正的并行执行将导致比赛条件。

在BPM发动机方面,这是一个普遍的设计权衡。您可以避免使用每个过程实例的单个执行线程,避免所有并发控制陷阱(僵局,种族条件,饥饿,一致性问题...)。业务流程本来应该是长期运行的,但也应该在大多数时候等待某些事件发生,并且不应自己进行密集。因此,执行单个过程实例时,CPU绝不应该是瓶颈。

您可以通过将并行工作负载从流程中分解出来,从而解决此限制。您还可以通过创建Java活动并手动产生线程来将其保留在过程中,尽管这是高度灰心的。对于初学者,您将阻止正在执行实例的JBPM线程,并且您将无法监视并行工作负载的进度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top