문제

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으로 간단하고 우아한 솔루션을 보여줄 것입니다. 이것은 Red Hat의 최신 지원이므로

고맙습니다.

도움이 되었습니까?

해결책

알다시피, JBPM에는 프로세스 인스턴스 데이터에 대한 동시 컨트롤이 없습니다. 예를 들어, 액세스 할 때 프로세스 변수를 잠글 수 없거나 엔진에 의해 암시 적으로 잠겨 있지 않습니다. 진정으로 평행 한 처형은 그로 인해 인종 조건으로 이어질 것입니다.

이것은 BPM 엔진과 관련하여 일반적인 디자인 트레이드 오프입니다. 각 프로세스 인스턴스에 대한 단일 실행 스레드를 사용하여 모든 동시성 제어 함정 (교착 상태, 레이스 조건, 기아, 일관성 문제 ...)을 피하십시오. 비즈니스 프로세스는 장기적이어야하지만 대부분의 사건이 발생하기를 기다리고 있어야하며 그 자체로 집중적으로 계산해서는 안됩니다. 따라서 단일 프로세스 인스턴스를 실행할 때 CPU는 병목 현상이되어서는 안됩니다.

설명 된대로 병렬 워크로드를 프로세스에서 분리 하여이 한계를 해결할 수 있습니다. 또한 Java 활동을 만들어 프로세스 내부에 보관하고 스레드를 수동으로 스폰 할 수 있지만, 이것은 매우 낙관적입니다. 우선, 인스턴스를 실행하는 JBPM 스레드를 차단하고 병렬 작업로드의 진행 상황을 모니터링 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top