Dúvida no jBPM

1 resposta
J

Galera que já trabalhou ou conhece um pouco o jBPM talvez possa me ajudar com uma duvida que eu tenho aqui, mais por deficiencia conceitual (AKA Ignorancia :roll: ) hehe

Seguinte, eu estou criando um processo utilizando jBPM que é iniciado através de uma comunicação assincrona entre o cliente e o servidor. Trata-se de uma requisição de busca de computadores na rede (inventário) que roda em background e após o término fica suspensa esperando um acknowledge do usuário em um painel de “processos sendo executados”.

Até ai tudo bem eu utilizo o seguinte trecho de código para criar o processo:

// dispara o novo processo.
        final ProcessInstance process = this.processManager.newProcess(MessagesManagerImpl.SEND, properties);

Do outro lado, ao finalizar eu indico que a execução terminou ok, e tenho um objeto de resposta:

public void receive(final String id, final Object response) {
       this.processEngine.getExecutionService().signalExecutionById(id, "ok");
    }

Do lado do cliente eu consigo ver que o processo finalizou, mas o meu problema é que eu não sei como fazer para obter a resposta. O Object response fica ali perdido e eu não sei como enviá-lo (utilizando o framework de forma adequada) de forma que ele seja obtido através do id do processo. Eu esperava que a Interface Execution tivesse algum método do tipo getResult, mas infelizmente não.

Alguém conseguiria me dar uma luz?

1 Resposta

J

Bom, enquanto não aparece uma solução melhor, temporariamente eu tô pegando a resposta do lado do cliente através do ExecutionService, que me dá acesso as variáveis da execução.

Eu só acho isso meio tosco pq eu tenho que ficar pegando os nomes das atividades que estão ativas (parece estranho mas isso msm hehe) até verificar se ele chegou no waitUserAcknowledge (um dos estados do meu workflow) para dai verificar o resultado de uma variável (pq antes disso dá NPE)…

É meio não-intuitivo isso (e tenho minhas duvidas se é recomendado também). Duvido que não tenha uma forma muito melhor e mais pratica de verificar isso (ah e esqueci de falar, sem usar triggers).

Seria muito mais facil ter um método hasResponse() e getResponse(), da execução do processo. :frowning:

Criado 17 de novembro de 2010
Ultima resposta 17 de nov. de 2010
Respostas 1
Participantes 1