A camada do EAI Protheus compreende uma série de ferramentas para auxiliar o envio e recebimento de mensagens e o seu gerenciamento.
O Schedule Protheus é utilizado para o envio e recebimento de mensagens de EAI no modelo Assíncrono.
A fila de integrações do EAI (tabela XX3) guarda as mensagens enviadas e recebidas pelo EAI Protheus.
Para entender os termos e a configuração do Schedule Protheus consulte o artigo disponível no TDN clicando aqui.
Neste tipo de transação, a rotina de processamento gera o XML de integração, e esta mensagem é gravada na tabela XX3 (A fila de mensagens do EAI Protheus). De acordo com a recorrência cadastrada para a rotina de transmissão das mensagens do EAI esta fila é lida e os registros que se encontram em condições de envio são enviados para o sistema receptor. Um registro está em condições de envio se respeitar as condições a seguir:
Figura 1 - Status das mensagens na fila do EAI Protheus
Uma rotina que já tenha o seu número de execuções maior ou igual a 4 somente será reprocessada caso exista intervenção do usuário, através do botão 'tentar novamente'. Desta maneira, o número de tentativas da mensagem é reiniciado e o status da mensagem retorna para 'Aguardando execução'. Este processo somente pode ser realizado em mensagens assíncronas e que estejam nos status de 'Falhou' ou 'Bloqueado'.
Figura 2 - Detalhe da barra de botões da interface do EAI, no Schedule Protheus. O primeiro botão destacado é o botão de 'tentar novamente'.
Para que o envio das mensagens assíncronas seja realizado, é necessário que seja realizado o cadastramento, no Schedule Protheus, da rotina FWEAI. Esta rotina é responsável pelo envio e recebimentos das mensagens na fila do EAI. Caso necessário, pode ser realizado o agendamento da rotina FWEAISEND. Esta rotina é exclusiva para o envio das mensagens da fila do EAI. O agendamento desta rotina é realizado por Empresa cadastrada no sistema.
Neste tipo de transação uma mensagem é enviada de outro sistema para o EAI Protheus. A camada de Webservices realiza a gravação desta mensagem na tabela XX3 (fila de mensagens do EAI Protheus). De acordo com a recorrência cadastrada para a rotina de recebimento esta fila é lida e as respectivas rotinas de processamento das mensagens são disparadas. Para que uma rotina tenha o seu processo de recebimento iniciado ela deve estar em condições de recebimento, respeitando os seguintes pontos:
Uma rotina que já tenha o seu número de execuções maior ou igual a 4 somente será reprocessada caso exista intervenção do usuário, através do botão 'tentar novamente'. Desta maneira, o número de tentativas da mensagem é reiniciado e o status da mensagem retorna para 'Aguardando execução'. Este processo somente pode ser realizado em mensagens assíncronas e que estejam nos status de 'Falhou' ou 'Bloqueado'. O detalhe deste botão pode ser visualizado na Figura 8.
Para que o recebimento das mensagens assíncronas seja realizado, é necessário que seja realizado o cadastramento, no Schedule Protheus da rotina FWEAI. Esta rotina é responsável pelo envio e recebimentos das mensagens na fila do EAI. Caso necessário, pode ser realizado o agendamento da rotina FWEAIRECE. Esta rotina é exclusiva para o recebimento das mensagens da fila do EAI. O agendamento desta rotina é realizado por Empresa cadastrada no sistema.
Estão disponíveis para agendamento no Schedule Protheus as seguintes rotinas do EAI:
O processo de envio somente é inicializado após o término do processamento de todas as mensagens recebidas que estão na fila em condições de serem processados.
As rotinas que são responsáveis por realizar o processamento das mensagens enviadas e recebidas são cadastradas no ambiente do Configurador Protheus. Em Ambiente/Schedule/Adapter E.a.i, no Cadastro de Adapter EAI (CFGA020) é possível incluir, alterar e excluir um adapter no Protheus.
Figura 3 - Tela do browse do Cadastro de Adapters
O adapter APCFG060 é nativo do próprio EAI Protheus, e seu cadastro é realizado automaticamente. Mesmo que este adapter seja excluído pelo usuário ele será recriado automaticamente. Este adapter é utilizado nas mensagens de EAI que utilizam a arquitetura da Mensagem Única TOTVS.
Figura 4 - Parte superior do Cadastro de Adapters no Protheus
São campos importantes deste cadastro:
O conteúdo destas tags pode conter dois valores: E – Para exclusivo e C para compartilhado.
Esta melhoria está disponível somente a partir da lib label 06042015 do Protheus. |
É possível, para adapters do tipo Mensagem Única Totvs (campo XX4_UNMESS = 1-Sim) com canal de Envio EAI (campo XX4_CHANEL =2-EAI) o envio de mensagens para mais de um destino e também o envio de ResponseMessage (respostas de mensagens assíncronas) para valores diferentes dos especificados nos parâmetros MV_EAIURL2, MV_EAIMETH, MV_EAIWS, MV_EAIPASS e MV_EAIUSER (para detalhes sobre estes parâmetros, veja o tópico parâmetros importantes do EAI Protheus.).
Cada rota de EAI é definida pelo produto integrado (nas Mensagens Únicas Totvs este valor é conteúdo do atributo name, da tag Product) e pela aplicação de origem integrada (valor da tag SourceApplication do Xml). Desta maneira cada registro cadastrado na tabela XX4 (cadastro de adapters) pode possuir somente uma rota destinada ao par Produto/aplicação de Origem.
No exemplo abaixo podemos ver onde esta informação é trafegada no Xml da Mensagem Única TOTVS:
Exemplo de cabeçalho de Xml de Mensagem Única TOTVS
No exemplo acima, teríamos o produto integrado RM, com a aplicação origem sendo PR11_BRA.
Vejamos agora a imagem do novo cadastro de adapters:
Nova tela do cadastro de adapters do Protheus
Como funciona o roteamento no Protheus?
No grid de roteamento cadastramos as informações sobre o produto integrado no campo Produto (XB0_PROD), onde informamos o produto do roteamento. No campo Aplicação Ori. (XB0_SOUIRCE) indicaremos a aplicação origem do produto integrado.
No campo Envia (XB0_SENDER) iremos informar se aquela rota é para envio (1=Sim) ou somente para a geração da ResponseMessage (2=Não). E qual co comportamento do EAI para ambos os casos?
Quando é disparada uma integração no Protheus o EAI busca neste grid de roteamento informações de todas as rotas cadastradas com Envia=1-Sim. Ele então faz o disparo da integração para cada rota cadastrada. Rotas configuradas com o campo Envia=2-Não não são enviadas. Como não é possível, em múltiplos envios, realizar controles de transação e também devido ao tempo de resposta de cada rota integrada, para que seja possível cadastrar mais de uma rota de envio o adapter deve estar configurado, no campo Método (XX4_METODO) com a opção 2=Assíncrono.
Vamos mostrar como cadastrar as rotas para um adapter de Mensagem Única TOTVS. Vamos utilizar para este exemplo o adapter FINA010 (Cadastro de Naturezas).
Parte superior do cadastro de adapters, onde cadastramos a rotina FINA010
No exemplo acima, cadastramos a mensagem como síncrona. Neste caso, poderemos somente cadastrar uma rota de envio (mas podemos cadastrar mais de uma rota de resposta)
Vamos agora cadastrar as rotas no grid de roteamento:
´
Rotas cadastradas para o adapter
Veja que cadastramos mais de uma rota para um adapter síncrono. Mas somente uma é rota de envio. As demais são apenas rotas de resposta.
Na parte inferior deste cadastro existe uma interface de Tags para Busca. É possível incluir neste campo tags nas quais se deseja pesquisar o valor, e o valor destas tags é gravada concatenada com '|', posteriormente no campo XX3_REFER, no mesmo registro da mensagem.
No EAI Protheus existe a possibilidade de se cadastrar, para as Mensagens Únicas TOTVS, um relacionamento entre a Empresa e Filial de processamento que chegou na mensagem com uma existente no Protheus. Isto se deve ao fato de que, na Mensagem Única TOTVS os valores trafegados na mensagem são sempre do sistema que enviou a mensagem, cabendo ao sistema receptor a tradução das informações trafegadas. Desta forma é enviada na mensagem o valor do correspondente a Empresa e Filial do sistema que originou a mensagem o que, em muitas vezes, não coincide com o código destas entidades no Protheus.
Vamos observar os campos deste cadastro, no menu Ambiente/Schedule/Emp.Fil Msg. Unica (APCFG050):
Figura 5 - Tela do cadastro de De/para de Empresas e FiliaisDe
A transformação dos valores recebidos para os valores de contexto do Protheus é realizada automaticamente pelo EAI Protheus. Como isto é realizado pode ser verificado no tópico Montagem de ambientes no recebimento das mensagens pelo EAI Protheus.
De acordo com as definições da Mensagem Única TOTVS os valores transitados nas mensagens refletem sempre os códigos dos produtos que as enviam. Por este motivo existe um facilitador que pode ser utilizado pelas Mensagens Únicas TOTVS. Através do cadastro de De/Para de mensagens é possível realizar o relacionamento dos códigos recebidos e associar com os códigos internos do Protheus.
Vamos verificar os campos deste cadastro, no menu Ambientes/Schedule/De.Para Msg.Unica (APCFG070):
Figura 6 - Tela do Cadastro de De/Para de Mensagem Única TOTVS
Os campos do formulário deste cadastro são:
O grid deste cadastro possui dois campos:
Importante: O preenchimento do formulário deste cadastro é definido para cada mensagem no Protheus, e a regra para os campos Tabela, Alias, Campo, Valor Externo e Valor Interno é definida pelo criador da mensagem. O Acesso e manipulação das informações deste facilitador não são realizados pela camada do EAI Protheus e sim pela camada do adapter. A utilização ou não deste recurso pelo adapter é de responsabilidade da equipe que o criou.
As rotinas utilizadas internamente pelos adapters para realizar a manipulação destes registros são demonstradas no tópico Funções utilizáveis no EAI Protheus.
O EAI Protheus utiliza alguns parâmetros de sistema para definir o comportamento da integração. Estes parâmetros são listados abaixo:
A classe FWEAI é a classe responsável por criar os objetos principais do EAI Protheus. Para verificar o funcionamento desta classe, acesse a sua documentação no TDN clicando aqui.
O EAI Protheus permite o processamento das mensagens recebidas na empresa e filial indicadas no cabeçalho da mensagem.
Para mensagens do envelope TOTVSIntegrator o valor recebido nas tags DocCompany (empresa) e DocBranch (filial) são consultados e seus valores utilizados para determinar ao EAI Protheus qual será o par Empresa/Filial no qual o ambiente será criado. Caso o valor destas tags sejam inválidos no contexto do Protheus (empresa e filial inexistente ou inválidas) é retornado uma mensagem de SoapFault para o sistema que enviou a mensagem.
Para mensagens da arquitetura de Mensagem Única TOTVS (TOTVSMessage) estes valores são recebidos nas tags CompanyId (Empresa) e BranchId (Filial). Estas tags estão no path /TOTVSMessage/MessageInformation do XML recebido. Para as Mensagens Única TOTVS existe um comportamento adicional para a montagem de ambientes. Primeiramente é verificado se o par empresa/filial recebido na mensagem existe no De-para de Empresas no Protheus (tabela XXD). Caso seja encontrado o relacionamento de de-para no Protheus o ambiente é montado com os valores encontrados. Caso não seja encontrado o relacionamento é realizada a tentativa de montagem de ambiente com os valores recebidos diretamente na mensagem. Em ambos os casos (encontrando o relacionamento e não encontrando-o) a empresa e filial são validadas, e em caso de não possibilidade de processamento é retornada um SoapFault para o sistema que enviou a mensagem.
O Ponto de entrada EAICHGEMP é um ponto de entrada utilizado, no recebimento das mensagens únicas pelo EAI Protheus para que seja possível dizer para qual empresa e filial o ambiente deverá ser aberto. O array PARAMIXB enviado neste ponto de entrada recebe possui cinco elementos:
O retorno esperado deste ponto de entrada é um array de duas posições, sendo a primeira posição o valor da empresa/grupo e a segunda posição o valor completo da filial. Exemplo de retorno esperado do ponto de entrada = {'18',' D MG 01'}. A empresa e filial retornados no array devem ser válidas no contexto do Protheus.
Caso seja retornado um array vazio neste ponto de entrada, o EAI segue o caminho descrito no tópico Montagem de ambientes no recebimento das mensagens pelo EAI Protheus.
Status do documento | Concluído |
---|---|
Data | 18/11/2014 |
Versão | 1.0 |
Versão anterior | 1.0 |
Autores |
Índice resumido |
Índice |