Iniciando integrações no Magic xpi a partir de eventos ocorridos em base de dados (triggers)

Veja nesta publicação como automatizar processos de integração a partir de eventos que ocorrem através da manipulação de dados em diversos bancos de dados existentes.

Um recurso muito interessante que foi introduzido na versão 4.13 do Magic xpi, é a habilidade de iniciarmos um fluxo de integração a partir de um determinado evento DML (INSERT, UPDATE ou DELETE) que ocorre em alguma base de dados acessível pelo Magic xpi.

É o novo componente/conector DBTrigger.

Ele está disponível para os BDs: MSSqlServer, Oracle, MySQL, DB2 e DB2/400. E é fácil e prático de configurar e usar.

Pré-Requisitos

Inicialmente, precisamos definir qual ou quais dos BDs suportados utilizarão este recurso em nosso ambiente Magic xpi, Este novo componente acessa as bases de dados através da tecnologia JDBC (e não por gateways nativos, como faz o DataMapper).

Portanto, faz-se necessário obter e instalar “manualmente” os drivers JDBC necessários para cada BD, no ambiente Magic xpi. Veja alguns exemplos:

MSSQL = sqljdbc4-4.0.jar ou mssql-jdbc-8.4.1.jre8.jar

MySQL = mysql-connector-java-5.1.41.jar ou mysql-connector-java-8.0.23.jar

Oracle = ojdbc7.jar ou ojdbc8.jar

DB2/400 = Jt400.jar

DB2 = db2jcc4.jar, db2jcc.jar e db2jcc_license_cu.jar

 

Estes drivers (JARs) devem ser copiados nas seguintes pastas do ambiente Magic xpi, cfe. a necessidade (BD que for necessário acessar):

Runtime\Java\DatabaseDrivers
Runtime\Gigaspaces-xpi\lib\platform\ext

 

Veja como ficaria para MSSqlServer, MySQL e Oracle:

*Nota: a versão exata do driver (JAR) pode variar, em função da versão do BD e também do Magc xpi que estiver usando no momento.

 

Outra questão, mas que não requer intervenção manual, é que há uma nova “tabela interna” na instalação do Magic xpi, para dar suporte a este novo conector.

Ela funciona como um repositório de logs/traces dos eventos ocorridos nas tabelas monitoradas:

Esta tabela é criada junto com as demais durante a instalação do “BD interno” .

Configuração

Para dar suporte a este novo componente, foi disponibilizado um novo serviço no Magic xpi, chamado DBTrigger:

 

Neste serviço configura-se diretamente os detalhes de conexão ao BD, através de parâmetros formatados no estilo JDBC.

*Nota: Pode ser necessário estudar/ambientar-se um pouco com o JDBC, para compreender corretamente como parametrizar estas conexões.

 

Clicando em “Validate” e validando-se a conexão feita, se o BD estiver acessível uma mensagem de “sucesso” será exibida:

 

Em seguida, usando o botão “Events” nós devemos cadastrar um mais eventos a serem monitorados, que resumidamente são as tabelas do banco de dados e ações (INSERT, UPDATE ou DELETE) que devem ser automaticamente checadas e rastreadas:

 

Quando a configuração do serviço DBTrigger é finalizada, ocorre uma ação importante: na pasta do projeto Magic xpi:

Na pasta:

<projeto>\<projeto>\Service\<nome_serviço>\EventActionScripts

é gerado um script de uma “trigger” a ser inserida (manualmente) na base de dados, que será a responsável por efetivamente monitorar os eventos nas tabelas selecionados nesta configuração, e registrá-los nesta nova tabela chamada TriggerAction.

No exemplo desta publicação, estaremos monitorando ações de “deleção” de registros na tabela “ifs_actlog” do BD “MGXPI413“.

Então o script gerado por este assistente foi este:

Utilização

Realizada (concluída) a configuração do serviço, devemos utilizar o novo componente DBTrigger na área de “trigger” de um fluxo de integração:

 

Neste conector é possível obter o nome da tabela onde ocorreu o evento, que tipo de evento ( D, I ou U ) ocorreu, bem como um conteúdo arbitrário chamado payload, gerado pela trigger física no BD.

E também podemos definir a frequência (pooling interval) em que o conector deve ir até a base dados (tabela TriggerAction) procurar por novos eventos.

 

É é isso! Já está pronto!

 

Observe que agora (com a trigger de BD devidamente implantada na base de dados), ao fazermos uma exclusão nesta referida tabela:

 

esta ação fica registrada na tabela TriggerAction:

 

Esta tabela é constantemente monitorada pelo conector DBTrigger (cfe. a frequência definida), em busca de registros que possuam TriggerStatus = 0.

Sendo localizado tal registro, o campo TriggerStatus muda para ‘1‘ e o fluxo de integração é automaticamente executado:

 

Como já deve estar pensando, a quantidade de monitoramentos definidos e o volume de transações irão fazer esta tabela crescer muito em quantdiade de registros.

Para cuidar disso, lá na configuração inicial do serviço existe um parâmetro chamado “Cleanup Age“:

 

Periodicamente (1x ao dia, por volta da meia-noite) o Magic xpi vasculha esta tabela e elimina (DELETE) os registros que sejam mais antigos que este limite de dias, com base na data e hora que o evento ocorreu.

 

Manoel Frederico Silva – Gerente de Tecnologia e Evangelista MAGIC – Magic Brasil
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *