Pergunta

need to achieve:


De bifurcar-se que o processamento de várias tarefas

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

jBPM a solução deve executar tarefas em paralelo, e não, como é feito por padrão, seqüencial.

Eu li jBPM documentação, o que sugere a utilização async="true" sobre nós/tarefas, no entanto, não é claro sobre como exatamente isto deve ser implementado.Uma das sugestões foi a de persistir no banco de dados, e enviar as tarefas a fila JMS, não para lidar com personalizado multi-thread de gestão.No entanto, eu achei muito estranho que jBPM não tem uma solução simples para isso.

Espero que alguém vai me provar que estou errado aqui, e vai me mostrar a solução simples e elegante com jBPM 3.2.6 [como este é o mais recente suportada pela Red Hat]

Obrigado.

Foi útil?

Solução

Como você provavelmente observou, jBPM não tem concorrência controles para o processo de dados de instância.Por exemplo, variáveis de processo não pode ser bloqueado quando acessado, nem eles são implicitamente bloqueado pelo motor.Verdadeiramente paralelas execuções iria levar a condições de corrida devido a isso.

Este é um projeto comum de trade-off quando se trata de BPM motores.Evitar todo controle de concorrência armadilhas (deadlocks, condições de corrida, fome, problemas de consistência...) com um único thread de execução para cada instância de processo.Processos de negócio são supostos para ser longa mas são também deveria estar esperando por algum evento acontece na maioria das vezes e não deve ser computacionalmente intensivo por si mesmos.Assim CPU nunca deve ser um gargalo quando a execução de uma única instância de processo.

Você pode contornar esta limitação, dividindo paralelo carga de trabalho fora do processo, como você descreveu.Você também pode mantê-lo dentro do processo criando um java atividade e manualmente gera threads, que isso é altamente desencorajado.Para começar, você vai bloquear o jBPM thread que está executando a instância, e você não será capaz de monitorar o progresso de sua paralelizado carga de trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top