Preview jBpm4

Ano começa animado, e um dos projetos mais populares JBoss apresenta algumas inovações interessantes, desde que Heiko Braun e Thomas Diesler foram movidos do JBossWS para o JBPM, que o projeto só vem ganhando em qualidade, já que ele vinha meio que parado no tempo há muito tempo.

No jBpm 4, você verá novo schema pra os jDPL, que faz com que a notação do desenho e suporte BPMN, bem como o uso de frameworks como o JUEL, LiveTribe, GWT(novo console) etc.

A API também foi um tanto quanto melhorada(mudada), em alguns aspectos trazendo mais simplicidade por usar algo similar a DSLs(Domain Specific Languages) para composição dos Processos, como por exemplo:


private static ClientProcessDefinition createLoanProcess() {
ClientProcessDefinition processDefinition = ProcessFactory.build("loan")
.node("submit loan request").initial().behaviour(AutomaticActivity.class)
.transition().to("evaluate")
.node("evaluate").behaviour(WaitState.class)
.transition("approve").to("wire money")
.transition("reject").to("end")
.node("wire money").behaviour(AutomaticActivity.class)
.transition().to("archive")
.node("archive").behaviour(WaitState.class)
.transition().to("end")
.node("end").behaviour(WaitState.class)
.done();

return processDefinition;
}

Há também mudanças na manipulação dos Processos, uma nova API, ainda não posso dizer se melhor ou pior, apenas diferente, por exemplo:

Inicializando uma Instância de um Processo:


Execution execution = executionService.startExecutionByKey("ICL");
String executionId = execution.getId();

Adicionando variáveis:


Map variables = new HashMap();
variables.put("customer", "John Doe");
variables.put("type", "Accident");
variables.put("amount", new Float(763.74));

executionService.startExecutionByKey("ICL", variables);

Há melhorias também para tarefas humanas, e pelo que andei vendo, a idéia de operar o jBpm via REST também será possível, se não for, no Brasil nós implementamos uma camada de operação do jBPM via REST usando o RestEasy, a qual chamamos de Flowlet.

Novo Console

A nova tecnologia base para o Console é o GWT, o que pra mim é bem interessante, pois após passar alguns dias vendo este toolkit, é realmente algo viciante. No novo Console, até que enfim vamos ter alguma coisa perto de BAM, apesar de que já fazemos algumas coisas destas dentro do nosso JBoss Operations Network, mas sempre é bom vendo funcionalidades out-of-the-box nos produtos:

Novo Console do jBPM

Novo Console do jBPM

Novo Editor de Processos

Ainda baseado no Eclipse, o novo editor agora trás uma notação mais comum ao mundo BPM, mas sem deixar algumas funcionalidades super interessantes, como a invocação de Serviços no JBoss ESB, uso de Scripts e agora até injeção de HQL ou Sqls dentro dos nodes.

Um dos detalhes é que o novo Editor de Processo funciona apenas no Ganymed em diante, além disto, as funcionalidades até agora, ainda não são tão ricas, fazendo com que muita coisa tenhamos que editar “na mão” mesmo.

Instalando no Gamymed

Instalando no Gamymed

Aqui você pode ver um pouquinho do editor e de como ficará diferente se comparado as versões atuais:

jBpm Designer

jBpm Designer

Cenas dos Próximos Capítulos

Por hora o jBpm 4 ainda está no Alpha1, mas para os afixionados por este projeto, já tem algumas coisas interessantes para ficar antenado, e vale apena fazer o “svn co” e ficar atualizando/recompilando os releases e commits que estão sendo feitos.

Recomendo você também ficar antenado em dois blogs brazucas de altíssima qualidade que conheço que falam entre outros ricos assuntos, sobre o jBpm também, são eles:

Respectivamente de grandes amigos que tenho: Ricardo Ferreira e Vinicius Carvalho, que deverão publicar bastante coisa interessante sobre os releases que vierem por aí do jBPM.

Mais por aí

Se você acha que só o jBPM ganhará inovações, fique atento no que está vindo por aí nos seguintes projetos:

  • JBoss Seam (Consulte o Blog do Lazarotti), várias coisas acontecendo, na minha visão: Principalmente o suporte a tecnologias como Wicket, GWT e a implementação completa baseada no WebBeans.
  • Drools - Implementações de Linguagens de Processos dentro do engine de regras, o Guvnor(Gerenciador de Regras via browser), a implementação de CEP(Complex Event Processing), serão fortes candidatos para arquiteturas de serviços mais resilientes e produtivas)
  • JBoss ESB - Novo mecanismos para Providers(protocolos), permitindo implementação mais fácil de Adaptadores diversos, permitindo conexões com Tibco, Tuxedo, ERPs, Mainframes etc, com muito menos esforço.
  • MetaMatrix - Uso do JBoss DNA como novo repositório de informações e dados.

Será que agora vai?

Testando mais uma vez a m….. do Highlighter:


public class CustomerUI extends UI {

protected UIInvoker invoker;

public CustomerUI() {

super().build().AttachControllerByClassName().UseConvetions(true);

}

}