Serviços Logísticos

Objectivos e Âmbito

Com este desenvolvimento pretende-se contabilizar o tempo e quantidade produzida, em todos os serviços logísticos de valor acrescentado para o cliente, que neste momento não têm qualquer tipo de visualização no nosso sistema.

Neste manual vamos explicar os passos necessários para a criação e parametrização necessária para realizar este tipo de serviços.

Criar uma definição de serviço logístico

Global Aplicação -> Aplicação -> Gestão de Armazéns -> Definições Operacionais -> Serviços Logísticos – Definições [AL369]

Ao seguirmos a caminho especificado acima, e depois de clicarmos no botão de criar, é nos apresentado o seguinte ecrã.

Tipo de Serviço Logístico → Código para o Tipo de Serviço Logísticos

Classe do Serviço Logístico → Classe a que o serviço logístico irá pertencer:

  • 01 Produção BOM → Classe para a produção de artigos a partir das suas partes nas transformações criadas no sistema
  • 02 – Transformação de Stock → Classe para a revisão de stock dos artigos
  • 03 – Serviço Genérico → Classe para todos os outros serviços logísticos

Origem do Serviço Logistico → Onde será criado o serviço logístico.

  • 01 – A pedido (RF) → O serviço logístico pode ser criado a partir da rádio frequência ou a partir do PC.
  • 02 – Administrativa → O serviço logístico só pode ser criado via PC.

Recursos do Serviço Logístico → Quantidade de operadores que podem ser utilizados no serviço logístico:

  • 01 – Mono-operador → Serviço Logístico só será efetuado por um operador.
  • 02 – Multi operador → Serviço logístico será efetuado por um ou mais operadores.
  • 03 – Multi operador com detalhe → Serviço logístico será efetuado por um ou mais operadores, mas com identificação de todos os operadores.

Após completar o ecrã e confirmar o preenchimento dos diversos campos teremos um ecrã com este aspecto:

De seguida e neste mesmo ecrã deveremos seleccionar o tipo de serviço logístico desejado, neste caso vamos escolher logo o primeiro, e depois clicar no botão . E o ecrã seguinte irá aparecer.

Aqui deveremos preencher os objetos que pertencem ao serviço logístico.

Sequencia → Sequencia do registo.

Objeto do Serviço Logístico → Objeto alvo do Serviço Logístico. Caso estejamos num serviço logístico pertencente a classe 01 ou 02 o objeto Contentor é obrigatório.

Origem do Objeto do Serviço Logístico → Onde o objeto do serviço logístico é declarado:

01 – A pedido (RF) → Declarado na Rádio Frequência.

02 – Administrativa → Declarado em PC não obrigatória a confirmação depois em rádio frequência.

03 – Administrativa Limitada → Declarado em PC, obrigatória a confirmação em rádio frequência.

Objeto do Serviço Logístico conhecido → Se o objecto alvo do serviço logístico é conhecido ao sistema.

Momento do Serviço Logístico → Momento em que as ações parametrizadas para o objeto do serviço logístico actuam.

Descrição → Instruções a dar ao utilizador na unidade de trabalho de serviços logísticos.

Depois de preencher todos os campos necessários vamos então parametrizar as ações a realizar ao objeto do serviço logístico. Para isso basta clicar no botão . Neste caso iremos escolher o objeto contentor que será o alvo de todas as ações para este serviço logistico.

Neste ecrã iremos preencher as ações que iremos realizar para o objeto escolhido no ecrã anterior, para o objeto contentor será sempre obrigatório ser declarado a ação gerar movimento, que deverá ter sempre associada o parâmetro da definição de movimento.

Por fim e no primeiro ecrã só falta definir os operadores ou grupo de operadores que têm autorização para realizar serviços logísticos. Para isso temos de selecionar o tipo de serviço logístico e clicar no botão . E neste ecrã definir as autorizações desejadas.

Criar um serviço logístico ( PC)

Global Aplicação -> Aplicação -> Gestão de Armazéns -> Definições Operacionais -> Serviços Logísticos [AL370]

Para criar um serviço logístico necessitamos seguir o caminho apresentado acima, e teremos o seguinte ecrã

Aqui iremos preencher o campo estabelecimento obrigatoriamente e também podemos ou não preencher o campo Classe do Serviço Logístico.

De seguida irá ser apresentado o ecrã com todos os tipos de serviços logísticos que estão dentro da nossa seleção.

Aqui neste ecrã escolhemos o tipo de serviço logístico criado anteriormente, neste exemplo iremos escolher o tipo 01 para produzir um artigo BOM.

Aqui neste ecrã iremos escolher o artigo, neste caso só aparecerão artigos que são compostos por outros artigos. Teremos então que escolher o artigo desejado, unidade de medida e quantidade. E depois confirmar a seleção.

Como foi parametrizado anteriormente que este tipo de serviço logístico tinha contentores de origem administrativo iremos para um ecrã que nos mostrará os contentores que pertencem as partes da transformação para que os mesmos possam ser escolhidos.

Aqui por fim basta escolher os contentores que irão ser alvo do serviço logístico e confirmar.

Por fim para consultar os serviços logísticos criados, basta seguir o caminho descrito em baixo

Global Aplicação -> Aplicação -> Gestão de Armazéns -> Definições Operacionais -> Consultas-> Serviços Logísticos [AL375]

Neste ecrã poderemos filtrar os serviços logísticos por armazém que é de preenchimento obrigatório, tipo de serviço logístico, serviço logístico, hora inicio que deverá ser colocada com o seguinte formato AAAAMMDDHHMMSS, sendo que se pode colocar alguma abreviação da mesma com o “” no fim por exemplo 20151102 que indicará todos os serviços logísticos começados no dia 2 de Novembro de 2015, e por fim o estado em que fechado serão todos os serviços logísticos já finalizados e válidos serão todos os serviços logísticos ainda por finalizar.

Neste ecrã poderemos visualizar, o tipo de serviço logístico, o código do serviço logístico, hora de inicio e fim, o numero de recursos do serviço logístico e a quantidade produzida esta quantidade é a quantidade declarada na ação de rádio frequência que finaliza o serviço logístico.

Para consultar os detalhes do serviço logístico deveremos clicar no botão detalhes .

Aqui poderemos consultar o artigo ou artigos alvo do serviço logístico, podemos ainda ver os contentor afetados assim como o momento em que foram afetados pelo serviço logístico.

Outras parametrizações necessárias para os Serviços logísticos

Global Aplicação -> Aplicação -> Gestão de Stocks -> Parametrização -> Movimentos de Mercadoria [AL007]

Para que no fim da unidade de trabalho possam ser feitos os movimentos necessários, estes terão que ser criados, no caminho que apresentado acima.

O movimentos devem ser criados como indica a figura em cima, depois deveremos adicionar contadores a estes movimentos como mostra a figura abaixo

Neste caso selecionamos usamos um contador com contribuição negativa.

Depois de criarmos os movimentos deveremos associar os mesmos a um documento interno, para isso deveremos seguir o seguinte

Global Aplicação -> Aplicação -> Gestão de Stocks -> Determinações -> Determinação de Movimentos (Doc. Internos) [AL018]

Aqui deveremos escolher a opção Por Evento, T.Doc.Inter., T.Linha, e de seguida criar dois registos como mostra as imagens abaixo:

Depois de parametrizarmos os movimentos deveremos criar uma determinação para determinar a categoria do registo em WPMS.

Se seguirmos o seguinte caminho:

Global Aplicação -> Aplicação -> Gestão de Stocks -> Determinações -> Determ. Categoria Registo (Doc. Internos) [AL020]

Aqui deveremos escolher a opção Por Evento,T.Doc.Interno e de seguida criar a seguinte determinação

Depois de parametrizarmos os movimentos deveremos criar um novo tipo de unidade de trabalho como mostra a figura em baixo

Unidade de Trabalho para os Serviços Logísticos

Para iniciar uma unidade de trabalho de Serviços Logísticos, o operador deve ter associado o menu de Serviços Logísticos ( MNVAPRFS17).

Quando o utilizador clica na opção Serviços Logísticos irá ser apresentada uma lista de serviços logísticos disponíveis para o utilizador.

Neste ecrã é-nos apresentada uma lista de links de serviços logísticos que poderemos realizar, sendo que o que têm fundo sombreado já foram criados anteriormente. Só serão apresentados os tipos de serviços logísticos para quais o utilizador têm autorização.

Não deveremos neste ecrã clicar no botão CONF mas sim no link do serviço logístico desejado.

Depois de escolher o que iremos fazer irá ser apresentado um ecrã com as instruções definidas aquando a criação dos objetos do serviço logístico, sendo que as descrições aí criadas servirão de instruções para o utilizador de rádio frequência. Caso não existam descrições este ecrã não será apresentado e o sistema saltará para o ecrã seguinte.

Depois basta clicar no botão CONF e passamos para o seguinte ecrã

Aqui deverão ser confirmadas as etiquetas que foram escolhidas administrativamente ou o objeto contentor seja a pedido serão então declaradas as etiquetas alvo do serviço logístico.

Este ecrã também só será visível no caso de ter sido escolhido o contentor como objeto do serviço logístico.

Quando acabar de declarar ou confirmar os contentores todos, sendo que terá de declarar todos os contentores caso tenha escolhido para o objeto contentor a origem administrativa limitada, caso não seja este o seu caso pode sempre declarar fim.

De seguida e porque este tipo de serviço logistico foi parametrizado como multi operador, irá aparecer o ecrã que irá dar inicio ao Serviço Logístico.

Aqui será necessário declarar o numero de operadores que irão realizar o serviço logístico e a que horas irá começar. Após este ecrã será imprimido um relatório onde estará a identificação do serviço logistico.

Se na parametrização deste serviço logístico fosse escolhido multi operador com detalhe iria para um ecrã onde teria de ser identificado os operadores que iriam realizar o serviço logístico.

Caso na parametrização estivesse definido mono operador o sistema iria para o ecrã de fim que explicarei mais a frente.

Depois então no nosso caso de declarar o numero de operadores e a hora de inicio iremos sair da unidade de trabalho e os operadores irão fazer o serviço logístico.

Para declarar o fim devemos entrar outra vez no menu dos serviços logisticos, e na lista apresentada ao inicio escolher o serviço logístico que começou anteriormente.

E será apresentado o ecrã onde se pode declarar o fim do serviço logístico.

Aqui iremos declarar a hora fim o numero de operadores que terminaram o serviço logístico e a quantidade produzida. Se por alguma razão não terminou o serviço logístico basta clicar no botão continuar.

Caso no seja o fim basta clicar no botão CONF. E de seguida iremos para o seguinte ecrã,

Neste ecrã vamos identificar os contentores e artigo, assim como declarar as novas quantidades desses mesmos contentores. Quando declararmos todos deveremos clicar no botão FIM

Neste ecrã podemos ver o resumo do serviço logístico, se por acaso aconteceu algum erro nas contagens podemos sempre clicar no contentor onde o erro foi cometido e alterar essas mesmas contagens.

Quando clicarmos fim irá ser terminada a unidade dos serviços logísticos e o próprio serviço logístico, executando todas as ações planeadas anteriormente na criação do tipo de serviço logístico.

Serviços

Objectivos e Âmbito

No WPMS existem dois tipos de processos, os interactivos e os não interactivos, os processos interactivos são aqueles que apresentam e libertam os ecrãs dos utilizadores e será nestes em que utilizaremos cache, os processos não interactivos ou serviços são responsáveis por todos ostrabalhos executados na aplicação, ou em batch, neste manual serão estes últimos que vamos tratar.

O objectivo destes serviços batch, será a de conseguir dar resposta, o mais rápido possível, e sem perca de desempenho mesmo que os pedidos sejam muito elevados.

Definições importantes

ID – Número único que identifica cada serviço.

Serviço Master – Serviço responsável pela gestão de todos os serviços slaves, este serviço será sempre apresentado em primeiro lugar.

Serviço Slave – Serviço responsável por executar todos os trabalhos que lhe são atribuídos.

Trabalhos – Qualquer tipo de execução feita pelo utilizador, através de um processo não interactivo, responsável também pelo lançamento de eventos.

Eventos – São lançados pelos trabalhos, e são responsáveis pela execução do programa que lhes é associado.

Cache – Um tipo de memória que guarda alguns dados importantes para que os pedidos do utilizador serem mais rapidamente respondidos.

Como utilizar os Serviços ( ponto de vista do utilizador)

Instalação -> Administração -> Serviços [IA004]

Ao escolher esta opção do menu será apresentado o seguinte report. Neste report apresentamos uma lista de serviços, se os serviços estiverem ligados o report irá ter este aspecto.

Como pode verificar todos os serviços ligados têm um PID ( na imagem sublinhado a vermelho) o PID, e também o ícone aparece no ecrã( sublinhado a azul), este icone indica que o serviço encontra-se a correr sem problemas.

Quando não estiverem serviços activos aparecerá um ecrã sem PID e o ícon não irá aparecer.

Como pode observar na lista de serviços contem uma coluna chamada “Na Fila”, nesta coluna podemos ver quantos trabalhos estão a ser executados no serviço, o valor apresentado no serviço master é a soma dos trabalhos executados nos serviços slaves neste caso 0.

Na coluna “Em curso”, se estiver algum trabalho em curso poderemos ver há quanto tempo está em curso, para obtermos um valor mais exacto deveremos fazer refresh na pagina clicando neste botão

Ao seleccionar um dos serviços slave e clicar no botão modificar este report irá aparecer. Neste report pode mudar o servidor master, tornar o serviço automático, ou seja ao iniciar o serviço master este serviço também é inicializado, ou dinâmico, ou seja, quando é necessário este serviço arrancar este arranca dinamicamente, por exemplo o serviço encarregue das impressões só arranca quando o é gerada uma nova impressão sem que seja necessária a intervenção do utilizador para este arrancar.

Para gravar as alterações efectuadas deve clicar no botão guardar , para cancelar terá de clicar no botão atrás .

Ainda no ecrã de listagem de serviços, quando o utilizador selecciona um serviço slave e escolhe a opção Operação Seguinte representada pelo botão , será apresentada uma lista e trabalhos que este serviço efectuou ou está por efectuar.

Nesta lista estão descriminados todos os trabalhos que foram executados ou ainda estão em execução ou ainda aqueles que estão em erro, com uma descrição do trabalho, quem foi o utilizador que o mandou executar, a data e hora o trabalho é lançado para ver quando começou terá de ver no detalhe desse trabalho, como é explicado mais a frente, e ainda o estado em que está.

Ao seleccionar um dos trabalhos e se escolher a opção visualizar . O seguinte ecrã irá aparecer.

Neste ecrã poderá ver todos os detalhes correspondentes ao trabalho que seleccionou, entre os detalhes poderá observar o tempo que demorou, o objecto método usado, entre outros, o utilizador que emitiu este trabalho, assim como o seu estado neste caso concluído.

Ainda no ecrã de listagem de trabalhos, se o utilizador pretender modificar o trabalho terá de escolher a opção modificar . E um ecrã muito semelhante ao anterior irá aparecer.

Neste ecrã pode-se mudar o serviço que executa este programa esta opção não deve ser muito cuidadosamente tomada pois poderá resultar num pior desempenho da aplicação, aconselhamos que só seja mudado depois de nos consultar acerca dessa mesma mudança, e também mudar a prioridade do trabalho com que é executado o programa que define o quando o trabalho vai ser executado, ou vai ter de esperar por trabalhos de maior prioridade.

Para guardar as alterações deve seleccionar este botão .

Mas se o utilizador pretender ver o evento lançado por um trabalho especifico deve seleccionar a opção eventos .

Ao seleccionar esta opção este ecrã vai ser exibido, poderá observar quais os eventos são chamados, e quais os programas que são chamados pelo evento e em que sequência, data da sua activação.

Quando for pretendido ver quais são os parâmetros que são passados pelo trabalho seleccionado deverá escolher a opção parâmetros

Quando se clica neste botão o seguinte ecrã irá surgir.

Neste ecrã podemos observar todos os parâmetros enviados para o objecto método assim como os seus respectivos valores.

Mas se o objectivo é ver os logs que esse trabalho produziu deverá depois de seleccionar o trabalho, escolher a opção logs e este ecrã irá ser exibido.

Neste ecrã é mostrada uma listagem de logs quer sejam estes de erro ou informação, mostrando ainda a data a que o log foi produzido, este ecrã poderá ser útil pois poderá obter informação sobre o qual a viagem que foi criada, o mesmo da reserva entre outros exemplos.

Se objectivo do utilizador é apenas iniciar um serviço tendo em conta se iniciar o serviço master vão ser iniciados todos os serviços slave definidos como automáticos, para executar esta acção deverá escolher a opção go , no ecrã de listagem de serviços

Como se pode observar na coluna do PID irá aparecer um B indicando que o serviço estará a iniciar, quando o serviço for iniciado irá ser dado um novo PID, para ver qual é o novo PID clique no botão , e poderá então ver o PID do serviço.

Mas se em vez de querer iniciar um serviço, o objectivo de o utilizador é fazer parar o serviço, lembrando que se parar o serviço pai irá parar todos os serviços activos nesse momento, para efectuar esta operação terá que seleccionar o serviço pretendido e escolher a opção stop .

No PID irá aparecer a letra “E” antes do numero, isto quando se manda parar um serviço slave, ou quando se manda parar o serviço master neste também irá aparecer a letra “E”.

Quando parar o serviço master, o PID de todos os serviços slaves irão aparecer com com a letra “K” antes do número.

Quando os serviços efectivamente pararem irão ficar com o PID a branco.

Quando pretender desligar um serviço slave definido como automático. Irá aparecer a palavra “STOPPED” quando esse serviço estiver desligado, para informar que esse serviço está parado.

Para saber os logs dos serviços, deve-se escolher a opção logs , e irá mostrar uma lista de logs , associados ao serviço seleccionado.

Nesta listagem podemos ver o nome do ficheiro de logs, a data da sua criação assim como a hora em que foi criado. Para voltar atrás deverá escolher a opção atrás .

Para visualizar os logs de um determinado serviço de mostrará o conteúdo do ficheiro de log, numa nova janela, como mostra a figura em baixo

Para apagar um log especifico deverá seleccionar um log e escolher a opção apagar .

Como Activar Cache de Dados ( aspectos técnicos)

Para conseguir que a cache de dados esteja activa na sua aplicação, deverá seguir as opções do menu que se seguem.

Instalação -> Base -> Servidores [IA004]

Neste ecrã irá ser apresentada uma lista de servidores existentes na sua aplicação. Poderá

Poderá obter a informação se o servidor está parametrizado se o servidor está parametrizado para fazer cache de dados. Neste caso está desactivada

Para activar a cache de dados deve-se seleccionar o servidor desejado para fazer cache de dados e escolher a opção modificar , e o seguinte ecrã irá aparecer. Neste

Neste ecrã basta accionar o switch em Cache de Dados, e de seguida clicar em confirmar dados

Como Funcionam Os Serviços ( aspectos técnicos)

O programa que gere os serviços é o GnBatch.php, que se encontra na raiz da aplicação.

Antes de se iniciarem estes loops são efectuadas algumas validações, essas validações são efectuadas pela função basicChecks, validando o servidor. Nesta função são ainda atribuídos os PID’s a cada serviço, os PID’s são identificadores dos serviços, normalmente são valores que identificam, com algumas excepções, que servem para parar e começar os serviços como é explicado mais a frente. Neste ponto será inicializada a cache para os serviços interactivos, fazendo uma chamada ao startCache do XMLServer.php, Verificando que a variável global MC existe e está instanciada. A variável global MC, é a variável responsável de guardar todos os dados da cache.

Quando inicia os dois primeiros loops o programa faz um fork para diferenciar entre serviço master e os serviços slaves, só serão iniciados os serviços marcados com a flag automático. Neste loop será também desactivada a variável MC, para que seja assegurado que só os serviços interactivos terão cache.

Dito isto é de fácil compreensão que a hierarquia dos serviços e composta do seguinte modo, temos um serviço master, este têm serviços slaves por sua vez cada serviço slave tem uma fila de trabalhos associada.

O master tem dois loops que servem para manter o slaves sempre activos, cada slave por sua vez têm também dois loops que servem para executar os trabalhos que têm na sua fila.

Estes loops são controlados através de algumas definições.

Temos a variável sleeptime, esta variável controla de quanto em quanto tempo é feito um update no serviço em questão.

Temos ainda dois comandos que são usados pelo utilizador que podem intervir no funcionamento dos serviços. O comando de start e o comando end, o comando start quando aplicado no serviço master, inicia este e depois todos os slaves que estão marcados como sendo automáticos, quando aplicado num serviço slave irá iniciar este e só este serviço, o campo PID é inicializado com a letra “B” e todos os serviços que tiverem estas letras serão iniciados e são-lhes atribuídos novos números PID. O comando stop por sua vez quando usado no serviço master pára primeiro todos os slaves e só depois o serviço master pára, quando aplicado em um serviço slave e só o serviço pretendido, isto é efectuado através de mudanças no PID do serviço para parar um serviço não automático este modifica acrescentando a letra “E” ao numero de PID, quando o serviço é automático o PID irá ser substituído pela palavra STOPPED, este processo de paragem dos serviços é de responsabilidade de uma função chamada time2Go.

Outra maneira de controlar os loops, é a partir de uma variável chamada maxcycle, como o sleeptime é uma variável global, alguns serviços podem ser marcados como pela flag managecycle, estes só poderão fazer um numero de ciclos que for parametrizado na variável maxcycle, ao chegar ao ultrapassar o numero de ciclos guardado na variável maxcycle este serviços irão ser parados.