INTRODUÇÃO 

Aqui você encontrará as informações necessárias para utilizar a Integração RM com Smart Link DataSharing v2. Para essa integração será utilizado o protocolo de comunicação grpc. 

Nesse modelo de integração, o dado é recuperado do RM e enviado para o Smartlink server (serviço hospedado na plataforma TotvsApp).


Na versão anterior de integração com Smart Link DataSharing v1 , o dado é recuperado do RM e enviado diretamente para a Carol (mais detalhes disponível em https://tdn.totvs.com/x/l-55IQ,).


01. Configurando a integração 


a) - Solicitar a criação do app junto a equipe de plataforma do TotvsApp. 

b) - Abrir uma issue de apoio para equipe de framework BH (DFRWFOUNDATION) solicitando o registro do app em questão nos arquivos de configuração (TotvsAppSaas.json), O identificador do App deve ser enviado nessa issue.

c) - Efetuar ativação do app através do "Processo de ativação do TotvsApp" disponível em: "Integração/TotvsApp".


c) - Informar o "RAC clienteId" e "RAC clientSecret" enviados para o cliente e selecionar o App a ser ativado. 

O app somente aparecerá na lista para ser ativado se o clientId em questão tiver permissão para esse app. Para conferir, basta fazer uma chamada de api para o endpoint "api/data-management/v1/apps/by-tenant" e verifica no retorno se o app está presente nos itens do json.

ex: https://provisioning.dev.totvs.app/api/data-management/v1/apps/by-tenant




02. Serviço RM de envio dos dados

Na integração anterior (Smart Link DataSharing v1) os dados são enviados em ciclos de execução de Job's (mecanismo de  Job do RM - https://tdn.totvs.com/x/_Z4YIQ).

Já na integração Smart Link DataSharing v2, os dados serão enviados através da execução automática de um serviço de Host chamado NotifyServer.

Nesse mecanismo, somente uma máquina do ambiente do cliente (seja um servidor de aplicação ou um servidor de Job) terá a responsabilidade de enviar os dados. Em nenhum momento duas ou mais máquinas poderão enviar  os dados simultaneamente.

Caso ocorra algum problema com a máquina responsável pelo envio, ficando portanto indisponível, outra máquina assumirá o papel de envio.

O envio dos dados ocorrerá de 5 em 5 segundos, ou seja, caso um algum registro (de alguma tabela integrada) seja alterado, a alteração será enviada para o Smart Link Server após 5 segundos. 


Importante

O modelo de integração Smart Link DataSharing v1 em breve será descontinuado pela equipe de framework BH.  Portanto, os times dos segmentos que possuem integração dessa natureza (ex: Consignado) devem migrar para o novo modelo.


03. Envio dos pacotes (batchs)

Nesta versão, a sincronização de dados entre o RM → Smart LIink → Carol seguirá o conceito de envio por pacotes (batchs). Cada pacote possui um identificador que será utilizado para rastreio dos dados conforme são enviados pelo Smart Link, para a Carol e por fim até ao app.

O batch será  composto por múltiplas mensagens que irão conter os registros das tabelas que deverão ser enviadas para o serviço de ingestão utilizando o protocolo de comunicação gRPC.

Cada mensagem é formada por 200 registros. 



No RM, o rastreio dos dados enviados podem ser verificados através de uma sentença sql na tabela "GDataShareRecords'. 

A tabela GDataShareRecords é responsável em manter um rastro dos registros que já foram enviados (por tabelas).

Portanto, operações de update, delete e insert não poderão ser efetuadas nessa tabela de forma manual. 

O processo de limpeza dessa tabela é feito automaticamente pelo serviço de envio de dados.


04. Serviço de entidades 

As entidades consistem em uma parte fundamental do processo. Elas determinam todas as entidades que o RM deve subir de acordo com os app's contratados.

A lista das tabelas que participarão do processo de envio é recuperada através da chamada de um serviço com endpoint "/api/carol-definitions/v1/entities/RM".


O retorno da chamada desse serviço terá o seguinte padrão de objeto:

{
    "uploadVersion": 2,
    "uploadVersionInfo": "Gestão de Upload de Dados via gRPC",
    "queries": [
        {
            "table": "TMOV,
            "filter": null,
            "forceReload": true,
            "isNative": true,
            "isCustom": false,
            "metadata": null
        },
        {
            "table": "FLAN",
            "filter": "FLAN.IDLAN > 1000",
            "forceReload": false,
            "isNative": true,
            "isCustom": false,
            "metadata": null
        },

Características:

  1. Cada item da lista "queries", representa uma tabela do RM que será integrada. No exemplo acima, teremos a integração das tabelas TMOV e FLAN. 
  2. Filtro de dados (atributo filter): clausula SQL ANSI obrigatória para entidades que possuem dados históricos ou de movimentação. Será utilizado sempre que o ciclo de envio estiver enviando a tabela pela primeira vez (carga inicial) ou quando uma solicitação de recarga dessa tabela (force reload = true) seja sinalizada para o RM. 

No filtro, sempre deve ser informado "Tabela.Campo" conforme exemplo abaixo:

TMOV.DATAMOVIMENTO > '2012-01-01'.

     3. Recarga de uma tabela específica (atributo forceReload): é um campo do tipo booleano que indicará para o RM efetuar a recarga desta tabela. . Recurso importante para tratar cenários com problema sem a necessidade de acessar o ambiente do cliente.

Solicitações de inclusão / exclusão de tabelas devem ser tratadas diretamente com a equipe de plataformas do TotvsApp.

  • Sem rótulos