Páginas filhas
  • Integração com Salesforce - Arquitetura

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Visão Geral
  2. Arquitetura TOTVS
    1. TOTVS Connector Client
    2. TOTVS Connector Server
    3. TOTVS Agro Plataforma
    4. TOTVS Agro Conecta Dados
    5. Monitoramento TOTVS Apps
  3. Fluxo de Dados/APIs

01. 

...

Visão Geral

Esta integração foi construída para efetuar o envio de dados entre TOTVS Agro Bioenergia (módulo de Pagadoria) para Salesforce com foco em "dados mestres" de Fazenda (Nível 1), Setor (Nível 2) e Talhão (Nível 3), quando inseridos ou atualizados via aplicação (Bioenergia/Pagadoria).

...

Atualmente, o modelo de dados utiliza de Schemas Definitions, que é o mapeamento de tabelas e colunas que serão enviadas para parceira, conforme solicitação, a equipe TOTVS Agro realiza esse cadastro e será enviado os seguintes dados:

...

UPNIVEL1

...

UPNIVEL2

...

UPNIVEL3
CD_UPNIVEL1CD_UPNIVEL1 + CD_UPNIVEL2CD_SAFRA + CD_UPNIVEL1 + CD_UPNIVEL2 + CD_UPNIVEL3
CD_UPNIVEL1CD_UPNIVEL1CD_SAFRA
CD_MUNICCD_UPNIVEL2CD_UPNIVEL1
CD_FORNECCD_MUNICCD_UPNIVEL2
DE_UPNIVEL1DE_UPNIVEL2CD_UPNIVEL3
DE_ENDERECOQT_AREA_TOTCD_TP_PROPR
NO_TELEFONEQT_AREA_PRODDS_TERRA
NO_CGC_CPF
DS_ASFALTO
NO_INCRA
DS_HIDROVIA
NO_INSC_PROD
CD_SIST_COLH
NO_CEP
DT_PLANTIO
FG_TP_PESS
CD_OCUP
QT_AREA_TOT
CD_VARIED
QT_AREA_PROD
CD_ESTAGIO
CD_INT_ERP
CD_ESPACAM
INSTANCIA
CD_SIST_PLAN
FG_ATIVO
QT_AREA_PROD


CD_OCUP_ANT


FG_TP_PLANTIO


Após o cadastro, vincula-se a base de dados com o Schema Definition (LocalProducao1, LocalProducao2 e LocalProducao3), esses Schemas Definitions (dados que serão enviados), após efetuar esse vínculo é criado uma trigger que monitora cada insert/update que foi cadastrado conforme a tabela acima. Quando é realizado algum INSERT ou UPDATE esse dado é processado através de tabelas do TOTVS Agro Connector Client e enviado por API como JSON para o TOTVS Agro Connector Server. Em caso de perda de conexão (serviço desligado) o registro fica em uma tabela criada chamada TCC_EVENT com status de UNPROCESSED, assim que serviço é ligado novamente o dado é processado e enviado, isso para garantir que não haja perca de dados.


Image Added

2.2. TOTVS Agro Connector Server

O TOTVS Agro Connector Server é uma aplicação que fica nos ambientes TOTVS Apps e é utilizado pela equipe TOTVS Agro para realizar os cadastros dos clientes, gerando o TENANT_ID (para os clientes conseguirem realizar instalação do TOTVS Agro Connector Client) e os cadastros dos Schemas Definitions que foram citados Anteriormente.


Image Added


Também é responsável por receber os dados que o TOTVS Agro Connector Client envia. Com esse JSON recebido, ele é enviado para uma fila de mensageria da TOTVS por meio do RabbitMQ para o TOTVS Agro Plataforma.


Image Added


    • Exemplo detalhado de JSON que irá para fila do RabbitMQ (mencionado acima):


      Bloco de código
      themeConfluence
      {
         "header":{
            "type":"LocalProducao1",
            "generatedOn":"2023-03-02T12:45:19.000688Z",
            "locale":"pt_BR"
         },
         "content":{
            "originApp":"PIMSCS",
            "appVersion":"12.1.2301",
            "schemaName":"LocalProducao1",
            "schemaVersion":"12.1.2301",
            "action":"INSERT",
            "data":{
               "id":{
                  "id":"TESTE"
               },
               "nome":"TESTE1",
               "codigo":"TESTE",
               "originId":"Q0RfVVBOSVZFTDE9VEVTVEU="
            },
            "createdAt":"2023-03-02T12:45:19.303637Z",
            "token":"8c12da2baca8de2e6b5dd2f6999c6998cbc7b563e5c24e043fa26b72f1f406e8"
         }
      }

2.3. TOTVS Agro Plataforma

O TOTVS Agro Plataforma está disponível nos ambientes do TOTVS Apps, porém ele não possuí uma interface gráfica. Ele é responsável por receber as mensagens do TOTVS Connector Server que foi processado na fila do RabbitMQ, então ele pega o JSON recebido, insere os dados na própria base de dados para haver controles de chaves primárias, chaves estrangeiras e garantir a integridade das tabelas e relacionamentos. Após conclusão de inserção com sucesso, novamente esse JSON é enviado para outra fila via RabbitMQ, que será processado pelo TOTVS Agro Conecta Dados.


Image Added


    • Exemplo detalhado de JSON que irá para fila do RabbitMQ (mencionado acima):


      Bloco de código
      themeConfluence
      {
         "header":{
            "type":"FazendaCriada",
            "tenantId":"8c12da2baca8de2e6b5dd2f6999c6998cbc7b563e5c24e043fa26b72f1f406e8

...

Após o cadastro, vincula-se a base de dados com o Schema Definition (LocalProducao1, LocalProducao2 e LocalProducao3), esses Schemas Definitions (dados que serão enviados), após efetuar esse vínculo é criado uma trigger que monitora cada insert/update que foi cadastrado conforme a tabela acima. Quando é realizado algum INSERT ou UPDATE esse dado é processado através de tabelas do TOTVS Agro Connector Client e enviado por API como JSON para o TOTVS Agro Connector Server. Em caso de perda de conexão (serviço desligado) o registro fica em uma tabela criada chamada TCC_EVENT com status de UNPROCESSED, assim que serviço é ligado novamente o dado é processado e enviado, isso para garantir que não haja perca de dados.

...

2.2. TOTVS Agro Connector Server

O TOTVS Agro Connector Server é uma aplicação que fica nos ambientes TOTVS Apps e é utilizado pela equipe TOTVS Agro para realizar os cadastros dos clientes, gerando o TENANT_ID (para os clientes conseguirem realizar instalação do TOTVS Agro Connector Client) e os cadastros dos Schemas Definitions que foram citados Anteriormente.

Image Removed

Também é responsável por receber os dados que o TOTVS Agro Connector Client envia. Com esse JSON recebido, ele é enviado para uma fila de mensageria da TOTVS por meio do RabbitMQ para o TOTVS Agro Plataforma.

Image Removed

    • Exemplo detalhado de JSON que irá para fila do RabbitMQ (mencionado acima):
      Bloco de código
      themeConfluence
      {
         "header":{
            "type":"LocalProducao1",
            "generatedOn":"2023-03-02T1222T14:4512:1921.000688Z428785Z",
            "locale":"pt_BR"
         },
         "content":{
            "originApporiginId":"PIMSCSQ0RfVVBOSVZFTDE9NjAwODZB",
            "appVersion":"12.1.2301",metadata":{
               
            "schemaName":"LocalProducao1"},
            "schemaVersioncodigo":"12.1.2301FazendaA1",
            "actiondescricao":"INSERTFazenda Teste",
            "datadocumento":{null,
               "idinstanciaOriginId":{
            null,
            "idcdMunicipio":"TESTE2308",
               }"cdFornecedores":"94500",
               "nomeendereco":"TESTE1Fazenda Teste",
               "codigotelefone":"TESTE"null,
               "originIdcnpjCpf":"Q0RfVVBOSVZFTDE9VEVTVEU=12345678",
            }"incra":null,
            "createdAtinscricaoProdutorRural":"2023-03-02T12:45:19.303637Z123.456.789-10",
            "cep":"111111",
            "tipoPessoa":"J",
            "tokenqtdAreaTotal":"8c12da2baca8de2e6b5dd2f6999c6998cbc7b563e5c24e043fa26b72f1f406e824",
         }
      }   "qtdAreaProdutiva":"24",
            "cdIntErp":null
         }
      }

2.

...

4. TOTVS Agro

...

Conecta Dados

    • O TOTVS Agro

...

    • Conecta Dados (Front/Web) é responsável por

...

Image Removed

...

Bloco de código
themeConfluence
{
   "header":{
      "type":"FazendaCriada",
      "tenantId":"8c12da2baca8de2e6b5dd2f6999c6998cbc7b563e5c24e043fa26b72f1f406e8",
      "generatedOn":"2023-03-22T14:12:21.428785Z",
      "locale":"pt_BR"
   },
   "content":{
      "originId":"Q0RfVVBOSVZFTDE9NjAwODZB",
      "metadata":{
         
      },
      "codigo":"FazendaA1",
      "descricao":"Fazenda Teste",
      "documento":null,
      "instanciaOriginId":null,
      "cdMunicipio":"2308",
      "cdFornecedores":"94500",
      "endereco":"Fazenda Teste",
      "telefone":null,
      "cnpjCpf":"12345678",
      "incra":null,
      "inscricaoProdutorRural":"123.456.789-10",
      "cep":"111111",
      "tipoPessoa":"J",
      "qtdAreaTotal":"24",
      "qtdAreaProdutiva":"24",
      "cdIntErp":null
   }
}
    • cadastrar as informações disponibilizadas pela Salesforce e também ativar ou desabilitar integrações, tais elas como:

Image Added

Image Added


    • O TOTVS Agro Conecta Dados Server é responsável por receber o JSON via mensageria, então ele fica observando a fila que o TOTVS Agro Plataforma enviou os dados. Com o JSON disponível o TOTVS Agro Conecta Dados fica responsável por realizar a autenticação a partir dos dados informados no Front/Web, com isso ele monta o JSON baseado no modelo enviado e processam-se as requisições PATCH para Salesforce, conforme exemplos demonstrados:


Aviso
titleAtenção

Para realizar as requisições é necessário passar o token recuperado, após autenticação.


Destacam-se as tabelas disponibilizadas para nós com base na API deles, ou seja, o JSON que será inserido no body da requisição e exemplos de collections: Patch(Insert-Update)-Exemplos.postman_collection.json que pode ser importado no Postman para realizar os testes, basta inserir os dados necessários que são destacados em vermelhos na requisição após a importação.


    • Modelo à ser enviado: FAZENDA (Local de Produção 1) para Salesforce.

      APITipoDescrição
      IdConta__cTextoID Fazenda
      CodigodaPropriedade__cTexto(6) (ID Externo)Código Fazenda
      Municipio__r.codigoMunicipio__cPesquisaCódigo Município 
      codigoFornecedor__cNumero(8)Código Fornecedor
      descricaoCompleta__cTexto(70)Descrição Completa
      BillingStreetTexto(70)Endereço
      PhoneTexto(70)Telefone
      cnpjCPF__cTexto(18)CNPJ ou CPF
      numeroIncra__cTexto(15)N° INCRA
      numeroInscricaoProdutorRural__cTexto(20)N° Insc.Produtor Rural
      Cep__cTexto(16)N° CEP
      Tipo_de_Pessoa__cTexto(1)
      QtdeAreaTotalHA__cNumero(7,2)
      QtdeAreaTotalProdHectares__cNumero(7,2)
      codigoInternoErp__cTexto(15)
      Instancia__r.CodigoInstanciaPIMS__cTexto(5)
      flagAtivo__cLista de Opçoes


    • Modelo à ser enviado: SETOR (Local de Produção 2) para Salesforce.

      APITipoDescrição
      IdBloco__cTexto(6) (ID Externo)Id Bloco
      Conta__r.IdConta__cPesquisa(Conta)Código Fazenda
      codigoBloco__cTexto(6) (ID Externo)Código Bloco
      Municipio__r.codigoMunicipio__cPesquisaCódigo Município PIMS
      NameNameDescrição do Bloco
      Hectares__cNumero(16,2)Quantidade de Área Total em Hectares
      AreaProdutivaHA__cNumero(16,2)Quantidade de Área Produtiva em Hectares


    • Modelo à ser enviado: TALHÃO (Local de Produção 3) para Salesforce.

      APITipoDescrição
      IdTalhao__cTextoID Talhão
      Safra__cNumero(5)Código da Safra
      Conta__r.IdConta__cTexto(6)Código Fazenda
      Bloco__r.IdBloco__cPesquisaCódigo Bloco
      codigoTalhao__c (ID Externo)Texto(6)Código Talhão
      CodigoTipoPropriedade__cLista de OpçõesCódigo Tipo de Propriedade
      DistanciaTerra__cNumero(4,1)Distância Terra
      DistanciaAsfalto__cNumero(4,1)Distância Asfalto
      DistanciaHidrovia__cNumero(4,1)Distância Hidrovia
      CodigoSistemaColheita__cLista de OpçõesCódigo de Sistema de Colheita
      DataPlantio__cDateData do Plantio
      CodigoOcupacao__cLista de OpçõesCódigo de Ocupação
      CodigoVariedade__cLista de OpçõesCódigo de Variedade
      CodigoEstagio__cLista de OpçõesCódigo de Estagio
      CodigoEspacamento__cLista de OpçõesCódigo de Espaçamento
      CodigoSistemaPlantio__cLista de OpçõesCódigo de Sistema de Plantio
      AreaProdutivaHA__cNumero(7,2)Quantidade de Área Produtiva em Hectares
      CodigoOcupacaoAnterior__cLista de OpçõesCódigo de Sistema de Plantio Anterior
      FlagTipoPlantio__cLista de OpçõesFlag de Tipo de Plantio


    • Exemplo de requisição Postman: PATCH - Fazenda

Image Added


    • Exemplo de requisição Postman: PATCH - Setor

Image Added


    • Exemplo de requisição Postman: PATCH - Talhão

Image Added

2.5.Monitoramento TOTVS Apps


    • TOTVS Agro Bioenergia (via TOTVS Agro Connector Client - TCC_EVENT)
      • Dentro da base de dados do TOTVS Agro Bioenergia é gerado uma tabela pelo TOTVS Agro Conector Client que é possível verificar os últimos eventos capturados pela Trigger
      • Tabela: TCC_EVENT
      • Image Added
  •  
    • TOTVS Agro Connector Client
      • Dentro da base TOTVS Agro Connector Client é possível verificar se as mensagens estão sendo processadas e verificar o JSON.
      • Tabela: OUTCOMING_DATA
      • Image Added
  •  
    • TOTVS Agro Connector Server
      • Dentro da base do TOTVS Agro Connector Server, localizado dentro do TOTVS Apps (Acesso Restrito) é possível verificar os logs.
      • Tabela LOG
      • Image Added
  •  
    • TOTVS Agro Plataforma
      • Nos ambientes do TOTVS Apps (Acesso Restrito) é possível verificar os logs de rastreabilidade, ou seja, verificar se as integridades estão de acordo e se o fluxo pode seguir.
      • Ferramenta: LENS
      • Image Added
    •  
    • TOTVS Agro Conecta Dados
      • Nos ambientes do TOTVS Apps (Acesso Restrito) é possível verificar os logs de rastreabilidade, ou seja, verificar os dados foram efetivados e a resposta da API com Salesforce.
      • Ferramenta: LENS
      • Image Added


...

03. Fluxo de Dados/APIs

1. Trigger
    1.1.
Trigger monitora cada novo evento na tabela
    1.2.
Para os eventos gerados a trigger insere o registro na tabela TCC_EVENT, com os dados que foram gerados no schema definition e status unprocessed
    
2. TOTVS Agro Connector Client
    2.1.
monitora a tabelaTCC_EVENT, por meio da classe EventScheduler.java
    2.2.
Após receber os dados é feito uma verificação e uma atualização na tabela TCC_EVENT, alterando o status para processed por meio da classe RowDataService.java
    2.3.
Com os dados validados, é processado para tabela OUTCOMING_DATA e enviado para o TOTVS Agro Connector Server por meio da classe EventProcessor.java
    
3. TOTVS Agro Connector Server
    3.1.
A lista de eventos recebidas pelo TOTVS Agro Connector Client é enviado na tabela própria do produto chamada CLIENT_DATA que pode ser encontrado por meio da classe CriateClientDataService.java
    3.2. ClientDataScheduler.java
é responsável por processar o JSON recebido para a fila do RabbitMQ no TOTVS Agro Plataforma.
    
4. TOTVS Agro Plataforma
    4.1.
Nesse momento o JSON é classificado de acordo com schema definition e inserido coluna por coluna nas tabelas com suas integridades na base de dados do TOTVS Agro Plataforma
        4.1.1.
Se for uma fazenda (Nível 1) (FazendaTCServerListener.java), é inserido ou atualizado na tabela FAZENDA, por meio da classe FazendaTCServerProcessor.java
        4.1.2.
Se for um setor (Nível 2) (SetorTCServerListener.java), é inserido ou atualizado na tabela SETOR, por meio da classe SetorTCServerProcessor.java
        4.1.3.
Se for um talhão (Nível 3) (TalhaoTCServerListener.java), é inserido ou atualizado na tabela TALHAO_LOGICO, por meio da classe TalhaoTCServerProcessor.java
    4.2.
Após as inserções e validações a mensagem (JSON) é novamente inserido em outra fila do RabbitMQ para enviar para o TOTVS Agro Conecta Dados por meio da classe EntidadePlataformaPublisher.java
    
5. TOTVS Agro Conecta Dados
    5.1.
Em uma fila única, a mensagem recebida é verificada o tipo do conector e a mesma é processada na classe AcaoConectorEntidade.java
    5.2. Token
        5.2.1
O token é recuperado por meio do preenchimento no front e inserido nas tabelas do TOTVS Agro Conecta Dados, a autenticação e atualização de token é consistido por meio da classe AtualizarTokenSalesforceService.java
    5.3. Fazenda
        5.3.1.
SalesforceEnvioFazendaProcessor.java é a classe responsável por ler a mensagem, criar e tratar o JSON com a estrutura da Salesforce
        5.3.2. SalesforceFazendaHttpClient.java
realiza a autenticação e realiza o envio se comunicando com a API Salesforce.
    5.4. Setor
        5.4.1. SalesforceEnvioSetorProcessor.java
é a classe responsável por ler a mensagem, criar e tratar o JSON com a estrutura da Salesforce
        5.4.2. SalesforceSetorHttpClient.java
realiza a autenticação e realiza o envio se comunicando com a API Salesforce.
    5.5. Talhão
        5.5.1. SalesforceEnvioTalhaoProcessor.java
é a classe responsável por ler a mensagem, criar e tratar o JSON com a estrutura da Salesforce
        5.5.2. SalesforceTalhaoHttpClient.java
realiza a autenticação e realiza o envio se comunicando com a API Salesforce.

2.4. TOTVS Agro Conecta Dados

    • O TOTVS Agro Conecta Dados (Front/Web) é responsável por cadastrar as informações disponibilizadas pela Salesforce e também ativar ou desabilitar integrações, tais elas como:

Image Removed

Image Removed

    • O TOTVS Agro Conecta Dados Server é responsável por receber o JSON via mensageria, então ele fica observando a fila que o TOTVS Agro Plataforma enviou os dados. Com o JSON disponível o TOTVS Agro Conecta Dados fica responsável por realizar a autenticação a partir dos dados informados no Front/Web, com isso ele monta o JSON baseado no modelo enviado e processam-se as requisições PATCH para Salesforce, conforme exemplos demonstrados:
Aviso
titleAtenção

Para realizar as requisições é necessário passar o token recuperado, após autenticação.

Destacam-se as tabelas disponibilizadas para nós com base na API deles, ou seja, o JSON que será inserido no body da requisição e exemplos de collections: Patch(Insert-Update)-Exemplos.postman_collection.json que pode ser importado no Postman para realizar os testes, basta inserir os dados necessários que são destacados em vermelhos na requisição após a importação.

Modelo à ser enviado: FAZENDA (Local de Produção 1) para Salesforce.

...

Modelo à ser enviado: SETOR (Local de Produção 2) para Salesforce.

...

Modelo à ser enviado: TALHÃO (Local de Produção 3) para Salesforce.

...

    • Exemplo de requisição Postman: PATCH - Fazenda

Image Removed

    • Exemplo de requisição Postman: PATCH - Setor

Image Removed

    • Exemplo de requisição Postman: PATCH - Talhão

...