Esse serviço é responsável por enviar para o Ozone dados estatísticos a respeito do uso do sistema (versão, módulos, licença, etc...).
Classes podem ser "coletáveis" implementando a interface LicenseControlledEntityInterface. O LicenseUpdater tem uma lista de classes desse tipo que sempre serão coletados + um interceptor para registro de classes dinamicamente.
LicenseControlledEntityInterface
É responsabilidade das classes que implementam essa interface informar, basicamente:
- o seu próprio nome;
- quanto o cliente poderia usar daquele recurso;
- quando o cliente está usando daquele recurso;
- o "quão próximo do limite" está o percentual de uso (success, warning, danger);
Por exemplo, a classe Controlador deve devolver algo parecido com :
{
"label": "Controladores",
"usage": 10,
"limit": 16,
"class": "warning",
"id": "Controlador"
}
Cada classe pode ter uma regra diferente para determinar success/warning/danger.
Além desses dados coletados de classes, são incluídos alguns dados estatísticos gerais, como versão do sistema, facility e datas do log de operação e log de eventos mais recentes.
Envio para o Ozone
Com todas essa informações coletadas e transformadas em um JSON, seleciona-se uma estratégia para fazer o envio para o Ozone:
- se o sistema é SaaS, é feito o envio através de um broker MQTT do Ozone.
- se o sistema é OnPremises, é feito o envio através de uma API MQTT do Ozone (mais garantido e não expõe credenciais MQTT).
Essas informações são coletadas/enviadas a cada hora.