Instalação do Serviço de Integração
O Integrador WMS-INT-ETL é uma ferramenta voltada para facilitar a integração entre os dados Oracle do Gestão de Armazenagem | WMS Senior para a XPlatform.
Permiti a conexão entre as soluções Gestão de Armazenagem | WMS Senior e Gestão da Mão de Obra no Armazém para realizar as principais funcionalidades: carga de dados, replicação de dados e envio destes dados para a XPlatform.
Arquitetura
Pré-requisitos
Antes de iniciar a instalação do ETL é necessario como pré-requisito realizar algumas validações na tabela RTC_PENDENCIES, e se durante a validação ocorrer algum problema de lentidão, a solução é diferente para cada situação:
- Integrações que utilizam os dados do Gestão de Armazenagem | WMS Senior
- select count(1) as total from RTC_PENDENCIES rp ;
- Integrações que não utilizam dados do Gestão de Armazenagem | WMS Senior
- select count(1) as total from RTC_PENDENCIES rp
- where operationtime < sysdate - 60;
- Acesso ao docker hub da Senior para download da imagem do wms-int-etl (senior onpremise)
- Serviço linux com docker ou k8s instalado hospedar o container do wms-int-etl com acesso a base de dados do Gestão de Armazenagem | WMS Senior e a nuvem da Senior.
Essa configuração é necessária para salvar as informações de chave de acesso e senha para seu utilizada ao realizar o vínculo com o Gestão de Armazenagem | WMS Senior
Acesse Tecnologia > Administração > Gerenciamento de aplicações
- Na tela que abre clique em Nova Aplicação;
- Preencha os campos conforme necessidade e obrigatoriedade;
- Ao término clique em Salvar.
- Após salvar as informações a plataforma gera a chave de acesso e a senha que será utilizada para fazer o vínculo com o Gestão de Armazenagem | WMS Senior
Acesse Tecnologia > Administração > Autorização > Gestão de papéis
- Na tela que abre clique em Novo Papel;
- Informe o Nome do papel e a Descrição do papel para identificá-lo;
- Na aba Usuários, selecione os usuários que farão parte do papel:
- Encontre o usuário que deseja incluir no papel e utilize o toggle da coluna Associado;
- Marque a caixa de seleção Incluir usuários bloqueados se precisar visualizar os usuários bloqueados da plataforma.
- Após isso, na aba Aplicações, vincule a chave de aplicação:
- Encontre o nome da aplicação que deseja vincular e utilize o toggle da coluna Associado;
- Primeiramente, no Gestão de Armazenagem | WMS Senior é necessario parar a replicação se a mesma estiver em execução. Para isso acesse XPlatform > Gestão Logística > Gestão da Mão de Obra > Integração > Monitor de Replicação e clique em Parar;
- Em seguida no Gestão de Armazenagem | WMS Senior acesse Configuração > Configuração Geral > clique em Editar ;
- Vá na guia Senior X. Nesta tela, marque a opção Utilizar Senior X para realizar Login nos Sistemas;
- Preencha os dados do agrupamento de Dados de Acesso
- Endereço do servidor de Autenticação: https://platform.senior.com.br/;
- Tenant: adicionar o tenant criado;
- Chave de aplicação WMS XT - Acess Key: adicionar a chave gerada na plataforma Senior X;
- Segredo da chave de aplicação: senha do usuário do banco de dados;
- Para finalizar clique em Salvar;
- Após preenchido todos os campos vá na guia Integração e marque a opção Ativar gestão da mão de obra no armazém. Ao término clique em Salvar
Acesse Gestão Logística > Gestão da mão de obra > Integração > Monitor de replicação.
- Na tela que abre, clique em Iniciar para executar a replicação e aguarde o procedimento finalizar.
É recomendado que seja utilizado um usuário alternativo ao usuário do Gestão de Armazenagem | WMS Senior, com o intuito de proporcionar maior controle e segurança no acesso do usuário.
Vale ressaltar que essas recomendações só funcionam com o ETL na versão superior a 1.1.2.
As informações necessárias para o ETL funcionar são apenas de acesso as seguintes tabelas:
- RTC_ERP_AWS_STATUS
- RTC_INATIVE_REPLICATION
- RTC_PENDENCIES
- RTC_REPLICATIONDEF
- RTC_STATUS_CONSULTA
- RTC_WMS_AWS_INITIALLOAD
- RTC_WMS_AWS_STATUS
Abaixo segue o modelo com as restrições recomendadas.
GRANT SELECT ANY TABLE TO etl_user ;
grant connect to etl_user;
grant resource to etl_user;
grant alter session to etl_user;
grant select any table to etl_user;
grant execute any procedure to etl_user;
grant select any dictionary to etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_ERP_AWS_STATUS TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_INATIVE_REPLICATION TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_PENDENCIES TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_REPLICATIONDEF TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_STATUS_CONSULTA TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_WMS_AWS_INITIALLOAD TO etl_user;
GRANT INSERT, SELECT, UPDATE, DELETE ON WMSPRD.RTC_WMS_AWS_STATUS TO etl_user;
GRAN INSERT, SELECT, UPDATE, DELETE, ON WMSPRD.R900GPR TO etl_user;
grant create any table to etl_user;
Rotinas
A carga inicial é um processo realizado na implantação do sistema para fazer a inicialização das tabelas básicas para o setup inicial do produto. No caso da integração entre Gestão de Armazenagem | WMS Senior e Gestão da Mão de Obra no Armazém as tabelas com carga iniciais são: operadores (usuários), unidades logística, depositantes, motivos de ocorrência e tarefas em andamento.
O processo de carga pode ser realizado pela interface da XPlatformou via API do ETL.
A carga inicial de dados consiste em:
- Buscar os dados da tabela do WMS
- Construir um arquivo .csv
- Enviar o .csv compactado para um bucket do S3
- Notificar o serviço sobre a disponibilidade do arquivo
Para que a carga inicial seja realizada deve ser inserida, na tabela RTC_WMS_AWS_INITIALLOAD os seguintes valores:
- domain_name: nome do domínio de destino
- service: serviço do domínio que receberá os dados
- tablename: nome da tabela na base G7 que irá receber os dados
- query: query que irá buscar os dados na base origem
Para rodar a carga inicial deve ser chamado por POST a seguinte URL:
Para entender como é feita a carga inicial no Gestão da Mão de Obra no Armazém clique aqui.
Logo após ao finalizar o processo de carga inicial habilite a replicação continua dos dados, que consiste em realizar a integração de qualquer movimentação realizadas nas tabelas habilitadas para replicação no Gestão de Armazenagem | WMS Senior
Segue abaixo as etapas para a replicação:
- Buscar as pendências das tabelas monitoradas, que ainda não foram tratadas (RTC_PENDENCIES);
- Ler os dados correspondentes às pendências;
- Publicar um evento com estes dados;
- Marcar a pendência como tratada.
A replicação de dados monitora as pendências geradas pelas triggers da base Gestão de Armazenagem | WMS Senior.Este cadastro é feito na tabela RTC_REPLICATIONDEF com os dados:
- id: consultar range para o domínio
- idreplicator: wms_aws
- tablename: nome da tabela de exportação
Para entender como é feita a replicação no Gestão da Mão de Obra no Armazémclique aqui.
Para iniciar a replicação de dados deve ser executado o seguinte comando:
http://<host-etl>:<port-etl>/startContinuousIntegration
Após realiza a carga inicial, imediatamente deve-se habilitar a replicação continua dos dados.
Para verificar o status, acesse http://localhost:8182
Em seguida, inicie a replicação pela tela do Integrador ou via comando
Enquanto o ETL está rodando, acesse a página inicial para ver o status do motor de replicação no endereço http://localhost:8182
O ETL do Gestão de Armazenagem | WMS Senior roda em um container sem acesso externo. Para ter acesso as APIs do serviço entrar via ssh no servidor e rodar os comandos abaixo:
Obter status do ETL
curl --location --request GET 'http://localhost:8182/startContinuousIntegration'
Iniciar o modo replicação
curl --location --request GET 'http://localhost:8182/startContinuousIntegration'
Para o modo de replicação
curl --location --request GET 'http://localhost:8182/startContinuousIntegration'
Opções de Instalação
Para instalação com docker a última versão deve ser obtida do Docker Hub com o comando:
A execução do docker é feita através do comando
docker run -d \
--restart unless-stopped \
--name wms-int-etl \
-p 8182:8182\
-e DB_TYPE=Oracle \
-e DB_URL=<db_url> \
-e DB_USER=<db_user> \
-e DB_PASSWORD=<db_password> \
-e TENANT=<tenant_name> \
-e USER=<user@tenant.com.br> \
-e REPLICATION_PENDENCIES_INTERVAL=600 \
-e REPLICATION_PENDENCIES_BLOCK_SIZE=2000 \
-e AGE_TO_CLEAN_TABLES=<num_days> \
-e TIME_VERIFY_CLEAN_TABLES=<num_hours> \
-e CLEAR_TABLES_BEFORE_INTEGRATION=<false/true> \
-e INTERVAL=<interval_ms> \
-e JAVA_OPTS="-Duser.timezone=GMT -Dfile.encoding=UTF-8" \
-e TZ=America/Sao_Paulo \
seniorsa/wms-int-etl:<version>
Variáveis de ambiente
- Tenant - nome do tenant enviando as informações;
- User - usuário padrão para enviar na mensagem. É recomendado usar um usuário específico para a integração, por exemplo, integrador@tenant.com.br
- DB_TYPE: tipo de base de dados, valores possíveis: Oracle
- DB_URL: url JDBC para acesso à base de dados
- DB_USER: usuário do banco de dados.
- DB_SILT_USER: usuário do banco de dados do gestão.
- Necessário apenas se o etl acessar através de um usuário diferente do Gestão de Armazenagem | WMS Senior, e que esteja na versão igual ou superior a 1.1.3.
- DB_PASSWORD: senha do usuário do banco de dados.
- INTERVAL: intervalo (em ms) para monitoramento de alterações pela replicação (Default: 30000).
- CONSUME_COMMANDS_INTERVAL: intervalo (em ms) para buscar responder comandos solicitados com origem no cloud.
- REPLICATION_PENDENCIES_BLOCK_SIZE: indica a quantidade de registros na tabela de replicação que precisa existir para envio dos dados para a cloud
- REPLICATION_PENDENCIES_INTERVAL: indica o intervalo máximo em segundos para envio do bloco de dados para cloud, mesmo que não atenda a quantidade mínima de registros na tabela de replicação.
- AGE_TO_CLEAN_TABLES: idade em dias (padrão são 30 dias) dos registros das tabelas de pendências RTC_PENDENCIES e RTC_ERP_AWS_STATUS que serão excluídos: data e hora atual - operationtime (data de criação do registro).
- TIME_VERIFY_CLEAN_TABLES: intervalo em horas (padrão é a cada hora) para a execução da tarefa de limpeza de registros antigos da tabela de pendências RTC_PENDENCIES e RTC_WMS_AWS_STATUS.
- CLEAR_TABLES_BEFORE_INTEGRATION: flag com valor "true" ou "false" (valor padrão) que indica se o recurso de limpeza de registros antigos da tabela de pendências RTC_PENDENCIES e RTC_WMS_AWS_STATUS é executado antes de efetuar uma migração.
- PAGE_SIZE: quantidade máxima de pendências que serão lidas a cada vez (Default: 10000).
Exemplo:
-e DB_URL=<url> \
-e TENANT=<tenant> \
-e AGE_TO_CLEAN_TABLES=<num_days> \
-e TIME_VERIFY_CLEAN_TABLES=<num_hours> \
-e CLEAR_TABLES_BEFORE_INTEGRATION=<false/true> \
-e INTERVAL=<interval> \
-e REPLICATION_PENDENCIES_BLOCK_SIZE=999
-e JAVA_OPTS="-Dintegration.db.connection.max.pool.size=30 -Duser.timezone=GMT -Dfile.encoding=UTF-8" \
-e TZ=America/Sao_Paulo \
--name <name> \
-p 8080:8080 \
seniorsistemas/wms-int-etl:<version>