01. DADOS GERAIS

Produto:

Linha de Produto:PDV Sync
Segmento:

Módulo:

Function Gerenciamento

Função:
País:Brasil
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :

DVARINT1-13370

Versão:



02. SITUAÇÃO/REQUISITO

03. SOLUÇÃO


A função recebe dois tipos de entradas de dados, uma vinda do Worker RTS e outra vindo das funções de execução, em ambos os casos, os dados são recebidos através do PubSub.

Exemplo de contrato enviado pelo Worker RTS:

{
  "IdFila": "ceaf5590-2a35-4826-a824-2484b1f2fc0a",
  "IdTipoLote": 1,
  "InquilinoId": 49,
  "ConteudoDadoDinamico": "[{\"Descricao\":\"Descricao...\"}]",
  "Etapas": [
    {
      "Tipo": 1,
      "MapeamentoDadoEntrada": "[{\"Nome\": \"Descricao\", \"Tipo\": 1, \"Descricao\": \"Descrição da classificação.\", \"CamposEnum\": [], \"CamposObject\": [], \"RegrasValidacao\": [{\"Id\": 1, \"Regex\": null, \"ValorParametro\": null}]}]"
    },
    {
      "Body": "body...",
      "Tipo": 2,
      "Headers": {
        "a": "1",
        "b": "2"
      },
      "MetodoHttp": 2,
      "UrlServico": "https://localhost/api1",
      "QueryParams": {
        "a": "1",
        "b": "2"
      },
      "Credenciais": {
        "Tipo": 1,
        "Username": "user",
        "Password": "pass"
      },
      "TipoArmazenamento": 1,
      "NomePropriedadeResposta": "campo1"
    }
    {
      "Tipo": 3,
      "Campos": ["fsdfsdf", "fsdfsd", "fsdfsd"],
      "Operacao": 1
    }
  ],
  "Evento": {
    "Body": "body...",
    "Headers": {
      "a": "1",
      "b": "2"
    },
    "QueryParams": {
      "a": "1",
      "b": "2"
    },
    "UrlServicoDestino": "https://localhost",
    "MetodoHttpServicoDestino": 1,
    "AutenticacaoIdServicoDestino": 1,
    "Credenciais": {
      "Tipo": 2,
      "Url": "https://pdvsyncintegracao.rac.dev.totvs.app/totvs.rac/connect/token",
      "Username": "XXXX",
      "Password": "XXXXX",
      "ClientId": "XXXXXXXX",
      "ClientSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "GrantType": "password"
    }
  }
}


Exemplo de contrato enviado pela função de execução:

{
  "IndiceEtapaAtual": 1,
  "MensagemErro": null,
  "Workflow": {
    "IdFila": "ceaf5590-2a35-4826-a824-2484b1f2fc0a",
    "IdTipoLote": 1,
    "InquilinoId": 49,
    "ConteudoDadoDinamico": "[{\"Descricao\":\"descrição....\"}]",
    "Etapas": [
      {
        "Tipo": 1,
        "MapeamentoDadoEntrada": "[{\"Nome\": \"Descricao\", \"Tipo\": 1, \"Descricao\": \"Descrição da classificação.\", \"CamposEnum\": [], \"CamposObject\": [], \"RegrasValidacao\": [{\"Id\": 1, \"Regex\": null, \"ValorParametro\": null}]}]"
      },
      {
        "Body": "body...",
        "Tipo": 2,
        "Headers": {
          "a": "1",
          "b": "2"
        },
        "MetodoHttp": 2,
        "UrlServico": "https://localhost/api1",
        "QueryParams": {
          "a": "1",
          "b": "2"
        },
        "Credenciais": {
          "Tipo": 1,
          "Username": "user",
          "Password": "pass"
        },
        "TipoArmazenamento": 1,
        "NomePropriedadeResposta": "campo1"
      }
    ],
    "Evento": {
      "Body": "body...",
      "Headers": {
        "a": "1",
        "b": "2"
      },
      "QueryParams": {
        "a": "1",
        "b": "2"
      },
      "UrlServicoDestino": "https://localhost",
      "MetodoHttpServicoDestino": 1,
      "AutenticacaoIdServicoDestino": 1,
      "Credenciais": {
        "Tipo": 2,
        "Url": "https://pdvsyncintegracao.rac.dev.totvs.app/totvs.rac/connect/token",
        "Username": "XXXX",
        "Password": "XXXXX",
        "ClientId": "XXXXXXXXXXXXXX",
        "ClientSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
        "GrantType": "password"
      }
    }
  }
}


As funções de execução recebem o mesmo contrato acima e dessa forma, o dado é trafegado entre as funções até que o Workflow seja concluído.

Ao concluir o Workflow, os dados são salvos no banco do MS Fila (via requisição HTTP) e uma mensagem é publicado no PubSub (tópico: dev-workflow-concluido) com o IdFila presente no contrato.