Apontamento
Os serviços do Linx Analytics apontam para um batch inicializador das rotinas em node, que se encontra no caminho \install\windows-services\serviceInitializer.bat.
Esse batch é o que fará com que os serviços funcionem corretamente.
Logs
Os serviços irão gerar seus respectivos logs no caminho \logs, cada um com seu respectivo nome.
Processador
O serviço buscará a versão atual do change tracking para cada tabela referente a integração e guardará na memória. Depois, o processador carregará os scripts sql correspondentes ao nome da integração que está cadastrada na tabela LX_ANALYTICS, de acordo com a finalidade em que foi instalada em \processor\integrations\{Finalidade}\*.sql.
Sendo a finalidade: ERP ou POS
Os .sql são passados para o processador executar e, dentro dele, passamos os parâmetros necessários, sendo esses as versões do change tracking das tabelas para as integrações. Para que funcione corretamente, os parâmetros devem ser passados no padrão {{VERSAO_[NOME_DA_TABELA]}}.
O processador localizará esses parâmetros e substituir pelos números de versão conforme coluna VERSAO da tabela LX_ANALYTICS. Assim, as versões de change tracking variam de tabela para tabela e são passados para o processamento. No momento que uma integração estiver sendo executada, na tabela LX_ANALYTICS será alterado o status para ‘P’ (processando).
Arquivos CSV
O processador exportará o resultado das queries para arquivos ".CSV" onde são salvos no diretório \csv. Quando a finalidade da instalação for definida como ERP, os parâmetros estarão nomeados da seguinte maneira:
Linx{Finalidade}_{ID_LINX}_{NOME_DA_INTERGRAÇÃO}_{YYYY-MM-DD_HH-mm-ss-SSS}.csv
Sendo os parâmetros:
- Finalidade: ERP ou POS.
- ID_LINX: Seleção do parâmetro de nome “ID_ANALYTICS” da tabela “PARAMETROS”.
- NOME_DA_INTEGRACAO: Nome da integração vindo da tabela LX_ANALYTICS.
- YYYY-MM-DD_HH-mm-ss-SSS: Ano, mês, dia, hora, minuto, segundo, milissegundos.
Quando a finalidade da instalação for definida como POS, os parâmetros estarão definidos da seguinte maneira:
Linx{Finalidade}_{ID_LINX}_{IdGpEcon}_{IdLoja}_{NOME_DA_INTERGRAÇÃO}_{YYYY-MM-DD_HH-mm-ss-SSS}.csv
Sendo os parâmetros iguais aos da finalidade ERP, acrescentando:
- IdGpEcon: Id do grupo econômico vindo do arquivo de configuração
- IdLoja: Id da loja vindo do arquivo de configuração
Mensageria
Após o arquivo ser salvo na pasta é enviada uma mensagem para a mensageria com o seguinte layout:
{file:”{Nome_do_arquivo.csv}”, integration: “{Nome_da_integração}”, version:”{versão_corrente_ct}”}
Sendo a mensagem:
- Filename : nome do arquivo csv
- Integration: nome da integração
- Version: a versão corrente do change tracking para cada tabela
Entregador
O outro serviço, LinxAnalyticsSender, tem a responsabilidade de enviar esses arquivos para a nuvem (AWS S3 Bucket).
Ao ser iniciado o serviço, é efetuada a busca das credenciais do AWS no banco de dados na tabela PARAMETROS, com o nome de CREDENTIALS_AWS_ANALYTICS e é realizada a guarda dos dados na memória. É aberta uma conexão com a mensageria, que fica "escutando" a fila de mensagens.
A cada mensagem entregue, é logado o AWS e efetuada a busca do arquivo na pasta \logs. O nome desse arquivo está no corpo da mensagem e depois é feito o upload. Após o upload ser efetuado com sucesso, é realizada a remoção do arquivo da pasta e, também, a mensagem da fila. Depois disso retorna-se ao estado da integração para ‘D’ (disponível) e, juntamente, é realizada a atualização da última a versão da integração, conforme é exibido na mensagem.