Frage

need to achieve:


Gaberverarbeitung auf mehrere Aufgaben

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

Die JBPM -Lösung sollte parallel und nicht, wie es standardmäßig erledigt wird, sequentiell ausführen.

Ich habe JBPM -Dokumentation gelesen, die vorschlägt zu verwenden async="true" Auf den Knoten/Aufgaben ist es jedoch unklar, wie exakt Dies sollte implementiert werden. Einer der Vorschläge bestand darin, es in DB zu bestehen und die Aufgaben an die JMS-Warteschlange zu senden, um nicht mit maßgeschneidertem Multi-Thread-Management umzugehen. Ich fand es jedoch zu seltsam, dass JBPM keine einfache Lösung dafür hat.

Ich hoffe, jemand wird mir hier das Gegenteil beweisen und mir eine einfache und elegante Lösung mit JBPM 3.2.6 zeigen Da dies der neueste von Red Hat unterstützt wird

Vielen Dank.

War es hilfreich?

Lösung

Wie Sie wahrscheinlich bemerkt haben, hat JBPM keine Parallelitätskontrollen für die Prozessinstanzdaten. Beispielsweise können Prozessvariablen nicht gesperrt werden, wenn sie aufgerufen werden, und sie werden nicht implizit vom Motor gesperrt. Wirklich parallele Hinrichtungen würden zu Rennbedingungen führen.

Dies ist ein gemeinsamer Design-Kompromiss, wenn es um BPM-Motoren geht. Sie vermeiden alle Fallstricke (Deadlocks, Rassenbedingungen, Hunger, Konsistenzprobleme ...) mit einem einzigen Ausführungsfaden für jede Prozessinstanz. Geschäftsprozesse sollen langlebig sein, aber auch darauf warten, dass die meiste Zeit ein Ereignis stattfindet und nicht für sich selbst berechnet werden sollte. Die CPU sollte also bei der Ausführung einer einzigen Prozessinstanz niemals ein Engpass sein.

Sie können diese Einschränkung umgehen, indem Sie die parallele Workload aus dem Prozess aufteilen, wie Sie es beschrieben haben. Sie können es auch im Prozess behalten, indem Sie eine Java -Aktivität erstellen und manuell Themen hervorbringen, obwohl dies stark entmutigt ist. Für den Anfang blockieren Sie den JBPM -Thread, der die Instanz ausführt, und Sie können den Fortschritt Ihrer parallelisierten Arbeitsbelastung nicht überwachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top