No jBPM, uma das features mais interessantes é a capacidade de processamento de Tarefas Humanas(HumanTasks), que por sua vez podem guardar várias sub-tarefas de cada usuário em cada fase(node) do workflow.
Quando você cria uma tarefa dentro de um task-node, como por exemplo: [Veja Link]
Para controlar todo a associação de usuário, estabelecemos uma classe para tratar o "assign" da tarefa. Esta classe é UserTaskAssignment, que implementa a interface AssignmentHandler. Nesta classe, como as TaskNodes serão disparadas após o início do processo, no nó de Início(start), logo que o processo passar por ele, armazenaremos uma variável de contexto, no caso um id de usuário. E para cada task, capturamos este id e associamos a(s) tarefa(s), veja o handler:
JAVA:
Agora, fiz uma adaptação em um dos métodos do meu serviço para mostrar para o usuário X, quantas tarefas e em quais instâncias de processos eles tem tarefas pendentes:
JAVA:
-
@SuppressWarnings("unchecked")
-
@GET
-
@Path("/realize/pagementosefa/{id}/{rg}")
-
@ProduceMime("text/plain")
-
-
JbpmContext ctx = JbpmConfiguration.getInstance().createJbpmContext();
-
try {
-
GraphSession graphSession = ctx.getGraphSession();
-
ProcessInstance processInstance = graphSession
-
-
Collection taskList = null;
-
processInstance.getTaskMgmtInstance().getTaskInstances();
-
-
-
processInstance.getContextInstance().setVariable
-
-
StringBuilder b = new StringBuilder();
-
-
for (TaskInstance taskInstance : taskList) {
-
-
"User %s, the Task:: %s is waiting for your start. This is a task from the Process Id:%s\n", taskInstance.getActorId(),
-
taskInstance.getName(),
-
taskInstance.getProcessInstance().getId()));
-
-
}
-
-
b.append("Payment Id: " + processInstance.getContextInstance().getVariable("idsefa").toString());
-
-
return b.toString() ;
-
-
} finally {
-
ctx.close();
-
}
-
-
}
O resultado final de retorno para testes de Dubug seria, para o comando REST: http://localhost:8080/licenciamento/realize/pagementosefa/55/1111
User 1111, the Task:: entregar recibo is waiting for your start. This is a task from the Process Id: 55 User 1111, the Task:: pagar is waiting for your start. This is a task from the Process Id: 55 Payment Id: 1213310025945

Entries (RSS)