01. DADOS GERAIS
| Produto: |
TOTVS Varejo Franquias e Redes
|
|---|
| Linha de Produto: | PDV Sync |
|---|
| Segmento: | |
|---|
| Módulo: | PDVSync Controle - RepositoryToService |
|---|
| Função: |
|
|---|
| País: | Brasil |
|---|
| Ticket: |
|
|---|
| Requisito/Story/Issue (informe o requisito relacionado) : | DVARINT1-14221 |
|---|
| Versão: | V3 |
|---|
02. SITUAÇÃO/REQUISITO
- Permitir que o worker de RTS realize a tomada de decisão automática entre direcionar o worker de evento em realizar um POST (inclusão) ou um PUT (atualização) para o interessado, conforme o conteúdo do ConteudoPronto.
03. SOLUÇÃO
- Criação do BackgroundService ManagementWorkflowDataBackgroundService que é estimulado pela fila dev-workflow-concluido após o termino do Workflow e realiza as seguintes operações:
- Envia o dado processado pelo Workflow do banco do MS Fila para o MS responsável pelo dado;
- Atualiza o Status desse dado no banco do MS Fila;
- Cria um registro na tabela ControleEvento para que o Worker de Evento envie o dado para o serviço de destino;
- Notificação o Worker Evento através do PubSub, publicando uma mensagem no tópico: dev-evento-workflow-concluido.
- Ajustes no Worker de Evento para receber o Id do dado salvo na tabela ControleEvento;
- Inclusão do tratamento de dead-letter no BackgroundService ManagementWorkflowDataBackgroundService
- As mensagens são redirecionadas para o tópico: dev-workflow-concluido-dl.
O BackgroundService ManagementWorkflowDataBackgroundService é executado quando uma mensagem com o Id do dado no banco do MS Fila é publicada.
Com relação a criação do Evento e consequentemente ao método HTTP utilizado na requisição para o serviço de destino, tal decisão se da com a leitura dos dados armazenados no campo Metadata no banco do MS Fila.
O campo está preparado para ler duas propriedades:
- RespostaIntegradorVoTerceiro - Armazena o retorno da API de terceiros do VO (ex: https://integrador.varejonline.com.br/apps/api/terceiros/1?token=valor-token);
- Lê a propriedade: mensagem, se a mesma tiver o valor "Nenhum registro encontrado", usa o método POST, caso contrário, usado o PUT.
- RespostaIntegradorVoProduto - Armazena o retorno da API de produtos do VO (ex: https://integrador.varejonline.com.br/apps/api/produtos/1?token=valor-token);
- Lê a propriedade: id, se a mesma tiver o valor "0", usa o método POST, caso contrário, usado o PUT.
Obs.: Vale ressaltar que esses valores podem ser alterados pelo VO, sendo necessário acompanhar as mudanças realizadas pelo VO e atualizar a aplicação para manter o comportamento da aplicação.