Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mayron Ceccon

Consulta entre dois sistemas distintos

Recommended Posts

Tenho dois sistemas distintos(Sistema X e Sistema Y onde este é um webservice), para cada um deles existe uma base de produtos, que são distintas. No Sistema Y o produto esta vinculado a um "plano".

 

No sistema Y disponibilizo um local para consulta dos produtos, onde se passa o plano e se retorna os produtos vinculados a este plano.

 

O problema que estou enfrentando é o seguinte.

Uma pessoa cadastra um solicitação no Sistema X, onde ele seleciona o "plano" que vem do Sistema Y e existe um campo de produtos que aceita qualquer informação.

 

Ao integrar essa solicitação entre X e Y devo enviar o id do plano e o id do produto para o Y, mas ao consultar e comparar os produtos de X e Y para descobrir o ID do produto em Y, existe uma inconsistência dos dados.

 

Por exemplo no sistema X o produto é "Eletrônicos" mas ao buscar no Sistema Y por "Eletrônicos" pode ser que o sistema retorne N produtos que contem esta mesma sequência. Assim será enviado um produto de forma equivocada, ocasionado erros na solicitação.

 

Alguém tem alguma ideia do que posso fazer para resolver esta situação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, tudo bem?

 

Geralmente, nesse caso, usa-se um campo em Y que pode chamar-se por exemplo 'externalId'. Esse campo guarda o ID do item em X em Y.

 

Nunca deve-se usar o ID auto_increment(ou qualquer outro tipo identificador interno a um sistema, no caso X) de um sistema como sendo a chave primária da cópia de um registro em outro sistema(no caso Y). Para isso usa-se então um campo(externalId) em Y para guardar o ID interno a X de um objeto, item, registro, etc., em Y.

 

Se um serviço possui cópias de registros de um ou vários outros sistemas externos a ele, então ele pode armazernar junto com externalId o id do sistema externo. Pense comigo:

 

No Gmail seu id é 1, no Youtube seu id é 9 porém a um serviço central de usuários onde está todo o mapeamento de usuários por serviços, por exemplo:

 

App Gmail tem id 1.

App Youtube tem id 2.

 

Seu User no Gmail é 1.

Seu User no Youtube é 9.

 

Um serviço centralizador de usuários pode ter um mapeamento relacional assim:

 

Relação app_users:

id external_user_id external_app_id

1 1 1

2 9 2

 

No seu caso há apenas um app que consome Y. Então você precisa apenas de uma tabela assim:

 

id external_product_id

1 12

 

ID aqui é o id do produto interno a Y e 12 e o ID externo do item em X.

 

A questão agora é: Já está tudo bagunçado, como você vai saber que 1 em Y é 12 em X? Você vai precisar escrever algum código para gerar esse mapeamento de registros entre os dois sistemas. Mas depois de feito, fica excelente.

 

Não sei se fui claro. Qualquer coisa avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.