Conteúdo

Visão Geral
Biblioteca desenvolvida pelo time de Framework SupplyAgro para dar suporte à operações de comunicação com o recurso de telemetria do LS Cloud.
A Biblioteca não está acoplada à nenhum framework, portanto, basta o produto utilizar a linguagem Java (8+) para poder utilizá-la
Como usar?
Temos dois pontos para serem implementados utilizando a biblioteca:
- Configuração: Deve ser realizada no início da aplicação e tem o objetivo de informar alguns dados importantes para a comunicação do produto com o LS Cloud
- Notificação: Criar um ponto de entrada (ex: Controller) para receber notificações de uso de rotinas do produto
Configurando o JFrog no pom.xml:
<repositories>
<repository>
<id>central-release</id>
<name>Maven Libs Releases</name>
<url>http://maven.engpro.totvs.com.br/artifactory/libs-release/</url>
</repository>
</repositories> |
Adicionando dependência no pom.xml:
<dependency>
<groupId>com.totvs.supplyagro</groupId>
<artifactId>license-server-java-lib</artifactId>
<version>1.0.2-RELEASE</version>
</dependency> |
Exemplo de configuração:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@PostConstruct
public void iniciarLicenseServer() {
LicenseServer.configurar()
.intervaloProcessarNotifacao(30)
.licenseServerUrl("https://lscloud.staging.totvs.app/")
.clientId("925b51abcbd64c819eef05b00eaf24b6")
.clientSecret("4b05e6173c57412187c0ec5c569d7512")
.rotinaMetricas("MÉTRICAS")
.aliasTenant("PRODUTO AGRO XPTO")
.moduloPadrao("9999")
.ativar();
}
} |
Dados informados:
- intervaloProcessarNotifacao: Intervalo em segundos entre cada envio para o LS Cloud (a biblioteca vai acumulando em uma fila em memória). Nâo pode ser menor que 5 e caso não seja passado nada irá assumir 30 segundos
- licenseServerUrl: Endereço do License Server utilizado (o endereço deve estar liberado no servidor em que a aplicação está executando). Exemplos:
- clientId e clientSecret: Informações necessárias para se autenticar com o LS Cloud (time Agro utilizar o valor do exemplo)
- aliasTenant: Descrição da tenant dentro do License Server (geralmente o nome do produto)
- moduloPadrao: Caso o produto tenha somente um módulo (slotId) do License Server, poderá utilizar essa configuração e todas as notificações serão para esse módulo
- rotinaMetricas: Rotina a ser utilizada ao enviar métricas ao LS Cloud. Caso seja informada nessa configuração, ao enviar métricas não será necessário informar uma rotina
Exemplo de recebimento de notificação:
@RestController
@RequestMapping(path = "/api/v1/licenseServer")
public class LicenseServerController {
@PostMapping(path = "/notificacaoUso")
public ResponseEntity<Void> notificar(@Valid @RequestBody LicenseServerRequest notificacao, HttpServletRequest request) {
NotificacaoLS.iniciar()
.ipMaquinaCliente(request.getRemoteAddr())
.usuario("usuário")
.rotina(notificacao.getRotina())
.modulo(notificacao.getModulo())
.dataHora(ZonedDateTime.now())
.cpfcnpj("56608857000143")
.tcode("TF0015")
.versaoProduto("12.1.30")
.enviar();
return ResponseEntity.noContent().build();
}
} |
Dados informados:
- cpfcnpj: Documento do cliente. Pode ser obtido pela Empresa, Filial, Unidade Administrativa, etc. Este CPF/CNPJ deve ter um contrato válido (somente números)
- tcode: Código de identificação do cliente com a TOTVS (obtido pelo PO ou time de negócios)
- ipMaquinaCliente: IP onde foi utilizada a rotina (no exemplo está utilizando o IP da request)
- usuario: Usuário que utilizou a rotina
- rotina: Código da rotina utilizada. Não precisa ter sido cadastrada previamente
- modulo: Atributo opcional caso tenha sido informado um módulo padrão. Módulo é o slotId (verifique com o PO)
- dataHora: Horário da utilização da rotina. Caso não seja informado será utilizada a data/hora atual
- versaoProduto: Versão do produto (Opcional)
Após as implementações acima, ao consumir o endpoint /api/v1/licenseserver/notificacaoUso
o sistema irá enviar uma notificação para o LS Cloud, informando que o usuário fez uso da rotina em questão.
Exemplo de envio de métricas(*):
void enviarMetricas() {
MetricaLS metrica = MetricaLS.iniciar()
.idMetrica("id-metrica")
.valorMetrica(1)
.cpfCnpj("1234567890")
.tcode("T-CODE")
.modulo("0000")
.rotina("ROTINA")
.subRotina("SUBROTINA")
.tempoUso(60000)
.dataHora(ZonedDateTime.now())
.build();
metrica.enviar();
} |
*Disponível a partir da versão 1.0.6
Dados informados:
- idMetrica: ID da métrica definido pelo time do produto e enviado/aprovado via fluxo pré-estabelecido com o time responsável pelo assunto de Telemetria
- valorMetrica: Valor da métrica a ser enviada ao LS Cloud
- cpfcnpj: Documento do cliente. Pode ser obtido pela Empresa, Filial, Unidade Administrativa, etc. Este CPF/CNPJ deve ter um contrato válido (somente números)
- tcode: Código de identificação do cliente com a TOTVS (obtido pelo PO ou time de negócios)
- modulo: Atributo opcional caso tenha sido informado um módulo padrão. Módulo é o slotId (verifique com o PO)
- rotina: Código da rotina utilizada. Não precisa ter sido cadastrada previamente. Atributo opcional (caso tenha sido informada nas configurações da biblioteca).
- subRotina: Código identificador da subRotina utilizada. Não precisa ter sido cadastrada previamente. Atributo opcional, caso não informado assume o mesmo código da rotina.
- tempoUso: Tempo de uso, em segundos, da subRotina. Atributo opcional.
- dataHora: Horário da utilização da rotina. Caso não seja informado será utilizada a data/hora atual
Possíveis problemas
Logback
A biblioteca utiliza o logback para gerar logs, caso isso seja um problema (por exemplo, ocorrer um conflito por estar utilizando outro provedor de logging), fazer o exclusion
no pom.xml
conforme abaixo:
<dependency>
<groupId>com.totvs.supplyagro</groupId>
<artifactId>license-server-java-lib</artifactId>
<version>1.0.0-RELEASE</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency> |