Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
themeEmacs
languagexml
linenumberstrue
<?xml version="1.0" ?> 
<internalId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<internalIdRow>
		<Code>CompanyInternalId</Code> 
		<FieldList>cod_empresa</FieldList> 
		<File>fnd_empres</File> 
	</internalIdRow>
</internalId>

Onde:

  • <internalId> - Será detalhado mais abaixo;
  • <Code> - Nesta tag deve ser informado o nome do campo "de-para". É um nome livre, sem caracteres especiais;
  • <FieldList> - Nesta tag deve ser informado o nome do campo da tabela. Pode ser um ou N campos separado por vírgula “,”;
  • <File> - Nesta tag informamos o nome da tabela.

...

  • Se o WSDL é válido;
  • Se o ambiente está ativo;
  • Se a aplicação Externa possui as Transações Ativas e na versão correta.

InternalId

...

É utilizado para converter campos de chaves primárias de aplicativos externos para a chave primária do aplicativo interno.

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 do Helper.

Exemplo:

Tabela de empresas
LOGIXPROTHEUS
Código da empresaCódigo da empresaCódigo da filial
010102
020103
030104
040201

 

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.

A construção da InternalId será em uma classe que deve instanciar a classe IInternalId e implementar as funções seguindo os exemplos abaixo. A partir das funções definidas, a classe de InternalId deve ser utilizada no Adapter, pois os campos definidos para internalid estarão contemplados no Helper.