Conflitos entre tamanhos e tipos de campos são presença constante nos projetos de integração. Vamos a seguir mostrar exemplos destes conflitos e analisar as alternativas de solução.
A regra geral é que:
É muito mais barato e rápido alterar os produtos para restringir o tamanho de um campo, pois geralmente acontecerá apenas em um campo de entrada e mediante configuração. Do que alterar o produto para aumentar o tamanho de um campo, que irá afetar o campo de entrada, as tabelas, todos os programas e funções que usam esta tabela e em todas as telas e relatórios que ele aparece. Aumentar tamanho de campos é inviável.
As mensagens são únicas e utilizadas em diferentes integrações, que serão implantadas em diferentes clientes, cada um com um cenário diferente. Existem casos em que o cliente já possuía os dois produtos a serem integrados com bases populadas, onde os códigos terão que ser alinhados (de/para manual). Também existem casos, onde em uma das pontas da integração a implantação é nova e a base está vazia. A integração desenvolvida deverá ter flexibilidade para trabalhar com todos estes cenários.
De/para devem ser automatizados ao máximo.
Chaves primárias que podem ter ou não significado próprio. Alguns tipos de campos chave acabam fazendo parte do entendimento do usuário, então deve haver um cuidado maior em preservar valores equivalentes entre os produtos. Outros tipos de campos chave possuem uma chave natural atrelada, exemplo: código do cliente possui CNPJ, código do veículo possui placa, código do item pode possuir EAN-13.
Solução na mensagem: Valerá o maior tamanho entre todos os produtos envolvidos
Solução no produto: Caso o valor recebido seja incompatível com o tamanho do produto recebedor gerará de/para.
Campos chave onde o seu valor possui um significado importante. Estes valores não podem ser truncados ou convertidos senão perdem significado.
Exemplo: CPF, CNPJ, Placa de veículo, documentos oficiais (Notas Fiscais, Ordem de Produção)
Solução na mensagem: Quando são documentos oficiais valerá o tamanho oficial do documento, sem máscara.
Solução nos produtos: A mensagem de integração no produto A deverá enviar o seu valor integral para o produto B.
Campos que descrevem chaves, são alimentados por pessoas, então não existe uma forma computacional de reduzi-lo e manter o seu significado.
Exemplo: Descrição do item, nome do cliente, detalhamento do chamado
Solução na mensagem: Vale o maior tamanho entre os produtos. Isto possibilita que em integrações entre produtos com grande capacidade não ocorra a perda de informação pela restrição de um produto com menor capacidade e que muitas vezes nem faz parte da implantação.
Solução no produto:
Quem receber deverá truncar a informação para a sua capacidade, o que evitará o erro de TRUNCATE no banco.
Cada produto tem uma limitação própria para a capacidade de itens em estrutura pai & filho.
Exemplo: Itens do pedido, itens da nota fiscal
Solução na mensagem: O tamanho das listas deverá ficar livre.
Solução no produto: O produto A deverá permitir configurar a quantidade máxima de registros a serem adicionados na lista. O produto B deverá validar no seu adapter se a lista recebida é maior que a sua. capacidade, e retornar erro na mensagem caso este limite seja ultrapassado.
Existem informações nas entidades integradas que podem ter valores fixos em um produto e valores cadastráveis em outro. Um exemplo disso é o “Tipo do Documento”, que está configurado da seguinte forma nos produtos:
Como existem produtos com cadastro dinâmico, parte-se do princípio que os valores em questão serão dinâmicos. A regra de que “vale o tipo mais amplo” deve ser considerada também neste caso.
A seguir as regras que devem nortear a decisão sobre como esta informação irá se comportar na integração.
Existem informações nas entidades integradas que podem ser concatenadas em um produto e separadas em outro.
Exemplo: DDI+DDD+Telefone
No recebimento deverá ser tratado a tag conforme regra do produto.
Na mensagem única deverá ser documentado a regra de preenchimento do campo, para facilitar o entendimento dos produtos, que estão enviando ou recebendo a informação.