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".
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.
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.
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:
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
}
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:
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.
Você pode entender a estrutura dos registros de Golden Record consumidos nesta documentação: https://tdn.totvs.com/display/public/CARL/Detalhes+Golden+Record