terça-feira, 13 de dezembro de 2016

Regras de negócios com Drools: Atualização em tempo real com KieScanner

Veja postagens anteriores:

Chegou a hora de deixar as coisas um pouco mais empolgantes e mostrar como podemos modificar as regras de negócio, ver as mesmas ser aplicadas em tempo real sem reinicializar a aplicação Java!



KieScanner

Toda a ideia é possível por causa das implementações de KieScanner e da API kie-ci. O objetivo é utilizar as APIs do maven para atualizar a KieBase quando o artefato maven é atualizado. Para que tudo funcione bem, temos que usar uma das seguintes formas de gerenciar versões(veja esse artigo da Oracle para mais informações):


  • SNAPSHOT: Quando uma versão termina em SNAPSHOT, o artifato é atualizado automaticamente baseado na última instalação no repositório;
  • Faixa de versões: Podemos usar uma faixa de versão que queremos executar na nossa aplicação. Por exemplo, podemos querer somente somente versões entre 1.0 (inclusive) e 2.0. Assim, podemos usar o seguinte: [1.0,2.0), ou seja, versões que obedeçam a seguinte regra serão usadas: 1.0 <= x < 2.0;
  • Há também o uso de LATEST, mas como está sendo um pouco colocado de lado pelos desenvolvedores do Maven, não é recomendado o uso. O LATEST escanearia a última versão.
O uso do KieScanner requer o seguinte:

  • É obrigatório ter kie-ci no classpath;
  • Temos que configurar o settings.xml do maven local (ou apontar uma configuração) que tenha os dados do repositório remoto caso queiramos ler de um repositório remoto;
  • Adicionar o código Java para adicionar o KieScanner;

O código Java é bem simples. Ao criar o container, você precisa simplesmente "ligar" o scanner para ele. Em outras palavras, adicione as seguintes linhas de código:

KieScanner kScanner = kServices.newKieScanner(kContainer);

kScanner.start(5000);


Pra evitar que isso tudo fique abstrado, eu criei um exemplo que está no nosso github e também um vídeo explicando um pouco melhor, vejam o vídeo:



O código dos projetos utilizados acima podem ser encontrado no nosso github:

Regras de negócios
https://github.com/AprendendoJava/regras-de-negocio-com-drools/tree/master/drools-analise-fundos

Código com Kie Scanner
https://github.com/AprendendoJava/regras-de-negocio-com-drools/tree/master/kie-scanner-test



Nenhum comentário:

Postar um comentário