Configuração e execução do WMS-Print-Agent
O Print-Agent, ou agente remoto, é um utilitário que é executado no servidor local em segundo plano, gerenciando todos os trabalhos de impressão enviados entre o armazém e a Senior(cloud), trazendo segurança de acesso para todos os usuários de cloud, por dispensar o uso de VPN (uma possível porta de entrada de programas mal intencionados).
(Referente WMS-12307, WMS-17893)
Particularidades
- Versão do java 11 ou superior.
- Necessário o apoio da infraestrutura do cliente. Os responsáveis pela infraestrutura da rede do cliente devem garantir que a porta TCP 38451(porta default) esteja liberada no firewall, para a comunicação com o Cloud. É importante salientar que a porta TCP 38451 não deve ser bloqueada, pois é por meio dela que a aplicação WMS-Print-Agent se conecta ao servidor ao Cloud da Senior.
- É obrigatório informar ao Cloud Senior o IP externo/saída do cliente. Clique aqui para abrir chamado no Cloud. O tempo de resposta do SLA seguirá o padrão estabelecido pelo contrato.
- As impressoras que serão usadas deverão estar mapeadas no sistema operacional da máquina que será usada e disponível para uso pelo usuário que executará a aplicação WMS-Print-Agent.
- O CLIENT do agent deve ser instalado na máquina do cliente.
- É permitido somente um CLIENT por instalação no cliente.
- Caso o Gestão de Armazenagem | WMS Senior seja reinicializado e o WMS-Print-agent esteja ativo, este também deverá ser reiniciado.
O CLIENT está disponível no Portal do Cliente da Senior.
O agent já está imputado no Gestão de Armazenagem | WMS Senior.
- Acesse o Portal do Cliente da Senior com as suas credenciais;
- Navegue até a pasta do endereço remoto /ferramentas/WMS-Print-Agent;
- Baixe o arquivo application.properties para uma pasta local exemplo:
C:/WMS-Print; - Navegue até a pasta do endereço remoto /ferramentas/WMS-Print-Agent/2.0.6:
- A pasta 2.0.6 é referente a versão do WMS-Print-agent, portanto, selecione a pasta com a última versão do momento.
- Baixe o arquivo WMS-Print-agent-X.X.X.jar (mais atual) para a mesma pasta local ex: C:/WMS-Print;
- Realize a configuração do arquivo apllication.properties;
- Abra a pasta local que contém os arquivos baixados;
- Execute o arquivo WMS-Print-agent-X.X.X.jar.
- Duplo click no WMS-Print-agent-X.X.X.jar ou executar o comando
java -jar .\WMS-Print-agent-X.X.X.jar
- Duplo click no WMS-Print-agent-X.X.X.jar ou executar o comando
No final da instalação, com sucesso, a mensagem "listAllPrintersRequest Response Complete" é apresentada. Informando que as impressoras já estão listadas no WMS.
Para realizar a instalação no Windows utilize o Java Service Wrapper chamado Windows Service Wrapper, que é uma ferramenta que facilitará a criação do serviço do Windows que inicia o processo Java.
Após realizar o download do agente e configurar devidamente o arquivo application.properties, crie o serviço para iniciar o Agente de Impressões.
Para este passo de criação realize o download da ferramenta no link (WinSW Versão 2.12.0), que foi a última liberada até o momento da criação deste documento, e que também foi disponibilizada no nosso Portal do Cliente em /ferramentas/WMS-Print-Agent/WinSW, que já contém o arquivo de configuração para adequação e uso já com a nomenclatura correta.
Faça o download do arquivo que condiz com o sistema operacional para configurar o serviço:
- WinSW-x64.exe para sistemas de 64 bits
- WinSW-x86.exe para sistemas de 32 bits.
Insira o arquivo executável na mesma pasta do Agente de impressões remoto e o renomeie para WMS-Print-agent-service.exe, como mostrado na imagem abaixo:
Após copiar o arquivo executável do WinSW para a pasta do agente. Crie o arquivo XML de configuração conforme exemplo abaixo, e salve com o mesmo nome do executável do serviço, WMS-Print-agent-service.exe:
<service>
<!-- Identificador único do Serviço no Sistema de serviços do Windows-->
<id>WMS-Print-Agent</id>
<!-- Nome como será apresentado o serviço no Windows-->
<name>Wms Print Agent (powered by WinSW)</name>
<!-- Descrição do Serviço -->
<description>Agente de Impressões remota</description>
<!-- Comando executado para serviço ser executado -->
<executable>java</executable>
<!-- Argumentos adicionados ao comando para executar o agente -->
<arguments>-jar C:\WMS-Print-agent\WMS-Print-agent-X.X.X.jar</arguments>
<!-- Ação tomada ao falhar a inicialização -->
<onfailure action="restart" delay="20 sec"/>
<!-- Diretório onde o agente reside e será executado -->
<workingdirectory>C:\WMS-Print-agent</workingdirectory>
</service>
Após realizar o salvamento do XML na pasta do agente, serão listados os arquivos, conforme demonstrado na próxima imagem:
Execute o comando de instalação do serviço, a partir do Prompt de Comando ou PowerShell:
WMS-Print-agent-service.exe install
Após executar a instalação deverá exibir a seguinte saída:
WMS-Print-agent-service.exe install
2023-02-17 19:44:45,485 INFO - Installing service 'Wms Print Agent
(powered by WinSW) (WMS-Print-Agent)'...
2023-02-17 19:44:45,536 INFO - Service 'Wms Print Agent (powered by WinSW) (WMS-Print-Agent)' was installed successfully
E então será possível verificar o serviço instalado no Gerenciador de Serviços do Windows (services.msc):
Caso seja necessário, configure um usuário que tenha acesso às impressoras disponíveis:
Serviço no Linux baseado no Systemd
O Systemd é um gerenciador de serviços presente na maioria das distribuições Linux modernas, caso precise de mais informações sobre este gerenciador poderá usar o link (https://linuxhandbook.com/create-systemd-services) para consultar o uso e funcionamento.
Após fazer o download do agente de impressões remotas, e a correta configuração do arquivo application.properties. Será possível criar um serviço para execução do agente, para isso crie um script localizado em /usr/local/bin que será utilizado para realizar a execução do serviço, como exemplo:
sudo vi /usr/local/bin/WMS-Print-Agent
No conteúdo deste arquivo adicione o comando para executar através do java o jar do agente de impressões.
#!/bin/bash
java -jar /<Caminho até o Agente>/WMS-Print-agent-X.X.X.jar
Após a criação do script, crie o arquivo descritor do serviço para a execução do mesmo no caminho apresentado:
sudo vi /etc/systemd/system/WMS-Print-agent.service
[Unit]
Description=WMS-Print-Agent Service
[Service]
Type=simple
User=<Usuário>
Group=<Grupo do Usuário>
WorkingDirectory=<Pasta onde reside o agente>
ExecStart=/usr/local/bin/WMS-Print-Agent
SuccessExitStatus=0
TimeoutStopSec=60
Restart=on-failure
RestartSec=30
[Install]
WantedBy=WMS-Print-agent.target
RequiredBy=network.target
Valide se o usuário definido na execução do serviço tem acesso ao "WorkingDirectory", permissão para executar o script apontado em "ExecStart", permissão de visualização e impressão nas impressoras disponíveis para uso.
Após a criação do descritor, faz-se necessário recarregar os serviços disponíveis para execução através do comando:
sudo systemctl daemon-reload
Para habilitar o serviço após a inicialização do sistema utilize o seguinte comando:
sudo systemctl enable WMS-Print-agent
Com todos os passos devidamente executados, é possível iniciar o serviço através do comando:
sudo service WMS-Print-agent start
Execute o comando para verificar o status:
sudo service WMS-Print-agent status
Será retornado o status marcando como "Active (running)" conforme escrito no exemplo abaixo:
WMS-Print-agent.service - WMS-Print-Agent Service Loaded: loaded (/etc/systemd/system/WMS-Print-agent.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2023-02-17 17:47:56 -03; 2s ago Main PID: 23697 (WMS-Print-Agent) Tasks: 26 (limit: 18858) Memory: 311.1M CPU: 9.022s CGroup: /system.slice/WMS-Print-agent.service ├─23697 /bin/bash /usr/local/bin/WMS-Print-Agent └─23700 java -jar /home/server/downloads/WMS-Print-Agent/X.X.X/WMS-Print-agent-X.X.X.jar
- É compatível com qualquer SO (sistema operacional), por ser executado em uma JVM.
- O agent já está imputado no Gestão de Armazenagem | WMS Senior
- Compatível com as versões superiores a 8.12.7.7 e 8.12.6.30 do Gestão de Armazenagem | WMS Senior.
- A versão 2.0.6 do WMS-Print-agent oferece reconexão automática, porém é compatível apenas com a versão do Gestão de Armazenagem | WMS Senior 8.12.7.257 ou superior.
Parametrizações
Acesse Configuração > Configuração Geral > botão Alterar > guia Impressão Remota
- Escolha entre as opções abaixo do campo Tipo Impressão Utilizada:
- Impressão Local
- Impressão Agente Remoto: informe o endereço onde o agente configurado forneça acesso ao WMS para ser invocado através de chamadas REST e este endereço deve ser informado junto com os dados de autenticação necessário para fazer a chamada REST.
- Impressão por Mensageira: faz-se necessário informar duas portas, uma para conexão direta via TCP e outra para utilização por WebSocket, estas portas são utilizadas pelo agente remoto para se conectar às filas de mensagerias publicadas no WMS para conseguirem atender às requisições de impressão e obtenção de impressoras disponíveis. Esta conexão exige o usuário e senha.
- Se no campo Tipo Impressão Utilizada escolher a opção Impressão Agente Remoto, preencha os campos a seguir:
- Endereço do Agente de Impressões Remoto
- Usuário Agente de Impressões Remoto: insira neste campo um usuário para identificar o agente de impressão, como por exemplo "impressao".
- Senha Agente de Impressões Remoto: forneça uma senha aleatória que será associada ao Usuário Agente de Impressões Remoto.
- Mas se escolher Impressão por Mensageira no campo Tipo Impressão Utilizada, o sistema solicitará o preenchimento dos demais campos:
- Porta TCP Disponível para conexão
- Timeout para Comunicações: é exigido informar quanto tempo o WMS irá aguardar o agente remoto responder as solicitações de impressão e retorno de impressoras instaladas, esta definição é feita no campo Timeout para Comunicações
- Tempo de Cache para Impressoras Carregadas: utilizado para otimizar a performance da consulta de impressoras disponíveis, por padrão foi definido um tempo para manter uma lista das impressoras que estão disponíveis em cache, isto foi feito pois instalações e disponibilidades das impressoras não costumam mudar muito ao longo do tempo, portanto podemos acelerar a resposta à consulta de impressoras disponíveis utilizando os recursos disponíveis em cache. Ou seja, é possível definir o tempo máximo que reutilizará a lista de impressoras obtidas.
Se definir zero segundos desativa esta funcionalidade. - Porta WS Disponível para conexão
- Usuário de Acesso à Mensageria: insira neste campo um usuário para identificar o acesso à mensageria, como por exemplo "impressao".
- Senha de Acesso à Mensageria: forneça uma senha aleatória que será associada ao Usuário de Acesso à Mensageria.
- Clique no botão Validar Agente de Impressões
Acesse Configuração > Configuração Geral > botão Obter dados Conexão Mensageria
- Botão estará habilitado se configuração de uso da impressão por mensageria estiver corretamente configurada.
- Ao clicar neste botão, uma tela será apresentada com as propriedades de autenticação devidamente preenchidas, prontas para serem inseridas no arquivo application.properties do agente de impressão.
Acesse Configuração > Configuração Geral > botão Alterar > Conexão
Acione o suporte WMS Senior para o preenchimento correto destes campos.
- TSUNAMI_PATH: faz referência ao caminho fixo para acesso e exibição das impressoras no WMS Enterprise.
- INTERNAL_TSUNAMI_PATH: é necessário o preenchimento correto deste campo para a exibição das impressoras no coletor de dados.
- wms.printagent.requests.source
- Esta propriedade indica qual o contexto de uso será utilizado, os valores podem ser MESSAGE ou WEB, indique MESSAGE para o contexto de mensageria
- wms.printagent.messaging.clientID
- Identificador único do cliente que irá conectar no WMS
- wms.printagent.messaging.clientName
- Username definido no WMS para autenticação -Obtido no seguinte caminho: Configuração > Configuração Geral > botão Obter Dados Conexão Mensageria
- wms.printagent.messaging.clientKey
- Key definida no WMS para autenticação - Obtido no seguinte caminho: Configuração > Configuração Geral > botão Obter Dados Conexão Mensageria
- wms.printagent.messaging.uri
- Endereço para conexão usando WebSocket(WS), exemplo ws://HOST:PORT_WS/mqtt, quando usada não é necessário informa as propriedades wms.printagent.messaging.host e wms.printagent.messaging.port
- Em que HOST é onde o WMS SILT está hospedado
- PORT_WS é a porta definida no seguinte caminho: Configuração > Configuração Geral > Impressão Remota > Porta WS Disponível para conexão.
- Endereço para conexão usando WebSocket(WS), exemplo ws://HOST:PORT_WS/mqtt, quando usada não é necessário informa as propriedades wms.printagent.messaging.host e wms.printagent.messaging.port
- wms.printagent.messaging.host
- Host usado para acessar a mensageria diretamente usando protocolo TCP, quanto usada conexão por TCP não deverá ser informada a propriedade wms.printagent.messaging.uri
- wms.printagent.messaging.port
- Porta definida do WMS para acesso à mensageria usando protocolo TCP, quanto usada conexão por TCP não deverá ser informada a propriedade wms.printagent.messaging.uri
- wms.printagent.messaging.connectionTimeout
- Devem ser informados valores maiores que zero e menores ou igual a cinco minutos.
- Tempo máximo que irá esperar para realizar a conexão e reconectar em caso de desconexão. Utilizar formato de estabelecido de Duration, como descrito na API Java em https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/Duration.html#parse(java.lang.CharSequence), para informar timeout
- Para utilização desta propriedade utilize o padrão “PTnMn.nS” onde os sufixos em ASCII de "M" e "S" significam minutos e segundos sendo aceitos em maiúsculo e minúsculos, no caso dos segundos ainda possui a definição de dois números “n.n” sendo que o primeiro n é o que especifica o valor segundos e o segundo n que está após os ponto significa nano segundos e pode ser omitido caso não deseje informar a duração com tal precisão. Portanto pode ser definir a duração que definirá esta propriedade como por exemplo: PT5M é identificado como 5 minutos e PT3M30S é identificado como 3 minutos e 30 segundos.
- wms.printagent.security.credentials
- Informe as credenciais no formato “usuário:senha” para que sejam as credenciais de acesso à interface REST do projeto
- wms.printagent.security.secret.key
- String Seed utilizada para criptografar o JWT token na autenticação
- wms.printagent.security.token.expiration.minutes
- Tempo em minutos que o token demorará para expirar
No cenário onde o host será realizado o download, e quando resolvido pelo DNS que retorne mais de um IP e um desses IPs esteja demorando muito para responder, e esteja percebendo que a impressão esteja demorando muito para ser efetuada. Inserida a propriedade abaixo com a informação em ms e com valores entre 500ms e 10000ms que representam, 0.5 e 10 segundos respectivamente, a propriedade é:
- wms.printagent.downloading.connectionTimeout
- Timeout definido em MS com valores entre 500 e 10000
- Caso nenhum valor seja definido ou o valor especificados esteja fora do intervalo 500 e 10000, será utilizado o valor padrão da api de requisções http que é 10000ms ou seja 10 segundos.
Além de todos os parâmetros específicos do WMS-Print-Agent há também os padrões de aplicações SpringBoot que estão disponíveis e podem ser consultados em https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html.
wms.printagent.security.credentials=usuarioActuator:123456
wms.printagent.security.secret.key=SECRET
wms.printagent.security.token.expiration.minutes=15
wms.printagent.requests.source=MESSAGE
wms.printagent.messaging.clientID=agente_999
wms.printagent.messaging.clientName=impressao
wms.printagent.messaging.clientKey="9QDlAKqlBTrF9N9NJEvdluTMWf7P58yYsdBJnu5A1uYqPnKk56OepLFthuAlSzbD"
wms.printagent.messaging.uri=ws://coloque_aqui_o_endereço_do_servidor_senior:38451/mqtt
wms.printagent.performance.timemeasure=true
wms.printagent.downloading.connectionTimeout=500
Observação: o clientName e o clientKey devem ser copiados do botão Obter dados Conexão Mensageria, que consta na Configuração Geral.
Veja também: |