Objetivo
Este spike tem o objetivo de verificar de que maneira o suporte ao protocolo AMQP no Datasul pode ser tratado como um componente, a ser executado de maneira separada do ERP, bem como de forma integrada ao mesmo.
Premissas
A componentização do suporte ao AMQP no Datasul deve considerar as seguintes premissas:
- O suporte ao AMQP é uma feature em desenvolvimento, e por isso, deve ser adotada pelos clientes sob demanda, ou seja, deve vir desativada por padrão.
- Deve ser executada separadamente do container Java do ERP, para permitir, por exemplo, distribuição de carga de trabalho e isolamento de processos.
- Entretanto, também deve permitir a execução de forma integrada ao container Java do ERP, nos casos onde a facilidade de gerenciamento seja a necessidade primária.
- O cliente deve poder instalar a feature através do console de atualização do ERP, ou de outra ferramenta que a TOTVS venha a disponibilizar.
Considerações
Situação atual
Atualmente a implementação do suporte ao AMQP no Datasul está disponível somente para o Novo Framework e gera um artefato do tipo Web Archive (WAR), para execução no container Web Apache Tomcat, escrito em Java, e um artefato do tipo Progress Library (PL), para execução no AppServer Progress.
O componente WAR (totvseai-mb.war) tem um tamanho total de 27 Mb e traz em suas dependências o framework SpringBoot. Este framework é o responsável pela maior parte do tamanho do artefato.
O componente PL (totvseai-mb.pl) tem um tamanho total de 254 Kb.
Todos os componentes executam integrados ao ERP. É possível retirá-los da instalação, entretanto pode ocorrer erro, principalmente na camada Progress.
Situação proposta
A proposta de componentização para o suporte do AMQP no Datasul sugere que o componente WAR seja decomposto em 3 artefatos:
- Um artefato core, contendo as principais classes do suporte ao AMQP. Este artefato seria independente da forma de operação.
- Um artefato standalone, contendo as classes e dependências necessárias para executar o suporte ao AMQP de forma separada do ERP. O artefato core seria uma das dependências deste artefato.
- Um artefato embedded, contendo as classes e dependências para permitir que o suporte ao AMQP execute embutido no container do ERP. Este também dependeria do artefato core.
O diagrama abaixo descreve a estrutura da decomposição e as principais dependências dos artefatos. Demonstra também o relacionamento com o artefato Progress.
![](/download/attachments/433251768/Componentiza%C3%A7%C3%A3o%20AQMP%20Datasul-Page-1%20%281%29.png?version=1&modificationDate=1541538273917&api=v2)
Conforme se pode ver no diagrama, quando a execução for standalone, será necessário prover algumas configurações em arquivo, como por exemplo, a URL do AppServer Progress a conectar. Quando a execução for embedded, as propriedades serão fornecidas pelo container Java onde o ERP estiver rodando.
Resultados preliminares
Para verificar qual seria a melhor abordagem a adotar para a componentização, foi necessário realizar uma prova de conceito (PoC), que gerou os seguintes resultados:
- Componente core: totvseai-mb-core.jar, com tamanho de 18 Kb.
- Componente standalone: totvseai-mb-standalone.jar, com tamanho de 20 Mb, devido a dependência do SpringBoot, que incorpora uma versão reduzida do Apache Tomcat. Para execução deste componente, basta a linha de comando seguinte: java -jar totvseai-mb-standalone.jar. Além disso, ter a pasta config contendo o arquivo application.properties com as propriedades server.port e totvs.appserver.
- Componente embedded: totvseai-mb-embedded.jar, com tamanho de 12 Mb. As propriedades necessárias serão fornecidas pelo ERP.
As classes contidas nos componentes podem ser vistas no diagrama a seguir:
![](/download/attachments/433251768/Componentiza%C3%A7%C3%A3o%20AQMP%20Datasul-Page-2.png?version=1&modificationDate=1541538273890&api=v2)
Expedição dos componentes
Em relação à expedição dos componentes, o GCAD de Joinville foi acionado para obter informações sobre como disponibilizar os componentes para os clientes, obedecendo as premissas apontadas neste documento. O retorno obtido informa que está em andamento uma iniciativa que permitirá a instalação sob demanda de partes do ERP. Entretanto, como é um assunto em desenvolvimento até a presente data, será necessário um contato futuro com a equipe para verificar os procedimentos exatos a serem tomados.
Em anexo, o e-mail solicitando um posicionamento da equipe e a resposta.
![](/rest/documentConversion/latest/conversion/thumbnail/433251774/1)
Próximos Passos
Como ações efetivas a serem realizadas, tem-se as seguintes:
- Oficialização da estrutura definida na PoC. O arquivo anexo contem os fontes criados ou alterados para o spike.
totvseai-mb-spike.zip - Alteração do processo de criação de aplicativos externos para só permitir incluir aplicativos com canal AMQP quando o componente totvseai-mb.pl estiver presente no PROPATH do AppServer Progress.
- Conversar com a equipe do GCAD para conhecer a fundo a nova ferramenta de implantação do novo framework e sugerir as alterações necessárias para permitir a instalação do suporte ao AMQP no Datasul sob demanda e nos dois formatos: standalone e embedded.
- Após as definições com a equipe do GCAD, incluir os componentes do suporte ao AMQP no processo de expedição oficial do novo frame Datasul.