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

Versões comparadas

Chave

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

...

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

...

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.

...

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


      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
         }
      }

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.

    • "qtdAreaProdutiva":"24",
            "cdIntErp":null
         }
      }

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 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

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

      APITipoDescriçãoIdConta__cTextoID FazendaCodigodaPropriedade__cTexto(6) (ID Externo)Código FazendaMunicipio__r.codigoMunicipio__cPesquisaCódigo Município codigoFornecedor__cNumero(8)Código FornecedordescricaoCompleta__cTexto(70)Descrição CompletaBillingStreetTexto(70)EndereçoPhoneTexto(70)TelefonecnpjCPF__cTexto(18)CNPJ ou CPFnumeroIncra__cTexto(15)N° INCRAnumeroInscricaoProdutorRural__cTexto(20)N° Insc.Produtor RuralCep__cTexto(16)N° CEPTipo_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
      IdBlocoIdTalhao__cTexto(6) (ID Externo)Id Bloco
      Conta__r.IdConta__cPesquisa(Conta)Código Fazenda
      ID Talhão
      Safra__cNumero(5)Código da Safra
      Conta__r.IdContacodigoBloco__cTexto(6) (ID Externo)Código Fazenda
      BlocoMunicipio__r.codigoMunicipioIdBloco__cPesquisaCódigo Município PIMSNameNameDescrição do Bloco
      HectarescodigoTalhao__c (ID Externo)NumeroTexto(16,26)Quantidade de Área Total em HectaresCódigo Talhão
      CodigoTipoPropriedadeAreaProdutivaHA__cNumero(16,2)Quantidade de Área Produtiva em Hectares

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

      Lista de OpçõesCódigo Tipo de Propriedade
      DistanciaTerra__cNumero(4,1)Distância Terra
      DistanciaAsfalto__cNumero(4,1)Distância Asfalto
      DistanciaHidrovia
      APITipoDescrição
      IdTalhao__cTextoID Talhão
      Safra__cNumero(54,1)Código da SafraDistância Hidrovia
      CodigoSistemaColheitaConta__r.IdConta__cTexto(6)Lista de OpçõesCódigo Fazendade Sistema de Colheita
      DataPlantio__cDateData do Plantio
      CodigoOcupacaoBloco__r.IdBloco__cPesquisaLista de OpçõesCódigo Blocode Ocupação
      codigoTalhaoCodigoVariedade__c (ID Externo)Texto(6)Código TalhãoLista de OpçõesCódigo de Variedade
      CodigoEstagioCodigoTipoPropriedade__cLista de OpçõesCódigo Tipo de PropriedadeEstagio
      DistanciaTerraCodigoEspacamento__cNumero(4,1)Distância TerraLista de OpçõesCódigo de Espaçamento
      CodigoSistemaPlantioDistanciaAsfalto__cLista de OpçõesCódigo de Sistema de Plantio
      AreaProdutivaHANumero(4,1)Distância AsfaltoDistanciaHidrovia__cNumero(47,12)Distância HidroviaQuantidade de Área Produtiva em Hectares
      CodigoOcupacaoAnteriorCodigoSistemaColheita__cLista de OpçõesCódigo de Sistema de ColheitaPlantio Anterior
      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 Removed

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

Image Removed

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

...

    • 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.