Páginas filhas
  • 5. Tratamento de de-para nos adapters (InternalId)

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 correspondente à chave primária ou às chaves estrangeiras. 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 para 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 Record do Helper.

Exemplo


A estrutura do cadastro de empresas no Logix é armazenada na tabela ”empresas”, onde o campo chave é “cod_empresa”. Porém, na estrutura do ERP Protheus existe a necessidade se incluir o campo “filial”. Desta forma é necessário criar uma estrutura InternalId, onde existam campos equivalentes de “cod_empresa” no Logix, para cada cadastro de “empresa’ + ‘filial”.

TABELA DE EMPRESAS

LOGIX

PROTHEUS

Código da empresa

Código da empresa

Código da filial

01

01

02

02

01

03

03

01

04

04

02

01

Desta forma, a partir do exemplo, tem-se que a empresa “01” do Logix corresponde à empresa e filial “01” “02”. Se fosse enviado somente o código da empresa, quando o Protheus enviasse o código “01” conflitaria com três códigos no Logix, tornando falha a troca de mensagens.

Definiu-se que, por padrão, cada aplicativo sempre enviará o seu conteúdo da InternalId para o aplicativo externo, para que armazene o código nos dois aplicativos e que ambos possam fazer a conversão dos valores durante trocas de mensagens posteriores.

Por ser possível trocar mensagens com vários aplicativos ao mesmo tempo, o InternalId enviada pelo aplicativo origem sempre será o seu próprio código, cabendo ao aplicativo externo fazer a conversão para o seu valor local.

A construção dos campos da InternalId será feita no Adapter por meio de funções pré-definidas.