...
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 do enviado pelo Worker RTS:
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
{
"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": "userXXXX",
"Password": "passXXXXX",
"ClientId": "pdvsync_roXXXXXXXX",
"ClientSecret": "799fedbd-d2ab-46e2-8069-84da734f9fd8XXXXXXXXXXXXXXXXXXXXXXXXXXX",
"GrantType": "password"
}
}
} |
Exemplo de contrato enviado pela função de execução:
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
{ "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.