jBPM e sua associações com Tarefas e Usuários

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]public class UserTasksAssignment implements AssignmentHandler {private static final long serialVersionUID = -930174228262828841L;

public void assign(Assignable assignable, ExecutionContext executionContext)
throws Exception {

assignable.setActorId((String) executionContext.getVariable(”rg”));

}

}
[/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”)
public String doPagamentoSefa(@PathParam(”id”)String id,
@PathParam(”rg”)String rg) {

JbpmContext ctx = JbpmConfiguration.getInstance().createJbpmContext();
try {
GraphSession graphSession = ctx.getGraphSession();
ProcessInstance processInstance = graphSession
.loadProcessInstance(new Long(id));

Collection taskList = null;
processInstance.getTaskMgmtInstance().getTaskInstances();

taskList = (Collection) ctx.getTaskList(rg);

processInstance.getContextInstance().setVariable
(”idsefa”, System.currentTimeMillis()+1L );

StringBuilder b = new StringBuilder();

for (TaskInstance taskInstance : taskList) {

b.append(String.format(
“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();
}

}

[/java]

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

Você sabe o que é o JON (JBoss Operations Network)?

Este post pode estar demorado, mas nunca é tarde demais para se falar, o JBoss Operations Network, ou o JON, é a ferramenta em browser web que permite controle, administração, monitoração do ambiente e geração de alertas sobre eventos que podem ocorrer no seu parque de máquinas, onde hajam um ou vários servidores com JBoss Application Server instalados.

O JON, é acessível somente para clientes que possuem suporte oficial da Red Hat, em outras palavras, só as versões Enterprise de JBoss AS são homologadas para o JON, bem como só estes clientes podem adquirir a subscrição(licença de suporte) para este produto.

Num passado, esta ferramenta utilizava em sua estrutura do kernel da Hyperic, por este motivo não era “Opensource”! Como assim não era? Agora é? A resposta é: Sim, agora o código base para o JON é opensource, resultado da união de esforços entre Red Hat e Hyperic, criando assim o projeto RHQ-Project.

Com o projeto RHQ, lançamos recentemente o Jon 2.0 GA, que é a mais nova versão do JON, entre as inúmeras melhorias e novidades, destaco a capacidade de cricação de extensões(plugins), que permitem os clientes criarem suas próprias formas de monitoração, desde algum requisito de hardware, infra ou até mesmo de aplicações, por exemplo: “Quantas vendas foram realizadas no último dia?”, podendo gerar um alerta, caso o número tenha sido menor que 20% ao baseline estabelecido.

Claro, o foco do JON é monitorar as questões de sistemas operacionais(solaris, win e linux a exemplo), JBoss AS e seus recursos (filas JMS, EJBs, DataSources/Pools de Conexão,Sessões Hibernate), além de Tomcat, Apache e até o MS IIS.

De fato, o JON torna a plataforma JBoss AS, mais que uma plataforma estável e performática, mas também agora, como uma cara corporativa.

Sites

E claro, parabens Sport do Recife, pela Copa do Brasil!!!!! :D
JON