quarta-feira, 16 de setembro de 2015

Task Maintenance



        Em nosso dia a dia, existem tarefas que gostaríamos que ao acordar, ela iniciasse automaticamente. Imagine ao acordar e a cafeteira liga para esquentar o café, o fogão esquenta o leite, a banheira começa a encher....tudo estivesse pronto para o inicio do dia. Cada vez mais esse tipo de situação se torna comum nas praticas atuais do sistema, são serviços adicionais dentro de cada programa que pode ser iniciado ou desligado de forma simples, mas que controla um alto nível de fluxo de processamento ou execução, auxiliando componentes e funções paralelas da aplicação. Para quem trabalhou com AS400, Unix ou Linux sabe muito bem do que estou falando, e nos WMS não poderiam ser diferentes.

A task maintenance trabalha na mesma proporção que os serviços do Windows, ou seja, Na task maintenance é o local onde deve ser configurada as tarefas que deveram ser executadas \ iniciadas automaticamente quando o serviço da aplicação iniciar. Por padrão, a tela vem com algumas tarefas proprietarias criadas que podem ou não ser ativados conforme a necessidade de cada operação. Todas as tarefas continuam sendo executadas em segundo plano, e rodando enquanto a aplicação esta ativa.

Entre as tarefas posso destacar as mais comuns: Conexão de RF, Conexão de RFID, Conexão de Voice e processos Seamless.

Tela para configuração da aplicação.

Tela para ativação \ desativação no console.



Para a configuração de uma task, temos os seguintes passos:

Task Id: É um nome que normalmente determina a função que será executada pela tarefa, devendo ser usada uma nomenclatura única.

Name: É onde deve ser descrito o proposito da task de uma forma reduzida.

Command: É o lugar onde é inserida a programação ou código de linguagem que será executado pela tarefa. Pode ser utilizado qualquer tipo de linguagem de programação.
Atenção: cuidado com comandos proprietarios de linguagem, por exemplo: Oracle e SQL Server.

Start in: É onde informamos o caminho (diretório) que esta instalado o programa complementar para execução da Tarefa.Normalmente utilizados por variáveis de ambiente da própria aplicação.

Log File: Local onde deve ser inserido o caminho que deve ser gravado o log de atividade de execução da tarefa.Se não for definido um caminho para o log, por padrão ele é inserido no mocaconmgr.log em uma linha definida como [service]

Start Delay: Este processo define em segundos qual o tempo que essa task será executada depois que o serviço da aplicação for iniciada. Isso define se esta task será executada junto com as demais, ou seja, em casos que existem task dependentes é ideal que seja configurada o delay.

Absolute Group: Identifica se a tarefa esta sendo executada ao mesmo grupo de sua funcionalidade.

Behavior
Auto Start: Define se a tarefa sera iniciada automaticamente junto com o serviço da aplicação. Se não foi ativado, deverá ser ativada manualmente pela tela de console.

Restart on Termination: Define se sera reiniciada automaticamente, quando o serviço da aplicação for reiniciado.

Tracel Level: Define o tipo de nível para criação de trace da tarefa.



Task Type:
Define o tipo de processamento que será executado por cada tarefa.

Thread: Se a tarefa que esta sendo criada devera ser executada como um processo separado do Java junto com o servidor, então essa opção deve ser selecionada.

Process: Se a tarefa que esta sendo criada devera ser executada em paralelo (independente) do servidor, então essa opção deve ser selecionada.

Daemon: Se a tarefa que esta sendo criada devera ser executada em paralelo com a aplicação, então essa opção deve ser selecionada. A diferença principal nesse tipo é que ela executada \ iniciada com a validação do argumento do comando utilizado. Dentre a mais conhecida que utiliza esse método é a MTF_SERVER que controla o funcionamento do coletor (RF, Gladiador, RF veicular,etc).








segunda-feira, 24 de agosto de 2015

Console ou Registry Editor?



           Parei por um tempo e comecei a pensar sobre as evoluções que tivemos no WMS - JDA, e algo que não pode passar despercebido principalmente para quem participa das configurações de hardware são as definições de variáveis de ambiente, java, banco de dados, telnet,etc.

E cheguei na seguinte questão: Qual a diferença entre Console e o Registry Editor?

A nova geração talvez nunca tenha ouvido falar em Registry Editor, ferramenta proveniente das versões até 2010. Antes de entrar na diferença entre eles, temos que abordar o que é Registry Editor?

O Registry Editor era um programa editor que fica disponível no servidor de instalação da aplicação WMS (ou report). Com uma aparência igual ao gerenciador de tarefas do Windows, servia para configurar de forma mais rápida as tarefas, jobs, licenças, banco de dados, conexões e suas portas. Funcionava de forma paralela a algumas telas proprietárias da aplicação WMS, como a task maintenance, job maintenance, database archive maintenance entre outras. Existia 2 impecilios para utilização dele: a primeira estava relacionado a conexão, o usuário deveria ter acesso ao servidor de instalação. Algo fora de cogitação para o nível de segurança utilizado nos ambientes administrativos atuais. O segundo se referia as configurações, caso o usuário realizasse alterações nas telas proprietarias da aplicação e não fosse realizado o reset do serviço o processo não aparecia habilitado no Registry, causando divergência entre as informações.





Para as gerações acostumadas com as versões antes de 2010. Talvez venha a pergunta o que é Console?

O console pode ser definido como a versão mais conservadora do Registry Editor. Conservadora no sentido de limitar as alterações deixando o processo mais para visualização e as alterações para as telas proprietarias do WMS e no arquivo Registry encontrado no caminho $LEDIR/data.




 No caso das configurações do arquivo Registry no $LEDIR/data posso citar:


Configuração do servidor de Instalação:

[SERVER]
url=http://"HOST Servidor de Instalação":4600/service
app-library=%DCSDIR%\bin\dcsmsi.dll
prod-dirs=%LESDIR%;%LESWEBDIR%;%MOCARPTDIR%;%DCSDIR%;%EMSDIR%;%MTFDIR%;%SALDIR%;%MCSDIR%;%SLDIR%;%MOCADIR%;%REPORTINGDIR%
rmi-port=4601
memory-file=%LESDIR%\data\commands.mem
port=4600

Configuração do Banco de dados:

[DATABASE]
url=jdbc:oracle:thin:@"IP \ Host do Banco de Dados":1521:"String"
password="Senha do Banco de Dados Criptografada"
driver=oracle.jdbc.OracleDriver
dba_username=
dba_password=
username="Nome do Usuário do Banco de Dados"


Configuração do Java para processamento de RF e VM. (string padrão utilizada nas versões entre as versões)

[JAVA]
vm=C:\Program Files\Java\jre7\bin\java.exe
vmargs=-Xmx4096m -XX:MaxPermSize=192m
vm32=C:\Program Files (x86)\Java\jre7\bin\java.exe
vmargs32=-Xmx128m
#
#The name of the Java executable to use for the main server and all 64-bit applications.
#vm=java
#
#The arguments to pass to the Java VM.
#vmargs=
#
#The name of the 32-bit Java executable to use. If none is configured, then the value of vm is used instead. If no JVM is configured, then java is used.
#vm32=java
#
#The arguments to pass to the 32-bit Java VM.
#vmargs32=

Configuração Padrão do Voccollet (Voice)

[VOC-LUT]
max-commands=10000
max-pool-size=10
min-pool-size=5
port=4200
server-command=sl_sock proc_inb_thread where sys_id = 'VOCOLLECT' and idle_timeout = 30 and parse_packet_cmd = 'sl_sock parse_packet vcstd' and run_tran_flg = 'T' and xml_flg = 'F'

[VOC-ODR]
max-commands=10000
max-pool-size=10
min-pool-size=5
port=4202
server-command=sl_sock proc_inb_thread where sys_id = 'VOCOLLECT' and idle_timeout = 30 and parse_packet_cmd = 'sl_sock parse_packet vcodr' and run_tran_flg = 'T' and xml_flg = 'F'


Qual a diferença entre Console e o Registry Editor?

O console possui uma interface melhor com os usuários, estilizado com a aparência de Windows Mobile, podendo ser conectado de qualquer browser (versões atualizadas). Os jobs, processo da aplicação e banco de dados ocorrem de forma real time dando ao usuário segurança em tudo que esta sendo executado na aplicação. O bounce (restart de tarefas) ocorre de forma transparente ao usuário, não caindo a conexão dos RF(emuladores) comumente conhecido das versões anteriores. É visivel neste processo a evolução da JDA na correção de atividades que impactam diretamente ou indiretamente na parada da aplicação.







quinta-feira, 30 de julho de 2015

Strawberry Perl





   Neste artigo vamos abordar sobre uma linguagem essencial para funcionamento do WMS (JDA - Redprairie) o PERL.

O que é Perl?

Perl é uma linguagem de programação de propósito geral originalmente desenvolvido para manipulação de texto e agora usado para uma grande variedade de tarefas, incluindo a administração do sistema, desenvolvimento web, programação de rede, desenvolvimento de GUI, entre outras coisas. A linguagem destina-se a ser prático (fácil de usar, eficiente, completo) ao invés de bonita (pequena, elegante, mínimo). Suas principais características são : fácil de usar, suporta tanto códigos de processos quanto de programação orientada a objetos, tem poderoso built-in suporte para processamento de texto, e uma das mais impressionantes coleções do mundo de módulos.

Fonte: http://perldoc.perl.org/perlintro.html


O Perl para Windows

Perl é uma linguagem de programação adequada para escrever scripts simples, bem como para aplicações complexas. Strawberry Perl é um ambiente de perl para Windows que contém tudo que você precisa para executar e desenvolver aplicações Perl. Ele é projetado para ser o mais próximo possível da emulação de um ambiente de sistema UNIX dentro do Windows. Ele inclui os binários perl, compilador (GCC) + ferramentas relacionadas, todas as bibliotecas externas (cripto, matemática, gráficos, xml ...), todos os clientes de banco de dados em pacotes.

Fonte: http://strawberryperl.com/


Uma Breve História do Perl

Larry Wall, criador do Perl, primeiro publicado Perl para Usenet newsgroup as `comp.sources 'no final de 1987. Larry tinha criado Perl como uma linguagem de processamento de texto para os sistemas operacionais Unix-like. Antes do Perl, quase todo o processamento de texto em sistemas Unix-like era feito com um conglomerado de ferramentas que incluíram AWK, `sed ', as várias linguagens de programação shell, e programas em C. Larry queria preencher o vazio entre "manipulexity" (a capacidade de linguagens como C para "entrar nas entranhas das coisas") e "whipuptitude" (a propriedade de linguagens de programação como AWK ou `sh 'que permite aos programadores a escrever rapidamente programas úteis). Assim, Perl (Practical Extraction and Report Language) nasceu.

Perl preencheu um nicho que nenhuma outra ferramenta antes dessa data tinha. Durante os próximos quatro anos ou mais, Perl começou a evoluir. Em 1992, Perl versão 4 tornou-se muito estável e foi uma linguagem de programação Unix "padrão". No entanto, Perl estava começando a mostrar suas limitações. Vários aspectos da linguagem eram confusas, e na pior das hipóteses problemático. Perl funcionava bem para escrever pequenos programas, mas para escrever aplicações de software grandes em Perl era pesado.
Os designers da linguagem Perl, agora um grupo, mas ainda sob a orientação de Larry "dei uma olhada em volta para as outras línguas que as pessoas estavam usando". Eles pareciam se perguntar: "Por que as pessoas escolhem outras línguas sobre Perl?" O resultado desta auto inspeção foi Perl, versão 5. O primeiro lançamento da versão 5 veio no final de 1994. Muitos acreditavam que a versão 5 era a versão Perl "completa". Com a versão 5, Perl foi verdadeiramente uma linguagem de programação de propósito viável.

Fonte: http://www.linuxtopia.org/Perl_Programming/pickingUpPerl_85.html#SEC85

Agora que sabemos o que é o PERL, qual o sentido da instalação da linguagem para o WMS?

PERL é uma linguagem de alta disponibilidade sendo utilizada para serviços e processos que nunca deveriam sofrer nenhuma forma de paralisação. Essa é uma das funções mais procuradas nos sistemas atuais, onde uma parada significa perda de lucros e produtividade. Funciona de forma a complementar \ gerenciar o processamento das aplicações JAVA. É impossível a instalação da aplicação WMS, sem antes haver a instalação do PERL. É a linguagem responsável pelo funcionamento do emulador de RF para os mais intimos da aplicação, irão se lembrar do mboostrap que era o arquivo de configuração dos RFs nas versões anteriores.















quarta-feira, 8 de julho de 2015

Instalação do WMS



  Para toda instalação de um software, existe arquivos ou programas de apoio e no caso do WMS - JDA não seria diferente. Estarei abordado de forma geral alguns programas utilizados, pois cada nova versão do WMS existem novas versões dos aplicativos de apoio. Antes de mais nada precisamos dimensionar o quanto de espaço teremos no servidor da instalação. Isso depende diretamente de qual sistema operacional será utilizado? qual o sistema de banco de dados?

Estarei compartilhando com vocês os Sistemas Operacionais na qual tive a oportunidade de trabalhar junto com o WMS. Existem particularidades distintas entre cada SO em relação a performance, confiabilidade, compatibilidade, instabilidade, etc., entre eles Windows Server, Linux e Unix.

Depois de escolhido o sistema operacional,  o próximo passo é a escolha do banco de dados, assim como o SO existem diversas particularidades entre eles que devem ser levados em consideração principalmente quando pensamos na integração com demais sistemas, entre esses o que mais se destacam são os bancos de dados Oracle e SQL Server.


Fonte: Propria

 Na instalação do WMS - JDA, existem 2 processos: a criação da aplicação e a criação do client. No caso do pacote de instalação da aplicação, estão os programas distintos para cada SO. Entre eles o JAVA e PERL. Cada um devendo ser instalado seguindo a ordem da documentação de instalação disponível dentro do pacote. Logo em seguida a instalação do pacote do client para conseguir acessar a aplicação. No caso do client, existem 2 maneiras diferentes de conexão:

1º Client Individual: Fazendo a instalação do client por maquina, conexão direta.
2º Citrix: Fazendo uma única instalação do client e emulando por citrix.

No primeiro caso, a performance da utilização da aplicação pode variar de acordo com cada maquina, no segundo, a performance da utilização está ligada diretamente ao servidor instalado, mas deve ser avaliado o custo beneficio em ambos os casos.

Junto com o pacote de instalação da aplicação é possivel fazer a instalação do programa de report, esse pode ser instalado de 2 formas:  No mesmo servidor que esta instalado a aplicação, se utilizando do mesmo console ou em servidor diferente, se utilizando de consoles independentes.

Em relação aos consoles, versões atuais da aplicação possuem conexão por navegador, entre eles estão internet explorer, chrome e firefox. Na documentação de cada aplicação são liberados novos plugins para outros navegadores.



















quarta-feira, 10 de junho de 2015

Redprairie - JDA


        
     Quando migrei da área operacional para área de tecnologia dentro da DHL, era um Super User (super usuário) do WMS Prologs (inicio 2000) conhecia a fundo todo processo logístico, operacional e as funcionalidades desse sistema. Em meados de 2007, se de inicio minha experiência com o Dlx2003 (Antigo Dmplus - Redprairie), esse WMS possuia uma estrutura totalmente diferente da que conhecia, os conceitos logísticos eram usados de forma e nomes diferentes, tendo um sistema operacional em Unix e não em Windows utilizados pela maioria dos sistemas da época. Esse sistema era muito robusto, os processos ocorriam em uma velocidade impressionante e a quantidade de dados que transitava era na mesma proporção. Entre os anos de 2009 e 2010, a empresa iniciou o processo para o DLX2006, essa versão estava em uma plataforma Windows e utilizamos na instalação um programa para emular a utilização do RF, a configuração nesse sentindo era um pouco mais complexa, o integrator ainda trabalhava de forma externa, as tabelas haviam mudado muito e os processos também em relação ao seu antecessor, foi um novo aprendizado.

Entre 2010 e 2011, a empresa investiu nas novas versões do WMS, DLX2009 Rapid e Discrete (Full). Essas versões apesar de diferentes entre si, eram muito mais robustas, tanto o RF quanto o integrator era encapsulado no próprio WMS, o processo se tornou mais rapido e menos complexo para instalação e configuração. Em 2012, a Redprairie comprou a JDA e manteve seu nome para fins estratégicos da Empresa.

"A JDA Software, produtora de software de gestão de fornecimento, concordou em ser comprada pela empresa privada rival RedPrairie por cerca de 1,9 bilhão de dólares em dinheiro. A oferta de 45 dólares por ação representa um prêmio de 18 por cento sobre o fechamento das ações da JDA no pregão de quarta-feira. A Reuters reportou citando fontes, que a JDA estava explorando a possibilidade de venda e tinha contratado o JPMorgan como consultor. (Por Supantha Mukherjee e Sayantani Ghosh)."

fonte: http://noticias.r7.com/tecnologia-e-ciencia/noticias/jda-software-e-comprada-por-us-1-9-bilhao-por-rival-redprairie-20121101.html

No inicio de 2014, tive o primeiro contato com a versão DLX2011, participando de melhorias na área de suporte para Panalpina. Neste ano ainda iniciei participação em  um projeto (configuração\suporte) para um cliente com a versão DLX2012, onde ficamos por mais de 1 ano, atuando junto com o cliente em customizações. No final deste mesmo ano, iniciei a configuração do ambiente de DLX2014 para gerar treinamento para outros clientes, essa versão possuia melhorias, com união e separações de algumas telas estrategicamente e outras melhorais referentes as configurações e comandos que não vou mencionar aqui, por que pode ser verificado nos release notes de cada versão.

Em 2015, apos o go-live do cliente Globo, tive o contato com a versão DLX2013 dando suporte a operação \ aplicação, essa versão era muito parecida com a versão 2014. Ainda em 2015, tive a oportunidade de  iniciar a configuração da versão JDA 8.2. Neste a JDA revelou uma nova identidade de marca e logotipo que caracteriza o slogan : Plano para deliverTM  a JDA aplicações têm sido rebatizada para refletir o novo logotipo corporativo e esquema de cores no Windows.

Historia da Redprairie.


fonte: http://www.referenceforbusiness.com/history/Qu-Ro/RedPrairie-Corporation.html









terça-feira, 5 de maio de 2015

Gerenciamento de Armazém 2



           Falamos nos artigos anteriores sobre Logística e sobre a necessidade das empresas em modernizar todo conhecimento operacional, trazendo para dentro, sistemas para gerenciar todas as atividades.
No artigo anterior fiz uma abordagem sobre WMS (warehouse management system) e sobre algumas características e coloquei uma relação dos maiores ou mais utilizados sistemas da cadeia de suprimentos do mundo. A pergunta que talvez esteja incomodando todos agora é: Qual é o melhor sistema de gerenciamento de armazéns do mundo?

A resposta é simples, o melhor WMS é aquele que se adequa na melhor forma aos processos operacionais de cada empresa. Não existe uma ferramenta que possua todas as funções para todas as necessidades operacionais, mas existem WMS que possuem maiores números de funções que se adaptam as realidades das empresas. Existem sistemas baseados em papel ou automatizados, em todos os casos, ambos possuem funcionalidade e investimentos diferentes. Não basta pensar em um sistema de alta performance, sem pensar nos equipamentos atrelados as funções disponibilizadas por estes. Assunto abordado no artigo de equipamentos de movimentação.

http://wmslogistic.blogspot.com.br/2014/12/equipamentos-de-movimentacao.html


Existem sistemas criados de forma particular "caseiros", nestes são criadas as regras de acordo com a necessidade operacional, muitas das vezes não seguindo padrões ou normas de segurança ou integridades para sua criação. E existem os sistemas de Portfólio, onde são criados em plataformas que seguem regras de integridade e padrões ligados diretamente a grandes processos logísticos, baseando-se nas experiências ou atividades realizadas em operadores logísticos.

Algo que se deve considerar na escolha de um WMS, é a origem de criação desses sistemas. Pois as regras desses sistemas são criadas baseadas na cultura de cada País, onde sabemos que a disciplina profissional
é totalmente diferente da utilizada no Brasil. Outra particularidade a ser considerada, em um sistema internacional existe um limite bem definido entre WMS (warehouse management system) \ TMS (transportation management system) \ LMS (labor management system)...etc. Caso que no Brasil, não existe na maioria das vezes uma definição onde uma começa e  outro termina.

Outros fatores técnicos que devem ser considerados é: Qual o sistema operacional o WMS utiliza? Qual o tipo de banco de dados? Qual o tipo de interface será utilizado?. Por que, essas escolhas  influenciam diretamente na transição de dados entre os sistemas utilizados pelos cliente e empresas.

Durante os 15 anos de experiência na logística tive a oportunidade de trabalhar com alguns WMS, entre eles: Triton (Mainframe), Prologs (Prolog), Manhattan (Manhattan Associates) e DLX (Redprairie/JDA). Cada um desses sistemas possui particularidades singulares.

O sistema na qual estarei abordando nos próximos capítulos é o DLX (Redprairie/JDA), baseando se nas versões de 2006 até 2014 onde as configurações são semelhantes, estarei demonstrando alguns configurações \ parametrizações, novidades, telas, etc...

http://www.jda.com/





segunda-feira, 13 de abril de 2015

Gerenciamento de Armazém



     A Logística é a parte fundamental para a sobrevivencia de grandes, medias e pequenas empresas. Sendo parte essencial para cadeia de suprimentos  "desde a fabricação até o ponto de consumo". É uma das principais influenciadoras no valor das mercadorias e do tempo de entrega. Entre todos os processos determina a qualidade e integridade do produto, mas grande parte dessas qualidades não seriam possíveis, sem a existência do WMS.

O que é WMS?

WMS é a sigla para Warehouse Management System ou Sistema de Gerenciamento de Armazém na forma mais simples, o WMS é o programa ou software utilizado para realizar todo processo logístico. O WMS é o modulo entre todos os processos operacionais e suas regras através de um ambiente controlado dentro de uma aplicação, criando uma estrutura mais rígida para que todas as funções sejam realizadas de acordo com o desenho ou a especificação de cada área/produto, controlando por nível de conhecimento ou funcionalidade de cada usuário e limitando por acessos. Fazendo o gerenciamento de todo armazém, indicando os melhores lugares para armazenagem e separação. O WMS viabiliza todo processo se utilizando de suas regras e controles, minimizando os erros ou riscos aumentando a velocidade do fluxo operacional.

A função principal do WMS é trazer funcionalidade e inteligencia para diminuir a dependência de conhecimento individual e aumentando o nível de produtividade, tendo em vista que na situação atual as empresas tem um alto nível de turnover (demissões/contratações). Outra função é o rastreamento dos dados em tempo real, guardando todos os desde o recebimento da mercadoria ate a expedição.

Além de todas as funcionalidades aclopadas ao WMS, ele possui módulos que permitem interagir com outros sistemas. Entre os módulos mais conhecidos  é o de interface que tem maior destaque, através de arquivos de diversos formatos (xml, edifact, X12, RND..etc) em alguns casos, esse modulo pode ser substituido por DBlink para comunicação direta entre banco de dados.

Existem outros módulos que se acoplam ao WMS para gerar maior resultado ou controles específicos, um exemplo é o LMS (labor management system) que é um sistema de gerenciamento de recursos (humanos) que gerencia as atividades pendentes para serem realizadas no sistema, controlando a produtividade e recurso por hora,  equipamento, atividade ..etc.

Não podemos esquecer que o WMS nasceu da necessidade de um maior controle e velocidade dos processos operacionais, como o minimo de erros possível, conforme aumentam as necessidades o sistema de adapta a essas condições, criando resultados precisos.

Entre os sistemas, abaixo estão os melhores programas e empresas do mundo.





http://www.mmh.com/article/top_20_supply_chain_management_software_suppliers_2014