Árvore de páginas

A Carol possui algumas formas para efetuar o consumo de dados por aplicativos terceiros. O formato mais convencional é através de "filters" ou "named queries".


Índice


Visão Geral


Abaixo um fluxo demonstrando o processo de consumo de dados da Carol através de filter ou named queries:



Abaixo é listado os principais serviços ligados ao fluxo de consumo de dados:



Estes serviços permitem o consumo de dados através de consultas (filter/queries) ou através de consultas nomeadas (named-queries). Ambos recursos serão detalhados nos próximos capítulos.

Filter/Queries


A forma mais convencional de consumo de dados na Carol é através de consultas (filter/queries) e consultas nomeadas (named queries). Esses recursos permitem o consumo de dados considerando a estrutura de dados definida no data model.


A Carol possui uma série de recursos ligados às consultas para consumo dos dados. Para buscar detalhes do serviços, você pode consultar o seguinte link: https://docs.carol.ai/docs/querying-data


O print-screen abaixo mostra o serviço utilizado para executar os filtros/queries:



Filter & scrollID

Quando executando filters com o scrollId (scrollable) ativado, sempre deve ser considerado o scrollID retornado na request, utilizando este para a próxima request:

/api/v3/queries/filter/{scrollId}


Este serviço retorna uma lista de golden records, no qual será detalhado no próximo capítulo.


Named Queries


Outra forma de trabalhar com consultas na Carol é através de named queries. As named queries permitem armazenar o filtro/query na Carol, permitindo assim uma manutenção mais ágil da named query.


A named query possui os mesmos recursos disponíveis na documentação acima compartilhada (https://docs.carol.ai/docs/querying-data), tendo como diferença é que o filtro fica armazenado na Carol e o aplicativo externo (consumidor) vai apenas referenciar à consulta armazenada na Carol. Os beneficios ligados a este recurso são:


  • Cache de dados.
  • Melhor manutenibilidade da consulta.
  • Fácil reutilização e propagação da mesma query para todos os aplicativos consumidores.


Abaixo é apresentado o serviço responsável por executar uma named query:



A seguir, um exemplo de um "Filter":


{
    "excludeMergePending": false,
    "filtering": true,
    "minimumShouldMatch": 1,
    "mustList": [
      {
        "mdmFilterType": "TYPE_FILTER",
        "mdmValue": "deviceGolden"
      },
      {
        "mdmFilterType": "TERM_FILTER",
        "mdmKey": "mdmGoldenFieldAndValues.integraterm",
        "mdmValue": true
      },
      {
        "mdmFilterType": "WILDCARD_FILTER",
        "mdmKey": "mdmGoldenFieldAndValues.devicedescription",
        "mdmValue": "{{deviceDescription}}"
      }
    ],
    "resolveRelationships": false
  }


Criando/Atualizando uma named query


As named queries são filtros dentro de um envelope (estrutura Json), armazenados na Carol. Os filtros ficam encapsulados conforme abaixo:


{
  "mdmCacheRevalidationTimeInSeconds": 0,
  "mdmCacheTimeInSeconds": 0,
  "mdmFilterQuery": {
    "excludeMergePending": false,
    "filtering": true,
    "minimumShouldMatch": 1,
    "mustList": [
      {
        "mdmFilterType": "TYPE_FILTER",
        "mdmValue": "deviceGolden"
      },
      {
        "mdmFilterType": "TERM_FILTER",
        "mdmKey": "mdmGoldenFieldAndValues.integraterm",
        "mdmValue": true
      },
      {
        "mdmFilterType": "WILDCARD_FILTER",
        "mdmKey": "mdmGoldenFieldAndValues.devicedescription",
        "mdmValue": "{{deviceDescription}}"
      }
    ],
    "resolveRelationships": false
  },
  "mdmQueryDescription": "Retorna a lista de dispositivos",
  "mdmQueryName": "deviceList",
  "mdmQueryPaid": false,
  "mdmQueryParams": [
    {
      "mdmDescription": {},
      "mdmEditable": true,
      "mdmInherited": false,
      "mdmLabel": {},
      "mdmName": "deviceDescription",
      "mdmRequired": false,
      "mdmValueType": "string"
    }
  ],
  "mdmReturnFields": [],
  "mdmTimeoutInSeconds": 55,
  "mdmType": "deviceGolden"
}


Um destaque para o atributo "mdmFilterQuery" que possui o filtro que será executado quando a named query "deviceList" for executada.


O print-screen exibe qual o serviço responsável por adicionar a named query:



Após salvar a named query, um código (mdmId) é retornado referente a named query. Este código é utilizado para atualizar e eliminar a named query. O serviço abaixo é o responsável por atualizar a named query:



O serviço a seguir retorna a lista de named queries existentes, fazendo com que seja possível recuperar todas as named queries existentes neste momento no ambiente:



Eliminando uma named query


Após adicionar uma named query (e obter o código mdmId) é possível eliminar a named query com o serviço abaixo:



O parâmetro "force" indica se a named query deverá ser elininado mesmo q eu tenha referência por outros recursos, como um Insight ou Carol App.


Próximos Passos


Você pode entender a estrutura dos registros de Golden Record consumidos nesta documentação: https://tdn.totvs.com/display/public/CARL/Detalhes+Golden+Record