Páginas filhas
  • Integração entre o ERP Datasul e o serviço TOTVS Apps (Plataforma TechFin)

Versões comparadas

Chave

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

INTEGRAÇÃO DATASUL X TOTVS APPS

Contexto de negócio

A arquitetura da plataforma TechFin requer a ingestão recorrente de dados para a integração com demais softwares externos, entre eles o Datasul. Neste sentido, os softwares externos enviam os dados para uma área de preparação (staging), cujos dados serão posteriormente transformados e normalizados para estruturas predefinidas pelos aplicativos do TechFin. 

Para assegurar a eficiência e escalabilidade da integração, a extração dos dados no produto Datasul é realizada de forma parcial, isto é, são considerados apenas os dados afetados (modificados) em um dado intervalo de tempo.


Sistemas Envolvidos

Para que os dados do produto datasul sejam disponibilizados para os aplicativos do serviço Totvs Apps, estão envolvidos:

  • Totvs RAC
  • Totvs Apps
  • Totvs Carol


Integração

A integração tem o objetivo de disponibilizar, no serviço Totvs Carol, dados modificados em um determinado periodo de tempo, de tabelas predefinidas, para que as aplicações do serviço Totvs Apps possam fazer uso. Entre os aplicativos do serviço Totvs Apps está o Totvs Antecipa.


Escopo

Esta integração disponibiliza dados das tabelas, indicadas pelo serviço Totvs Apps, no serviço Totvs Carol (CDS). Os dados são disponibilizados na area de staging para que possam ser normalizados e, por fim, utilizados pelos aplicativos. 


Pré-requisitos instalação/implantação/utilização

Pré-requisitos (técnicos ou de negócio) para o funcionamento da integração: 

  • Progress Openedge na versão 11.7.5 ou superior;
  • Disponibilizar as seguintes bibliotecas do Progress Openedge 11.7.5 no início do propath:
    • <diretorio_instalação_progress>\gui\OpenEdge.BusinessLogic.pl
    • <diretorio_instalação_progress>\gui\OpenEdge.Core.pl
    • <diretorio_instalação_progress>\gui\OpenEdge.ServerAdmin.pl
    • <diretorio_instalação_progress>\gui\netlib\OpenEdge.Net.pl
  • Datasul 12.1.29 ou superior;
  • Módulo Audit Trail Configurado - Procedimento de Implementação do Módulo Audit Trail;
  • Dados de acesso e certificados dos serviços - DS - TEC - Aplicação de certificados no Progress:
    • Totvs Rac;
    • Totvs Apps;
    • Totvs Carol.


Datasul

Configurações

As configurações necessárias para a integração são:

  • Parâmetros de integração Totvs RAC;
  • Parâmetros de integração Totvs Apps;
  • Parâmetros de integração Totvs Carol;
  • Parâmetros de Jornalização.

Nos parâmetros de integração serão informados os dados de autenticação e sincronização de informações e nos parâmetros de jornalização, a forma como os dados afetados serão identificados para que sejam enviados para o serviço Totvs Carol.

Parâmetros de integração

No Jboss, acesse os Parâmetros gerais do modulo básico (btb946aa), selecione a aba Integrações e informe os dados conforme orientação do manual.

 No Tomcat, nas propriedades do sistema, localize as Propriedades de integrações Totvs e informe os dados conforme orientação do manual.

Parâmetros de Jornalização

No Jboss, para configurar a jornalização, ainda nos Parâmetros gerais do modulo básico (btb946aa), acesse a aba Jornalização e informe os dados conforme orientação do manual.

No Tomcat, nas propriedades do sistema, localize as Propriedades de Jornalização e informe os dados conforme orientação do manual.

Geração das Triggers Audit Trail

Após configurar a integração e a jornalização, é necessária a geração das triggers ou policies. Para isto é necessária a execução da tarefa AU0108 - Geração das Triggers.

Sincronização de dados Datasul x Totvs Apps

A integração dos dados se dará por meio da execução da tarefa AU0109 - Sincronização de Dados Datasul x Totvs Apps. É possível criar execuções agendadas utilizando a Agenda Automática (CD8600).

  • Customização dos dados antes da sincronização

É possível incluir, alterar ou remover informações do JSON do TableSchema ou TableData, antes que ele seja sincronizado com a Carol, para isso deverão ser seguidos os passos abaixo:

  1. Criar um programa no diretório carol/<nome_logico_banco> com o nome <nome_tabela>_data.p. Exemplo: carol/emsfnd/usuar_mestre_data.p;
    1. Quando a base de dados for Oracle ou SQL Server, na pasta <nome_logico_banco> deve ser informado o nome lógico da Referência Progress. Exemplo: carol/shemsfnd/usuar_mestre_data.p;
  2. O programa deverá estar preparado para receber um parâmetro de entrada do tipo Progress.Json.ObjectModel.JsonObject e para retornar um parâmetro do tipo Progress.Json.ObjectModel.JsonConstruct;
  3. No JSON de entrada serão enviadas as informações de dataType, dbName, tableName e data, conforme exemplo abaixo:
    1. Bloco de código
      languagejs
      themeRDark
      titleJSON Entrada
      {"dataType": "TableSchema" ou "TableData",
       "dbName": "<nome_logico_banco>",
       "tableName": "<nome_tabela>",
       "data": JsonObject para o dataType TableSchema ou JsonArray para o dataType TableData
      }
  4. Exemplo de programa customizado:
    1. Bloco de código
      languagedelphi
      themeRDark
      titlePrograma customizado
      USING Progress.Json.ObjectModel.JsonArray.
      USING Progress.Json.ObjectModel.JsonConstruct.
      USING Progress.Json.ObjectModel.JsonObject.
      
      DEFINE INPUT  PARAMETER pInput  AS JsonObject    NO-UNDO.
      DEFINE OUTPUT PARAMETER pOutput AS JsonConstruct NO-UNDO.
                         
      IF pInput:GetCharacter("dataType") = "TableData" THEN
          RUN customTableData IN THIS-PROCEDURE.
      ELSE
          RUN customTableSchema IN THIS-PROCEDURE.
          
      PROCEDURE customTableData PRIVATE:
          DEFINE VARIABLE oTableData AS JsonArray  NO-UNDO.
      
          ASSIGN pOutput    = NEW JsonArray()
                 oTableData = pInput:getJsonArray("data").
                 
          /*
             REALIZAR AS MANIPULAÇÕES NECESSÁRIAS NO OBJETO oTableData
          */          
                 
          ASSIGN pOutput = oTableData.
      
      END PROCEDURE.
      
      PROCEDURE customTableSchema PRIVATE:
          DEFINE VARIABLE oTableSchema AS JsonObject NO-UNDO.
      
          ASSIGN pOutput      = NEW JsonObject()
                 oTableSchema = pInput:getJsonObject("data").
          /*
             REALIZAR AS MANIPULAÇÕES NECESSÁRIAS NO OBJETO oTableSchema
          */
          oTableSchema:ADD("testeAdd","deuCerto!!!").
          
          ASSIGN pOutput = oTableSchema.
      
      END PROCEDURE.
  5. Foram inseridos logs no programa para facilitar a identificação de possíveis erros. Para isso foi criado o tipo de log CAROLSYNC, conforme exemplo abaixo:
    1. Bloco de código
      languagetext
      themeRDark
      titleCAROLSYNC
      	Line 24043: [21/04/01@11:46:08.973-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableData Begin: 01/04/2021 - 11:46:08
      	Line 24046: [21/04/01@11:46:08.973-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableData Params -> codBaseDados: emsfnd tableName: configur_propried dateFrom 01/04/2021 00:37:23,556-03:00 dateTo 01/04/2021 11:46:08,773-03:00
      	Line 24050: [21/04/01@11:46:08.974-0300] P-005856 T-012048 1 4GL CAROLSYNC      getTableSchema Begin: 01/04/2021 - 11:46:08
      	Line 24053: [21/04/01@11:46:08.974-0300] P-005856 T-012048 1 4GL CAROLSYNC      getTableSchema Params -> tableName: configur_propried
      	Line 24078: [21/04/01@11:46:08.981-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Begin: 01/04/2021 - 11:46:08
      	Line 24081: [21/04/01@11:46:08.988-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Input Data: c:\temp\/input_TableSchema_emsfnd_configur_propried.json
      	Line 24087: [21/04/01@11:46:08.988-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData oParams: {"dataType":"TableSchema","dbName":"emsfnd","tableName":"configur_propried"}
      	Line 24090: [21/04/01@11:46:08.989-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData customProgram Begin: 01/04/2021 - 11:46:08
      	Line 24099: [21/04/01@11:46:08.992-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData customProgram End: 01/04/2021 - 11:46:08
      	Line 24102: [21/04/01@11:46:08.994-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Output Data: c:\temp\/output_TableSchema_emsfnd_configur_propried.json
      	Line 24107: [21/04/01@11:46:08.995-0300] P-005856 T-012048 1 4GL CAROLSYNC      getTableSchema End: 01/04/2021 - 11:46:08
      	Line 24112: [21/04/01@11:46:08.996-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema Begin: 01/04/2021 - 11:46:08
      	Line 24115: [21/04/01@11:46:08.996-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema Params -> tableName: configur_propried syncMethod: PUT
      	Line 24120: [21/04/01@11:46:08.997-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema tableSchema: {"mdmStagingMapping":{"properties":{"cod_agrpdor":{"type":"character"},"cod_contexto_propried":{"type":"character"},"cod_livre_1":{"type":"character"},"cod_livre_2":{"type":"character"},"cod_propried":{"type":"character"},"dat_livre_1":{"type":"date"},"dat_livre_2":{"type":"date"},"des_propried":{"type":"character"},"fwk_last_modif":{"type":"datetime-tz"},"log_livre_1":{"type":"logical"},"log_livre_2":{"type":"logical"},"num_livre_1":{"type":"integer"},"num_livre_2":{"type":"integer"},"val_
      	Line 24121: [21/04/01@11:46:08.997-0300] P-005856 T-012048 1 4GL CAROLSYNC      livre_1":{"type":"decimal"},"val_livre_2":{"type":"decimal"}}},"mdmCrosswalkTemplate":{"mdmCrossreference":{"cnfgrprp_id":["cod_propried","cod_agrpdor"]}},"testeCleber":"deuCerto!!!"}
      	Line 24125: [21/04/01@11:46:08.998-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient Begin: 01/04/2021 - 11:46:08
      	Line 24128: [21/04/01@11:46:08.998-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient Params -> path: /api/v2/staging/tables/&1/schema?connectorId=&2 tableName: configur_propried
      	Line 24202: [21/04/01@11:46:09.006-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient End: 01/04/2021 - 11:46:09
      	Line 24682: [21/04/01@11:46:09.058-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema PutHTTPRequest Begin: 01/04/2021 - 11:46:09
      	Line 32759: [21/04/01@11:46:11.832-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema PutHTTPRequest End: 01/04/2021 - 11:46:11
      	Line 32762: [21/04/01@11:46:11.834-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableSchema End: 01/04/2021 - 11:46:11
      	Line 33016: [21/04/01@11:46:11.848-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient Begin: 01/04/2021 - 11:46:11
      	Line 33019: [21/04/01@11:46:11.849-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient Params -> path: /api/v2/staging/tables/&1?connectorId=&2&&returnData=false tableName: configur_propried
      	Line 33100: [21/04/01@11:46:11.861-0300] P-005856 T-012048 1 4GL CAROLSYNC      getHttpClient End: 01/04/2021 - 11:46:11
      	Line 33581: [21/04/01@11:46:11.946-0300] P-005856 T-012048 1 4GL CAROLSYNC      getDataRequest Begin: 01/04/2021 - 11:46:11
      	Line 33584: [21/04/01@11:46:11.946-0300] P-005856 T-012048 1 4GL CAROLSYNC      getTableSchema Params -> codBaseDados: emsfnd tableName: configur_propried dateFrom: 01/04/2021 00:37:23,556-03:00 dateTo: 01/04/2021 11:46:08,773-03:00
      	Line 33600: [21/04/01@11:46:12.114-0300] P-005856 T-012048 1 4GL CAROLSYNC      getDataRequest End: 01/04/2021 - 11:46:12
      	Line 33624: [21/04/01@11:46:12.119-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Begin: 01/04/2021 - 11:46:12
      	Line 33627: [21/04/01@11:46:12.126-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Input Data: c:\temp\/input_TableData_emsfnd_configur_propried.json
      	Line 33633: [21/04/01@11:46:12.127-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData oParams: {"dataType":"TableData","dbName":"emsfnd","tableName":"configur_propried"}
      	Line 33636: [21/04/01@11:46:12.128-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData customProgram Begin: 01/04/2021 - 11:46:12
      	Line 33645: [21/04/01@11:46:12.130-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData customProgram End: 01/04/2021 - 11:46:12
      	Line 33648: [21/04/01@11:46:12.133-0300] P-005856 T-012048 1 4GL CAROLSYNC      customData Output Data: c:\temp\/output_TableData_emsfnd_configur_propried.json
      	Line 33653: [21/04/01@11:46:12.135-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableData PostHTTPRequest Begin: 01/04/2021 - 11:46:12
      	Line 41725: [21/04/01@11:46:14.423-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableData PostHTTPRequest End: 01/04/2021 - 11:46:14
      	Line 41728: [21/04/01@11:46:14.423-0300] P-005856 T-012048 1 4GL CAROLSYNC      syncTableData End: 01/04/2021 - 11:46:14
    2. Quando o nível do log estiver configurado para DEBUG (logginglevel 4 (Extended)), serão exportados os JSONs que foram enviados e recebidos do programa de customização. Para isso, será utilizado o diretório temporário para salvar os arquivos, que serão detalhados abaixo. No log CAROLSYNC será mostrado o nome do caminho completo onde foram salvas as informações.
      1. input_TableSchema_<nome_logico_banco>_<nome_tabela>.json: JSON de entrada com as informações do TableSchema. Exemplo de nome: input_TableSchema_emsfnd_usuar_mestre.json.
      2. input_TableData_<nome_logico_banco>_<nome_tabela>.json: JSON de entrada com as informações do TableData. Exemplo de nome: input_TableData_emsfnd_usuar_mestre.json.
      3. output_TableSchema_<nome_logico_banco>_<nome_tabela>.json: JSON de saída do programa customizado com as informações do TableSchema. Exemplo de nome: output_TableSchema_emsfnd_usuar_mestre.json.
      4. output_TableData_<nome_logico_banco>_<nome_tabela>.json: JSON de saída do programa customizado com as informações do TableData. Exemplo de nome: output_TableDataema_emsfnd_usuar_mestre.json.
    3. Se o clientlog do RPW estiver desabilitado, será ativado em tempo de execução, configurado com nível 2 e saída para o arquivo carol_synchronize.log no diretório temporário.

Instalação/Atualização

Quando houver atualização do produto Datasul deve-se atentar para as seguintes necessidades:


Controle de Versão

O grupo TOTVS, representado por suas marcas, irá administrar as demandas de evolução dos layouts e demais ajustes, acordando junto aos solicitantes o prazo de liberação de release.

Todas as evoluções programadas deverão ser discutidas e aprovadas pelas marcas antes do início do desenvolvimento e somente serão desenvolvidas em caso de concordância das marcas e alinhamento com as diretivas definidas pelo Comitê de Integração TOTVS.

Suporte

O suporte aos recursos da Integração será de responsabilidade de todas as linhas, sendo assim as equipes de suporte do produto Datasul, modulo Framework Foundation,  estará apta a fazer a primeira análise e, quando necessário, repassar para a equipe mais adequada em cada caso.

Observação: Este modelo de suporte está sendo revisado pela TOTVS.

Checklist de suporte da aplicação

Instalação/Configuração

  • Verifique se o serviço Totvs RAC está disponível;
  • Verifique se o certificado do serviço Totvs RAC está instalado na pasta do progress;
  • Verifique as configurações de integração com o serviço Totvs RAC;
  • Verifique se o serviço Totvs Apss Apps está disponível;
  • Verifique se o certificado do serviço Totvs Apps está instalado na pasta do progress;
  • Verifique as configurações de integração com o serviço Totvs Apps;
  • Verifique se o serviço Totvs Carol está disponível;
  • Verifique se o certificado do serviço Totvs Carol está instalado na pasta do progress;
  • Verifique as configurações de integração com o serviço Totvs Carol;
  • Verifique as configurações de jornalização;
  • Verifique as configurações de bancos do Audit Trail;
  • Verifique se as triggers ou policies foram criadas;
  • Verifique a agenda de execução.

Checklist de Verificações:

Relacione itens de verificações para que o atendente possa:

  • Verifique se os pedidos de execução estão sendo criados;
  • Verifique se não há erros na execução do pedido;
  • Verifique o relátorio relatório au0109 gerado no spool do servidor RPW;
  • Verifique o clientlog da execução do servidor RPW;


Anexos