Pregunta

need to achieve:


Bifurcando el procesamiento a múltiples tareas

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

La solución JBPM debe ejecutar tareas en paralelo, y no, cómo se hace de forma predeterminada, secuencial.

He leído documentación de JBPM que sugiere usar async="true" En los nodos/tareas, sin embargo, no está claro cómo exactamente Esto debe implementarse. Una de las sugerencias era persistir en DB y enviar las tareas a JMS Queue, no tratar con la gestión personalizada de múltiples subprocesos. Sin embargo, me pareció demasiado extraño que JBPM no tenga una solución directa para esto.

Espero que alguien demuestre que estoy equivocado aquí, y me muestre una solución simple y elegante con JBPM 3.2.6 Como este es el último apoyado por Red Hat

Gracias.

¿Fue útil?

Solución

Como probablemente haya notado, JBPM no tiene controles de concurrencia para los datos de instancia de proceso. Por ejemplo, las variables de proceso no se pueden bloquear cuando se accede ni las bloquean implícitamente por el motor. Las ejecuciones verdaderamente paralelas conducirían a condiciones de carrera debido a eso.

Esta es una compensación de diseño común cuando se trata de motores BPM. Usted evita todas las dificultades de control de concurrencia (plazos, condiciones de carrera, inanición, problemas de consistencia ...) con un solo hilo de ejecución para cada instancia de proceso. Se supone que los procesos comerciales son de larga duración, pero también se supone que están esperando que ocurra algún evento la mayor parte del tiempo y no deben ser intensivos por sí mismos. Por lo tanto, la CPU nunca debe ser un cuello de botella al ejecutar una sola instancia de proceso.

Puede trabajar en torno a esta limitación dividiendo la carga de trabajo paralela del proceso como lo describió. También puede mantenerlo dentro del proceso creando una actividad de Java y genera hilos manualmente, aunque esto está muy desanimado. Para empezar, bloqueará el hilo JBPM que está ejecutando la instancia y no podrá monitorear el progreso de su carga de trabajo paralelo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top