Árvore de páginas

Conteúdo



01. Objetivo

Esta documentação tem a finalidade de servir como uma guia no momento da integração com o TOTVS Privacidade de Dados. Para mais informações sobre a ferramenta, acesse TOTVS Privacidade de Dados.

Para tanto, abaixo seguem as instruções para que a integração seja realizada corretamente.



02. Informações

Leia Documentos de Referência do TOTVS Privacidade de Dados.

O produto Datasul faz o uso do Smart Link, que é um mecanismo de troca de mensagens entre aplicações TOTVSApps e aplicações On Premises (ou remotas).

  • Foi utilizada a biblioteca Smart Link Client Java, que por meio deste foi implementado o processador de mensagens.
  • O processador de mensagens é uma aplicação java 

Obtenha informações (client, secret, name e id) do seu tenant para poder realizar as configurações necessárias nos próximos passos. 




03. Instalação


Copiar arquivo compactado

O arquivo está localizado no diretório do Foundation fnd/interfac/smart-link/smartlink-service.zip


Extrair os arquivos do arquivo compactado

Extrair os arquivos em um diretório de sua escolha. 

Exemplo:

  • Como resultado temos a estrutura abaixo:
    • C:/TOTVS/smart-link-client/README.txt
    • C:/TOTVS/smart-link-client/client/application.yml
    • C:/TOTVS/smart-link-client/client/smartlink-service.jar
    • C:/TOTVS/smart-link-client/client/log
    • C:/TOTVS/smart-link-client/service/Windows/install.bat
    • C:/TOTVS/smart-link-client/service/Windows/JavaService.exe
    • C:/TOTVS/smart-link-client/service/Windows/uninstall.bat
    • C:/TOTVS/smart-link-client/service/Linux/install.sh
    • C:/TOTVS/smart-link-client/service/Linux/SmartLinkClient.service
    • C:/TOTVS/smart-link-client/service/Linux/SmartLinkClient.sh
    • C:/TOTVS/smart-link-client/service/Linux/start.sh
    • C:/TOTVS/smart-link-client/service/Linux/stop.sh
    • C:/TOTVS/smart-link-client/service/Linux/uninstall.sh

Instalador de serviço para Windows

Editar o arquivo "/service/Windows/install.bat"

Edite LINK_CLIENT respeitando o diretório onde foi descompactado o smart-link-client

:default
@echo on

chcp 65001

set LINK_CLIENT=C:/TOTVS/smart-link-client/client

JavaService.exe -install "TOTVS-SMART-LINK-CLIENT" "%JAVA_HOME%/bin/server/jvm.dll" -Djava.class.path="%LINK_CLIENT%/smartlink-service.jar" -start org.springframework.boot.loader.JarLauncher -err "%LINK_CLIENT%/log/smart-link-client_err.log" -current "%LINK_CLIENT%" -manual -description "TOTVS DATASUL SMART LINK CLIENT"

@echo off

:eof

@echo .
@echo .
@echo .
PAUSE.
  • Por padrão temos o nome do serviço definido como "TOTVS-SMART-LINK-CLIENT"
  • Sugerimos o uso do nome do seu tenant para complementar e facilitar a organização do serviço.
  • A descrição do serviço pode ser alterada por meio do parâmetro -description.
  • Deve ser utilizado JAVA 11
  • No arquivo estamos utilizando o %JAVA_HOME% como padrão, caso necessário faça a alteração para utilizar a sua variável de ambiente já existente.
  • Os parâmetros -Djava.class.path, -current e -err fazem o uso do valor informando em LINK_CLIENT (ajustar para o diretório definido nas etapas anteriores).

Instalação do serviço:

  • Execute Prompt de Comando como administrador
  • Execute o arquivo "/service/Windows/install.bat"

Desinstalador de serviço para Windows

Editar o arquivo "/service/Windows/uninstall.bat"

  • Informe o nome do serviço definido na etapa anterior (Instalador de serviço para Windows)

Desinstalação do serviço:

  • Execute Prompt de Comando como administrador
  • Execute o arquivo "/service/Windows/uninstall.bat"

Instalador de serviço para Linux


Para a instalação do serviço no Linux certifique-se de que os passos a seguir foram realizados:

  1. Definir a descrição do serviço:
    1. Edite o arquivo "service/Linux/SmartLinkClient.service", localizado no local onde o projeto foi extraído, e informe no atributo "Description", a descrição do serviço:
    2. Por padrão temos o nome do serviço definido como "TOTVS-SMART-LINK-CLIENT"
    3. Sugerimos o uso do nome do seu tenant para complementar e facilitar a organização do serviço.
  2. Configurar o arquivo application.yml
    1. Veja a sessão 04 deste documento.
  3. Editar o arquivo "/service/Linux/install.sh" localizado onde o projeto foi extraído.
    1. Informar na variável PATH_SOURCE_SMART_LINK_CLIENT, localizado na linha 13, o local onde o projeto foi extraído.


#!/bin/bash

ERRO="A instalação do Smart Link Client encontrou problema(s). Verifique o(s) aviso(s) acima."

checkCommandError(){
        if [ $? -ne 0 ]; then
		echo ""
		echo "$ERRO"
		exit 0
        fi
}

PATH_SOURCE_SMART_LINK_CLIENT="local-onde-foi-extraido/smart-link-client"
PATH_SMART_LINK_CLIENT="/usr/local/smart-link-client"

checkCommandError

echo "Instalação do Smart Link Client"

echo 'Copiando SmartLinkClient.service para /etc/systemd/system'
sudo cp -p "$PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/SmartLinkClient.service" /etc/systemd/system/SmartLinkClient.service
checkCommandError

echo 'Copiando SmartLinkClient.sh para /usr/local/bin' 
sudo cp -p "$PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/SmartLinkClient.sh" /usr/local/bin/SmartLinkClient.sh
checkCommandError

echo 'Concedendo permissao para execucao'
sudo chmod +x /usr/local/bin/SmartLinkClient.sh
checkCommandError

sudo mkdir "$PATH_SMART_LINK_CLIENT"
checkCommandError

sudo mkdir "$PATH_SMART_LINK_CLIENT/client"
checkCommandError

echo "Copiando $PATH_SOURCE_SMART_LINK_CLIENT/client para $PATH_SMART_LINK_CLIENT" 
sudo cp -r "$PATH_SOURCE_SMART_LINK_CLIENT/client/" "$PATH_SMART_LINK_CLIENT"
checkCommandError

sudo mkdir "$PATH_SMART_LINK_CLIENT/service"
checkCommandError

echo "Copiando $PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/start.sh para $PATH_SMART_LINK_CLIENT/service" 
sudo cp -r "$PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/start.sh" "$PATH_SMART_LINK_CLIENT/service"
checkCommandError

echo "Copiando $PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/stop.sh para $PATH_SMART_LINK_CLIENT/service"
sudo cp -r "$PATH_SOURCE_SMART_LINK_CLIENT/service/Linux/stop.sh" "$PATH_SMART_LINK_CLIENT/service"
checkCommandError

echo 'Habilitando SmartLinkClient ...'
sudo systemctl enable SmartLinkClient
sudo systemctl daemon-reload

echo 'Iniciando SmartLinkClient ...'
sudo systemctl start SmartLinkClient
echo 'Fim da instalacao.'


Instalando o serviço:

  • Abra um terminal e execute o arquivo "/service/Linux/install.sh", que está localizado onde o projeto foi extraído.

  • O comando ficaria como: sudo bash /"local-onde-projeto-foi-extraido"/smart-link-client/service/Linux/install.sh
  • O script de instalação fará a inicialização do serviço automaticamente.
  • Start e Stop manuais:
    • Caso necessite interromper ou inicial o serviço manualmente. 
    • para iniciar o serviço, execute:
      • sudo bash /usr/local/smart-link-client/service/start.sh
    • para parar o serviço, execute:
      • sudo bash /usr/local/smart-link-client/service/stop.sh

Atenção

  • O diretório ao qual o projeto foi extraído não é o mesmo local onde o projeto será instalado:
  • A instalação do smart-link-client será em /usr/local/
  • Após a instalação, o projeto extraído torna-se necessário somente para a execução do script de instalação e desinstalação, uma vez que os demais arquivos foram copiados para o destino /usr/local/smart-link-client
  • A saída de logs do smart-link-client ocorrerá no diretório em que foi instalado, no caso, /usr/local/smart-link-client/client/log


Desinstalador de serviço para Linux

  • Abra um terminal e execute o arquivo "/service/Linux/uninstall.sh", que está localizado onde o projeto foi extraído.
  • O comando ficaria como: sudo bash /"local-onde-projeto-foi-extraido"/smart-link-client/service/Linux/uninstall.sh
  • Ao desinstalar o serviço, a pasta /usr/local/smart-link-client será removida

04. Configuração


Arquivo de configuração

Arquivo de configuração application.yml.

Utilizando a pasta de exemplo dos passos anteriores, podemos encontrar o arquivo em: "/client/application.yml"


Configurações do arquivo application.yml


Leia com atenção o detalhamento das configurações abaixo:

# SERVER

A porta de acesso da aplicação pode ser alterado na propriedade:

# -------------------------------------------------
# SERVER
# -------------------------------------------------  
server:
  port: 8777
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.server.server.port


# SPRING

Por padrão estamos utilizando 10MB para poder trafegar metadado no formato JSON.

# -------------------------------------------------
# SPRING
# ------------------------------------------------- 
spring:
  codec:
    max-in-memory-size: 10MB

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.core.spring.codec.max-in-memory-size


# LOG

O nome do arquivo de log pode ser alterado na propriedade:

# -------------------------------------------------
# LOG
# -------------------------------------------------    
logging:
  file:
    name: log/smart-link-client.log
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.core.logging.file.name


# SPRING ACTUATOR

# -------------------------------------------------
# SPRING ACTUATOR
# -------------------------------------------------     
management:
  endpoints:
    web:
      exposure:
        include: "*"
      base-path: "/doc-hc"

# SMART LINK CLIENT

# -------------------------------------------------
# SMART LINK CLIENT
# -------------------------------------------------
totvs:
  link:
    auth:
      url: INFORMAR_URL_RAC
      client: INFORMAR-CLIENT
      secret: INFORMAR-SECRET
    client:
      subscriptions:
        - SGDPDataCommand
        - SGDPMaskCommand
        - SGDPLogsCommand
    server:
      host: INFORMAR_HOST
      port: 443
      secure: true
  tenant:
    name: INFORMAR-NOME-TENANT
    id: INFORMAR-ID-TENANT
    application:
      url: 'INFORMAR_URL_DATASUL'
      username: 'INFORMAR_USUÁRIO'
      password: 'INFORMAR_SENHA'
      messages:
        - type: SGDPDataResponse
        - type: SGDPMaskResponse
        - type: SGDPLogsResponse
        - type: SGDPUpdateTenantMetadata        
      audiences:
        - type: SGDP               
      subscriptions:
        - subscription: SGDPDataCommand
          route: api/sec/v1/sgdp/commands
          dataSources:
            - companyId: 'INFORMAR_CÓDIGO_EMPRESA'
              rpw: 'INFORMAR_EMPRESA:INFORMAR_RPW'          
        - subscription: SGDPMaskCommand
          route: api/sec/v1/sgdp/commands
          dataSources:
            - companyId: 'INFORMAR_CÓDIGO_EMPRESA'
              rpw: 'INFORMAR_EMPRESA:INFORMAR_RPW'          
        - subscription: SGDPLogsCommand
          route: api/sec/v1/sgdp/commands
          dataSources:
            - companyId: 'INFORMAR_CÓDIGO_EMPRESA'
              rpw: 'INFORMAR_EMPRESA:INFORMAR_RPW' 

Leia com atenção o detalhamento das configurações abaixo:

O Smart Link Client Java é uma biblioteca que facilita o desenvolvimento de um LINK Client para a plataforma Java, sendo necessária a implementação de uma aplicação que implemente um processador de mensagens (LINK Client Java Application mais abaixo).

No Smart Link Client Java utiliza o protocolo GRPC, sendo necessária a seguinte configuração:

totvs:
  link:
    server:
      host: INFORMAR_HOST
      port: 443
      secure: true
  • INFORMAR_HOST:  Utilizar o host conforme o tipo do seu ambiente:
    • DEV: api-smartlink.dev.totvs.app
    • STAGING: api-smartlink.staging.totvs.app
    • PROD: api-smartlink.totvs.app

O produto Datasul suporta apenas o single tenant, é necessária a seguinte configuração:

totvs:
  link:
    auth:
      url: INFORMAR_URL_RAC
      client: INFORMAR-CLIENT
      secret: INFORMAR-SECRET
  • INFORMAR_URL_RAC:  Utilizar a url conforme o tipo do seu ambiente:
    • DEV: https://admin.rac.dev.totvs.app/totvs.rac/connect/token
    • STAGING: https://admin.rac.staging.totvs.app/totvs.rac/connect/token
    • PROD https://admin.rac.totvs.app/totvs.rac/connect/token
  • INFORMAR-CLIENT: Substituir pelo valor do seu client.
  • INFORMAR-SECRET:  Substituir pelo valor da sua secret.

Informar os valores do seu Tenant:

totvs:
  tenant:
    id: INFORMAR-ID-TENANT 
  • INFORMAR-ID-TENANT:  Substituir pelo valor do id do seu tenant.

Utilize aspas simples para valores do tipo texto ao informar as configurações do produto Datasul.

A  comunicação acontece nos dois sentidos (TOTVS Privacidade de Dados > Datasul) e (Datasul > TOTVS Privacidade de Dados) por meio das configurações abaixo:

totvs:
  product:
    url: 'INFORMAR_URL_DATASUL'
    username: 'INFORMAR_USUÁRIO'
    password: 'INFORMAR_SENHA'    
  • INFORMAR_URL_DATASUL: Substituir pelo valor do seu ambiente Datasul.
    • Exemplo: 'http://localhost:8080'
  • INFORMAR_USUÁRIO:  Substituir pelo valor de um usuário existente no Datasul. 
  • INFORMAR_SENHA:  Substituir pelo valor da senha do usuário.
  • INFORMAR_CÓDIGO_EMPRESA: Informar código da empresa
  • INFORMAR_EMPRESA:INFORMAR_RPW: Informar o servidor de execução do processamento (Código da empresa : Código do Servidor de execução)

Ao informar o endereço de um ambiente Datasul com protocolo HTTPS na configuração totvs.product.url, realize a importação dos certificados do ambiente Datasul na JVM que está executando o smart-link-client.jar, para importação utilize a ferramenta keytool.

totvs:
  product:
    url: 'https://meu-servidor:8080'    

Ao atualizar qualquer propriedade de configuração o serviço deverá ser iniciado novamente, permitindo a leitura das configurações atualizadas.


05. Iniciar o serviço instalado


Após concluir as etapas anteriores, basta iniciar o serviço instalado e verificar no log se a aplicação foi iniciada com sucesso.

Starting Application

INFO 15788 --- [main] com.totvs.link.client.Application        : Starting Application v12.1.34-NFRW-SNAPSHOT on 00000 with PID 15788 (C:\TOTVS\smart-link-client\client\smart-link-client.jar started by 00000$ in C:\TOTVS\smart-link-client\client)
INFO 15788 --- [main] com.totvs.link.client.Application        : No active profile set, falling back to default profiles: default
INFO 15788 --- [main] com.totvs.link.client.LinkService        : *** Connecting to server (link.staging.totvs.app:443)
INFO 15788 --- [main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService 'taskScheduler'
INFO 15788 --- [main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port(s): 8777
INFO 15788 --- [main] com.totvs.link.client.Application        : Started Application in 4.994 seconds

Para facilitar a visualização de log foi adicionada a infomação [SMART-LINK-CLIENT] no LOG para as classes java implementadas.

INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.readyEvent]
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration (totvs.product)
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration name: Datasul
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration username: ----
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration url: http://----:8380/
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration password: *********
INFO 3528 --- [main] c.totvs.link.client.ApplicationStartup   : [SMART-LINK-CLIENT][ApplicationStartup.showConfiguration] Configuration companies: [10] 
INFO 3528 --- [main] c.t.l.c.d.ProductSyncDefaultMetadata     : [SMART-LINK-CLIENT][ProductSyncDefaultMetadata.sync]
INFO 3528 --- [main] c.t.l.client.product.ProductSendMessage  : [SMART-LINK-CLIENT][ProductSendMessage.send][REQUEST][GET] to http://----:8380/api/sec/v1/sgdp/metadata/default
INFO 3528 --- [main] c.t.l.client.product.ProductSendMessage  : [SMART-LINK-CLIENT][ProductSendMessage.send][RESPONSE][GET][200] from http://----:8380/api/sec/v1/sgdp/metadata/default
INFO 3528 --- [main] c.t.l.c.d.ProductSyncDefaultMetadata     : [SMART-LINK-CLIENT][ProductSyncDefaultMetadata.sync] Sending message to Smart Link Server - type: SGDPUpdateApplicationMetadata - metadado: {"header":{"type":"SGDPUpdateApplicationMetadata"},"content":{"models":{},"codes":{},"package":"Datasul","productId":"Datasul","readOnly":true,"smartLink":"singleTenant","localLogs":false,"applicationId":"Datasul"}}
INFO 3528 --- [main] c.t.l.c.d.ProductSyncDefaultMetadata     : [SMART-LINK-CLIENT][ProductSyncDefaultMetadata.sync] Sent to Smart Link Server
INFO 3528 --- [main] c.t.l.c.product.ProductUpdateProperties  : [SMART-LINK-CLIENT][ProductUpdateProperties.update]
INFO 3528 --- [main] c.t.l.c.product.ProductUpdateProperties  : [SMART-LINK-CLIENT][ProductUpdateProperties.update] {"companies":["10"],"subscriptions":["SGDPDataCommand","SGDPMaskCommand"],"linkClientUrl":"http://----:8777","tpdDisabled":false}
INFO 3528 --- [main] c.t.l.client.product.ProductSendMessage  : [SMART-LINK-CLIENT][ProductSendMessage.send][REQUEST][POST] to http://----:8380/api/btb/v1/properties/integrations/totvslinkclient
INFO 3528 --- [main] c.t.l.client.product.ProductSendMessage  : [SMART-LINK-CLIENT][ProductSendMessage.send][RESPONSE][POST][200] from http://----:8380/api/btb/v1/properties/integrations/totvslinkclient
INFO 3528 --- [main] c.t.l.c.product.ProductUpdateProperties  : [SMART-LINK-CLIENT][ProductUpdateProperties.update] OK