Guvnor, sem ele: “Aquela velha Arquitetura SOA”

Como fora dito neste blog tempos atrás o projeto Drools vem ganhando cada vez mais força, na verdade, o que eles chamam de BLIP, que é uma “plataforma inteligente” para softwares diversos.

Numa Arquitetura SOA, um dos pontos mais fortes que precisamos lutar é a “Resiliência”, termo oriundo da física e significa a capacidade de resistir a situações adversas (choque, stress, etc), no caso de SOA: Choque, stress, mudança de cenários e regras, são coisas extremamente comuns e aceitáveis, portanto é importante sabe como lidar com isto.

O Drools ajuda na separação de código de infraestrutura (aqueles famosos sessionFactory.save(obj)), das regras de negócios (if (obj.isValidForLoan())). Óbviamente, esta disciplina em SOA vai muito mais profunda, mas vamos ver um caso mais realista para vermos o valor do Guvnor.

Imagine que você tem uma camada BPM, seja ela qual for, e um ESB da sua escolha, até aqueles que nunca ouvimos falar por aqui, imagine que algumas decisões do fluxo, podem variar totalmente de acordo com alguns cenários, que não vão depender única e exclusivamente do “meche-daqui-liga-daqui” de BPEL, e sim, de fatores de “Regras de Negócio”, baseado no texto meu amigo Edson Tirelli, posso arriscar em chamar isto de “Rules Orchestration”, pois o que pode definir as decisões e lógicas estão mais que documentadas, catalogadas, numa linguagem simples e visual para ninguem menos que humanos lidarem.

Arquitetura de Referência

Arquitetura de Referência

Uma das atividades que eu venho desenvolvendo em algumas das horas vagas é promover um meio de orquestração muito mais baseada em fatos e eventos, do que nos desenhos de processos que são na prática bem poucos dinâmicos, mas isto é um assunto para outro post que fale mais detalhadamente sobre CEP/ESP dentro de SOA, por hora vamos ao Guvnor que é o que interessa.

Guvnor

Com o Guvnor, você pode escrever as regras de forma manual:

Edição das Regras

Edição das Regras

Além disto, pode utilizar de DSL (Domain specific Languages) para facilitar a criação das regras por parte de usuários de negócio:

Editando Regras com ajuda de DSL

Editando Regras com ajuda de DSL

Outro fator importante é a capacidade de realização de testes pelos usuários, eles podem querer editar as regras, e podem querer saber quais impactos isto pode causar, para isto o Drools disponibiliza uma espécie de “TestCase” para Regras, veja a imagem quando todos os testes passam:

TestCase de Regras: Tudo certo

TestCase de Regras: Tudo certo

Mas se você informar algum valor diferente para o teste, você pode antecipar os resultados da execução no TestCase também, na figura a seguir, o resultado não executado 100%:

Hum....não tão certo assim

Hum....não tão certo assim

O Guvnor ainda tem a capacidade de você acessar as regras de negócios usando uma conexão WebDav, ou ainda na chamada do RuleAgent, chamar uma URL ou até mesmo um arquivo físico do filesystem local para a execução das regras.

Acesso WebDav ao repositório

Acesso WebDav ao repositório

Para acesso ao repositório de regras:


try {

props = new Properties();

props.load(ServiceAvaliadorCompras.class.getResourceAsStream("guvnor.properties"));

RuleAgent agent = RuleAgent.newRuleAgent(props);

ruleBase = agent.getRuleBase();

workingMemory = ruleBase.newStatefulSession();

System.out.print("OK");

} catch (IOException ex) {

Logger.getLogger(ServiceAvaliadorCompras.class.getName()).log(Level.SEVERE, null, ex);
}

.....

@WebMethod(operationName = "evaluateStatusByValue")
public String evaluateStatusByValue(@WebParam(name = "amount") Double amount) {

Solicitacao sol = new Solicitacao();

sol.setValorSimplificado(amount);

workingMemory.insert(sol);

workingMemory.fireAllRules();

return sol.getStatus();
}

Fique atento aos eventos que estaremos presentes este ano, com certeza o Guvnor vai estar presente em alguma das palestras.

Até a próxima.

E

Lançamento dia 21 da comunidade JBossBrasil em São Paulo

Clique para ir ao site do evento

Clique Aqui

Amigos, dia 21 de Janeiro, na próxima quarta-feira a partir das 19:00, no auditório da GlobalCode, será lançada a comunidade JBossBrasil, que tem por intuíto aproximar ainda mais os desenvolvedores brasileiros as tecnologias JBoss que estão disponíveis no mercado.

A idéia desta comunidade é ser um JBUG- JBoss User Group, no caso o JBUG Brasileiro, que visa divulgar e ajudar as comunidades de desenvolvedores em todo o Brasil, então, será muito comum ver o JBossBrasil realizar eventos com outros JUGs regionais, entre eles: CEJUG, DFJUG etc, trazendo sempre alguém da comunidade ou um funcionário JBoss para falar de alguma tecnologia.

O evento em São Paulo, é gratuíto, mas conta com a arrecadação de Leite em Pó, onde estamos estruturando uma área social, que será um dos pilares desta comunidade, o local da reunião será o aconchegante auditório da GlobalCode, que fica no Bairro do Paraíso.

O palestrante da noite, será o Chris Morgan, que é Senior Marketing Manager da plataforma JON, apesar do Marketing no cargo dele, Chris é um grande técnico que por anos atuou como Arquiteto e Engenheiro de Vendas, sendo assim ele vai poder falar de forma clara e profunda a respeito da família JBoss Operations Network: JOPR e RHQ.

Meu amigo João Paulo Viragine (SeamFanBoy), está organizando uma forma de transmitir o evento para membros da comunidade de fora de São Paulo, assim que tivermos os detalhes, vamos divulgar para os membros da comunidade no site dentro Ning (http://jbossbrasil.ning.com).

A Comunidade

O Objetivo é fortalecer cada região através de Embaixadores JBoss, estes por sua vez são pessoas interessadas em compartilhar conhecimento seja via blogs, artigos ou até mesmo palestras locais em parceria com os JUGs. Existem as regras para se tornar um Embaixador JBoss, que está no seguinte link:

http://jbossbrasil.ning.com/embaixadores

Um Comunidade sem donos!

A idéia é termos o que informalmente chamamos de JUGs 2.0, onde a colaboração é muito maior do que a centralização de poder, já que no site da comunidade, as pessoas podem ter seus sites pessoais, postar vídeos, notas, comentários etc. Claro, deve haver uma certa moderação para evitar spams ou outras ações desagradáveis, mas a idéia é fazer com que todos possam ter voz ativa.

Um ponto de busca de profissionais JBoss/Java

Certa vez um cliente perguntou pra mim numa reunião:  ” Edgar, onde arrumo uns caras bons de JBoss para contratar? ” Pensei em responder :

a) Publicar na Lista do SouJava

b) Anúncia num destes sites de emprego tipo NetCarreiras, Ceviu etc…..

Mas meu senso crítico já pensou na trucada que ele poderia dar: “Mas Edgar, eu preciso de algo focado e específico JBoss.” Foi então que mais uma vez esta comunidade fez sentido! E podem ter certeza que lá será uma vitrine para descobrir talentos para trabalhar nas inúmeras empresas que utilizam estas tecnologias nos dias de hoje, sem falar na surpresa que o Alessandro Lazarotti está terminando de construir que será um grande presente para a comunidade…Aguardem!

Sem mais delongas, se você mora em São Paulo, não perca a oportunidade de participar do lançamento da comunidade, com certeza a palestra, networking, brindes e cofee-break valerão a pena! E para quem não puder ir, iremos ainda este semestre em várias cidades realizando eventos similares.

[]s

E

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);

}

}

Feliz 2009 para todos

Saúde, paz, alegria, amor, amizade e tudo que for de melhor para você neste ano que começa, são os meus mais sinceros votos, neste domingo nublado de São Paulo, esperando a carne para o almoço descongelar.

Voltei de férias, que graças A Deus foram ótimas, não melhores pela saudade da esposa, que foi pro outro lado do estado ficar com a família dela, mas tudo bem, em breve voltaremos a longe Oriximiná :). Uma das coisas interessantes da viagem, foi ter encontrado em Santarém (cidade de onde peguei o avião para voltar pra SP), ter encontrado 4 turistas  de “meiaidade“(É assim agora né?) de Washington-DC, tomando suco de cupuaçu, e o que mais me chamou a atenção, foi um deles comentando que “Não senti nada de mosquitos”, logo, eu tive que elogiar o bom-gosto(será que tá certo?), destes turistas que passaram 22 dias visitando a Amazônia não só do Brasil, mas colombiana, Boliviana etc.

Praça de Oriximiná

Praça de Oriximiná

Natureza

Natureza do Lugar

Uma rede, um banho ou um futebol?

Uma rede, um banho ou um futebol?

Uma ducha

Uma ducha

Algumas atividades já de começo de ano

Janeiro

JBossBrasil

JBossBrasil - Lançamento Oficial em Janeiro 2009

Está prestes a confirmas a data do lançamento da Comunidade JBossBrasil, que ocorrerá com certeza em São Paulo e Brasília, além de algumas outras cidades que estamos trabalhando, assim que tiver a data final estaremos publicando-a aqui.

Chris Morgan

Chris Morgan

O palestrante para lançamento da comunidade em São Paulo, será Chris Morgan, Sr. Product Mkt Manager para o JBoss Operations Network, que estará no Brasil na semana do dia 19 ao dia 23 de Janeiro, visitando clientes, e com certeza proferindo algumas apresentações para a comunidade JBoss no Brasil.

Se você tem interesse em conhecer um pouco sobre o JBoss Operations Network, eu recomendo fortemente o artigo do meu grande amigo Alexandre Gomes no blog da empresa Sea Tecnologia ( http://blog.seatecnologia.com.br) ou clique aqui para ir direto no link deste post.

JBoss Virtual Experience - 11 de Fevereiro 2009

JBoss Virtual Experience - 11 de Fevereiro 2009

No dia 11 de Fevereiro, além do meu aniversário :), haverá uma conferência Internacional online da JBoss - JBoss Virtual Experience. Este evento acontecerá agora, pois o evento mundial anual JBossWorld acontece apenas em Setembro, logo, é uma oportunidade boa e barata de ficar por dentro de algumas tecnologias Java e JBoss que a empresa está trabalhando. Veja detalhes aqui: http://www-2.virtualevents365.com/jboss_experience/ .

Sei que este ano temos vários planos, entre eles realizar a primeira conferêncial oficial de JBoss no Brasil, onde o foco será um evento e comunidade, e claro, para que os profissionais possam mostrar seus talentos no uso das tecnologias emergentes e populares no mercado, além é claro, de fazer o máximo para apoiar os JUGs locais e eventos Java da comunidade.

Ufa, e olha que o ano só está começando! Com certeza, este será um ano muito especial, e espero muito encontrar e reencontrar vários amigos nestas atividades por todo o Brasil.

Abraços

E