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:

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:

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:

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:

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>