Visando ofertar uma solução do seguimento Agro x BackOffice Protheus mais adequada a necessidade do cliente, foi criado o PIMSConnector com arquitetura responsável por realizar integrações entre PIMS X Protheus.
A seguir serão apresentadas seções com as principais visões arquiteturais da aplicação. Cada uma possui um foco distinto e possivelmente um público específico.
Figura 1 - Visão Geral do Modelo de Componentes do PIMSConnector
Segue abaixo as especificações de cada componente mostrado na figura acima:
- Aplicações PIMS: são as aplicações especializadas desenvolvidas pela TOTVS Agro que precisam trocar dados com ERP's utilizados pelos clientes. Exemplos: PIMS Multicultivos, PIMS CS, PIMS PI e PIMS MI;
- Aplicações ERP: são produtos como Protheus, Datasul, que são utilizados pelos clientes e que precisam trocar informações com as aplicações especializadas da TOTVS Agro;
Considerações Sobre Tecnologias de Comunicação
Uma das características importantes a considerar neste projeto é que, a comunicação feita pelos drivers com as aplicações a serem integradas, poderão dar-se de diversas formas e com tecnologias distintas. Há integrações feitas através da comunicação direta com bancos de dados, comunicação através de web services SOAP, web services REST, chamadas HTTP, troca de mensagens através de middlewares orientados a mensagens, sockets, e quaisquer outras que possam surgir derivadas das anteriores. É importante que cada driver implementado seja independente da forma de comunicação adotada, para que se possa permitir que a regra de negócio seja a mesma em cada situação, para não haver duplicação. Para isso existe o conceito de Wrapper de Comunicação. Wrappers de Comunicação são componentes responsáveis exclusivamente pela comunicação do driver com as aplicações que precisam ser integradas, ou seja, das quais os drivers recebem os dados e para as quais eles enviam estes dados, após o processamento da integração.
A ideia é que os Wrappers implementem uma interface que possui um método que possa ser chamado pelos aplicativos envolvidos na integração para a entrega dos dados (obtenção passiva de dados), ou então o Wrapper implementará uma estratégia de recuperação dos dados (obtenção ativa dos dados). Uma vez que tenha obtido os dados, o Wrapper invocará no DataDriver o método responsável por receber os dados e o DataDriver passará os dados adiante, fazendo qualquer alteração necessária. Neste processo o DataDriver será passivo na obtenção dos dados, uma vez que ela é dependente da tecnologia de comunicação.
EAI PIMSConnector
O EAI PIMSConnector permite a troca de mensagens no formato XML (eXtensible Markup Language), com qualquer produto ou software que disponibilize um WebService para esta finalidade. O EAI PIMSConnector interpreta e gerencia as informações enviadas ou recebidas por aplicativos PIMS ou por outro Software. Após interpretar as informações o EAI PIMSConnector entrega aos Adapters para realizar o processo de validação de negócio. Aos finalizar estas validações o EAI PIMSConnector devolverá ao software que originou as informações um aviso (XML) que identifica se o processamento foi realizado com sucesso ou falha. É importante ressaltar que o EAI PIMSConnector não é responsável por realizar a validação de negócio, apenas envia e recebe mensagens. Ele também é responsável por tentar entregar a mensagem novamente, quando a entrega anterior não foi possível. Desta maneira, erros no processamento da mensagem, problemas na regra de negócio envolvida na integração, problemas com consumo de memória, normalmente são decorrentes da rotina envolvida no processamento da mensagem e não do EAI PIMSConnector.
Acessando o WSDL do EAI PIMSConnector
O EAI PIMSConnector possui duas URLs distintas, que podem ser acessadas conforme os endereços abaixo:
URL1: http://<servidor-PIMSConnector>:<porta-PIMSConnector>/ PIMSConnectorWS/EAIService?wsdl
URL2: http://<servidor-PIMSConnector>:<porta-PIMSConnector>/ PIMSConnectorWS/PIMSConnectorWS?wsdl
InternalID
É uma ferramenta utilizada para converter campos de chaves primárias de aplicativos externos para a chave primária do aplicativo interno. Pode ser referenciada como EAI de – para ou depara.
Durante a troca de mensagens, o aplicativo externo pode ter mais, menos ou diferentes campos correspondentes à chave primária. Assim, fica impossível identificar qual registro corresponde aos valores recebidos na mensagem. Isso pode ocorrer com vários aplicativos externos ao mesmo tempo e para a mesma mensagem. Para resolver essa situação, tornando-a invisível para o Helper e o Adapter durante a extração dos dados recebidos, foram criadas as funções do InternalId.
Foi adicionado um código interno (InternalId) no XML da mensagem para identificar os campos chaves do aplicativo externo. Chegando ao destino, os campos são convertidos para os valores locais no corpo da estrutura.