Páginas filhas
  • Biblioteca Java

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>






  • Sem rótulos