Workow
Matriz - Av. Braz Leme, 1.717 - 02511-000 - So Paulo - SP - Brasil. Tel.: 55 (11) 3981 - 7001 www.microsiga.com.br
Todos os direitos reservados.
Sumrio
WORKFLOW FLUXO OPERACIONAL CONFIGURAO Requisitos Correio Eletrnico Contas de e-mail CADASTRAR A CONTA DE E-MAIL DO WORKFLOW Pasta Caixa de Correio Pasta Receber Mensagens Pasta Enviar Mensagens Pasta Conexo Pasta "Correio" PARMETROS Pasta "Processo" Pasta "Noticao" Pasta "Messenger" ESTRUTURA DE DIRETRIO DE MENSAGENS PROCESSOS WORKFLOW Status Workow E-mails substitutos SCHEDULER Ativao Agendando Agendar recebimento de mensagens do Workow AGENDAR ENVIO DE MENSAGENS DO WORKFLOW HTML MODELO WORKFLOW Post message Macro substituio Tabelas CRIANDO UM PROCESSO EM ADVPL - FUNES Classe TWFProcess Mtodos GLOSSRIO
3 4 5 5 6 6 8 9 10 11 12 14 14 15 17 18 19 22 24 27 29 29 30 33 34 35 35 36 37 40 40 40 52
Workow
WORKFLOW
A automao de processos de negcio corresponde, em partes ou totalmente, s informaes, documentos ou tarefas que so passadas de uma pessoa outra para a realizao de uma ao que baseada em um conjunto de regras. Atravs da implantao de uma ferramenta de Workow nos processos crticos de uma organizao, estes tornam-se mais geis e seguros, evitando o travamento operacional do complexo uxo existente entre os processos. Principais benefcios: Aumento da eficincia: automao de processos eliminam vrios passos desnecessrios. Melhor controle dos processos: melhora do gerenciamento dos processos atravs da padronizao dos mtodos de trabalho. Melhora nos servios ao cliente: consistncia nos processos leva a uma maior previsibilidade e rapidez nos nveis de resposta ao cliente. Flexibilidade: controle sobre os processos atravs de uma ferramenta permite uma rpida mudana nos uxos de acordo com a necessidade. A ferramenta de Workflow existente no Protheus 8 permite o rpido alcance dos benefcios acima citados, alm de: Forte rastreabilidade dos processos: pode-se saber a atual situao de qualquer processo atravs da consulta da rastreabilidade. Transformao do sistema Protheus em ativo em vez de reativo: a informao e a ao necessria a ser tomada levada ao usurio e no o contrrio. Controle de time-out dos processos: os processos nunca ficam parados por falta de resposta de uma pessoa. Qualquer processo existente pode ser automatizado atravs da construo de um Workflow. As aes a serem tomadas pelas pessoas em cobrana podem ser realizadas atravs de quatro meios, evitando que um processo tenha seu ciclo interrompido por falta de comunicao, so eles: e-mail: os processos so respondidos atravs de um cliente de e-mail homologado. browser de internet: atravs do Internet Explorer, pode-se tomar a ao pedida pelo processo. Protheus: atravs do recurso de Messenger do Protheus, pode-se tomar a ao pedida pelo processo. Pontos de entrada: atravs de pontos de entradas existentes no sistema, pode-se tomar a ao pedida pelo processo.
Workow
FLUXO OPERACIONAL
Workow
CONFIGURAO
Requisitos
Software: o Workflow, que uma ferramenta embutida dentro do Server do Protheus, no necessita de instalao prpria, apenas conguraes. Toda congurao se d atravs do ambiente Congurador do Protheus. Servidor de e-mail (quando necessrio para os processos): o Workow necessita obter acesso a algum servidor de e-mail, caso se deseje utilizar e-mails como forma de comunicao. Esse servidor pode estar em um provedor remoto, acessado atravs de um proxy server ou atravs de uma linha discada (totalmente no recomendvel), caso se queira enviar e-mails para fora da sua empresa. Se a troca de e-mails for interna, poder ser utilizado um Exchange Server, Lotus Domino Server ou outro servidor de e-mail interno. O nico requisito imprescindvel que esses servidores trabalhem com protocolos SMTP e POP3 ou IMAPI. Conta de e-mail: caso utilize-se a opo de e-mail, o Workow necessita que seja criada uma conta de e-mail especificamente para ele. Isto , no poder ser utilizada para mais nenhum fim. Para cada empresa do sistema, dever ser criada uma conta especca. Pea para o seu provedor criar esta nova conta. Sugerimos com o nome da conta Workow. Exemplo: workow@suaempresa.com.br Clientes de e-mail: para recebimento dos e-mails gerados a partir do Workow, so utilizados os clientes de e-mails que devem ser aptos a responder os e-mails gerados pelo Workow, gerando arquivos de retorno chamados octetos. Para saber se o cliente de e-mail compatvel com o Workow, ele dever automaticamente gerar um e-mail de sada enviado para a conta do Workflow com um arquivo do tipo postdata atachado, quando houver a resposta do e-mail pelo usurio. Os seguintes clientes de e-mail funcionam com o Workow: OutLook Express 4.01, OutLook Express 5.5x, OutLook Express 6.0 e OutLook 2000 e XP, Lotus Notes 5.x. Outros clientes de e-mail podem no funcionar, principalmente os webmails. Portanto, garanta que as pessoas que iro receber e responder os e-mails tenham os clientes acima instalados em suas estaes. Quando no houver a certeza de que todos conseguiro responder os e-mails e possuir os clientes de e-mail homologados, use a opo de Workow sem uso de e-mails, conforme ser descrito nesta apostila. As opes de execuo de Java Script e Cookies devero estar liberadas. Servidor do Protheus: necessrio que o Workflow execute em um Server do Protheus exclusivo para ele, ou seja, deve haver um binrio somente para o Workflow. Memria do servidor: o servidor no qual ser executado o Workow deve possuir memria suciente para que se processem vrios retornos ao mesmo tempo. O mnimo recomendado de 512 MB de memria RAM para processar cinco retornos por vez. Um nmero maior do que isso, provavelmente necessitar de mais memria.
Workow
Correio Eletrnico
Protocolo
O Workow faz uso do recurso de envio e recebimento de mensagens eletrnicas (e-mails). Para que esse procedimento seja possvel, devemos configurar que tipo de protocolo de recebimento o Protheus dever usar. Se omitido, o padro assumido ser POP3. Caso necessite mudar, localize a seo [Mail] no arquivo mp8srv.ini e altere para o protocolo utilizado. Protocolos atualmente homologados: POP3 IMAP Exemplo: [Mail] Protocol=IMAP Folder=inbox
Anotaes
Contas de e-mail
Atravs do cadastro de contas de e-mails, possvel realizar o envio e recebimentos de mensagens. Para acessar o cadastro de e-mails, selecione a seguinte opo de menu do congurador:
Workow
Aps a realizao do cadastro de uma conta de e-mail, possvel realizar algumas operaes extras como: Enviar: esta opo executar o envio de todas as mensagens contidas na pasta outbox (caixa de sada). Enviar Todos: esta opo realizar a mesma operao do item anterior; entretanto, efetuar o envio de todas as mensagens para todas as contas cadastradas. Receber: esta opo executar o recebimento de todas as mensagens contidas no servidor de e-mail especicado no cadastro para a pasta inbox (caixa de entrada). Receber todos: esta opo realizar a mesma operao do item anterior. Contudo, realizar para todas as contas cadastradas.
Anotaes
Workow
Nesta opo voc poder definir quantas contas de email forem necessrias.
Workow
Para incluir uma nova conta, escolha a opo Incluir. As seguintes informaes so pedidas:
Caixa de Correio Opo Item Descrio Nome da caixa de correio. Esse nome ser usado para criar a pasta, em que sero identificadas as mensagens pertinentes a cada conta. Tempo mximo (em segundos) de espera para conexo com o servidor de e-mails, tanto no envio como recebimento de mensagens. O tempo padro 60 segundos. Nome do remetente da mensagem. Endereo eletrnico. Esta opo habilita o uso da conta para enviar e receber mensagem.
Correio
Nome Remetente Endereo Habilitar Incluir esta conta ao enviar e receber e - mails
Workow
Receber mensagens Opo Item Descrio IP ou Named Pipe do servidor. Ser exibido conforme o tipo utilizado na seo [Mail] no arquivo mp8srv.ini Porta de acesso dependendo do tipo. POP3 = 110; IMAP = 143 (defaults ). Nome da conta. Senha de acesso conta.
Anotaes
10
Workow
Enviar mensagens Opo Item Nome Servidor SMTP Porta Porta de acesso. Valor padro: 25. Nome do usurio para autenticao. Alguns servidores exigem esta informao para envio de e -mails. Senha de acesso para autenticao. Descrio IP ou Named Pipe do servidor SMTP.
Autenticao
Usurio
Senha
Anotaes
Workow
11
Pasta Conexo
Conexo Opo Item LAN Tipo DIAL -Up Descrio Utiliza a conexo j estabelecida pelo usurio em uma intranet. Utiliza o recurso de discagem atravs de uma linha telefnica (no recomendvel). Somente funciona em estaes e servidores Windows. Lista de conexes disponveis do tipo Dial -up, obtidas a partir do cadastro de conexes dial -up criado previamente no Microsoft Windows. Nome da conta (usurio) de acesso ao provedor internet. Senha de acesso conta no provedor. Nmero da linha de acesso ao provedor internet.
*Conexes
Discagem
12
Workow
* Os campos Conta, Senha e Telefone so obtidos automaticamente a partir da seleo da lista de conexes disponveis no campo Conexes: . Esses campos so meramente informativos, j que foram obtidos atravs da conexo criada previamente no Windows. Veja no manual do Microsoft Windows como criar conexes dial-up. * Os campos para autenticao de envio somente devero ser preenchidos caso sejam obrigatrios, conforme a regra de segurana estabelecida pela empresa. Consulte o administrador do servidor de mensagens para obter as informaes necessrias para os preenchimentos dos campos Usurio e Senha .
Anotaes
Workow
13
PARMETROS
O Workow faz uso de uma srie de parmetros que determinam a maneira como ele se comportar perante alguns pontos estratgicos na execuo dos uxos de processo. O acesso janela de parmetros est disponvel na opo do menu do congurador Ambiente > Workow > Parmetros WF.
Pasta "Correio"
Anotaes
14
Workow
Correio Opo Item Parmetro Descrio Caixa de correio a ser utilizada pelo workflow para o envio e recebimento de mensagens.
Caixa de correio
Conta
MV_WFMLBOX
Envia figura do html como anexo da mensagem Envia html no corpo da mensagem
MV_WFIMAGE
MV_WFHTML
Composio da mensagem
Selecionando esta opo, o html passara a fazer parte do corpo da mensagem. O contrrio, ir como anexo. Aps a criao do processo, o workflow enviar a mensagem imediatamente . No html, o Workflow adicionar rotinas semi -prontas em Java script.
Envio automtico
MV_WFSNDAU
MV_WFJAVAS
Pasta "Processo"
Workow
15
Processos Opo Item Parmetro Descrio Define a quantidade de processos de retorno que podero ser executados por vez. Execuo( es) de retorno(s) simultneos de processos . Esteja atento ao nm ero de licenas disponveis e capacidade de processamento da mquina. A quantidade influenciar na performance do servidor. C aso esta opo seja selecionad a, ocorr er erro na execu o de retornos . O Workflow reativar o processo imediatamente para ser executado de novo. Caso contrrio, ser reativado somente quando o Scheduler for reiniciado.
Execuo de retornos
MV_WFMAXJB
Reativar processos automatic amente Tratamento de erros Usar TRANSAAO na execuo de funes de RETORNO e TIMEOUTs
MV_WFREACT
MV_WF TRANS
Habilita o recurso de transao com a finalidade de conservar a integridade dos dados em caso de falha de execuo.
Anotaes
16
Workow
Pasta "Noticao"
Notificao Opo Item Parmetro Descrio Endereo eletrnico do administrador (es) do sistema . Separe entre ; (ponto -evrgula) caso desej e informar mais do que um endereo. Exemplo: A dm 1@prov.com.br; adm2@prov.com.br Quando oc orrer erro ao e xecutar funes Retorno e Timeout .
E -mail do administrador
Endereo
MV_WFADMIN
MV_WFNF001
Notificar por e -mail a lista de endereos dos administradores sobre o erro ocorrido.
Enviar notificao
MV_WFNF002
Notificar por e -mail a lista de endereos dos administradores no momento em que for em reativados os processos que ocorreram erro . Notificar por e -mail a lista de endereos dos administradores sobre as mensagens no reconhecidas pelo Workflow .
Workow
MV_WFNF003
17
Pasta "Messenger"
Messenger Opo Item Parmetro Descrio Arquivo executvel do browser Internet que dever estar no path da estao. IP ou Nome d PIPE do servidor Protheus para uso do servio http. Adic ione : + a porta , caso seja diferente do padro. Diretrio de trabalho do servio http. Verifique o identificador Path= na seo [HTTP] do arquivo mp 8Srv.ini para obter o diretrio de trabalho. O messenger ser executado automaticamente no prximo login de qualquer ambiente Protheus.
MV_WFBROWS
MV_WFBRWSR
etrio HTTP
Caminho
MV_WFDHTTP
Habilitar
MV_WFMESSE
18
Workow
Anotaes
Workow
19
Estrutura de diretrios Pastas Descrio Pasta principal da estrutura de diretrios do Workflow . Esta pasta til para armazenar os html e arquivos comuns entre as empresas. Pasta individual de trabalho para cada empresa. Esta pasta contm a estrutura de diretrios para uso exclusivo de armazenamento de mensagens enviadas e recebidas para cada caixa de correio existente. Contm arquivos de controle criados pelo Workflow para gerar e manipular processos. Contm temporariamente arquivos de agendamento de rotinas utilizados para serem inseridos dentro da tabela SXM (scheduler). Diretrio temporrio de trabalho.
Process
Tasks
Temp
A partir da pasta Mail , sero criad as todas as caixas de correio existentes no cadastro de contas de correio do Workflow . Esta pasta foi criada exclusivamente para uso da caixa de correio do Workflow . Todas as mensagens que no sejam relacionadas aos processos de Wor kflow , sero armaz enadas nesta pasta. Ex: Spam . Esta pasta foi criada exclusivamente para uso da caixa de correio do Workflow . As mensagens recebidas e j identificadas anteriormente sero armazenadas nessa pasta (mensagens recebidas em duplicidade) Esta uma pasta comum entre as caixas de correio existentes. Ela responsvel pelo armazenamento de mensagens recebidas. Esta uma pasta comum entre as caixas de correio existentes, sendo responsvel pelo armazenamento de mensagens que devero ser enviadas. Caso ocorra erro durante o envio das mensagens, elas sero armazenadas na sub-pasta Erro. Esta uma pasta comum entre as caixas de correio existentes, sendo responsvel pelo armazenamento das mensagens enviadas.
Archive
Ignored
I nbox
Outbox
Sent
20
Workow
Anotaes
Workow
21
PROCESSOS WORKFLOW
O cadastro de processos do Workow, apesar de no ser obrigatrio, tem a importncia de amarrar a seqncia de passos de um fluxo de processo para ser visualizado a partir da janela de consulta da rastreabilidade. Exemplo de processos a serem cadastrados: Aprovao de solicitao de compras. Aprovao de pedido de compras. Cotao de preos. Liberao de crdito. Esse cadastro encontra-se no ambiente Congurador. Para cadastrar processos workow: Em Ambiente > Workow > Processos Workow, selecione a opo "Incluir" O sistema apresenta a tela de incluso da rotina.
22
Workow
Cadastro de Processos Agrupamento Campos Cdigo Codificao Nome Informativo Pesquisa genrica Tabel as Pesquisa Padro Nome do processo. Especificaes das tabelas utilizadas para execuo do processo. Cdigo da pesquisa padro utilizada para localizar um determinado processo. Arquivo visio document (fluxo do processo desenhado a partir do Microsoft Visio). Cdigo nico identificador. Descrio
Visio
Arquivo .vsd
Workow
23
Exerccios
A partir do congurador, selecione a opo de menu Ambiente > Workow > Processos Workow e crie um novo processo conforme o contedo dos campos apresentados na tabela abaixo:
Cdigo ATUAPV A Descrio TUALIZACAO DO PRECO DE VENDA W Pesq Padro FSB1 - Produto
Status Workow
O cadastro de Status o complemento do cadastro de processo. Atravs dele, determina-se cada etapa que se realizar em um uxo de processo, sendo muito til para determinar pontos de rastreabilidade dentro de um grande processo. Para cadastrar status workow: Em Ambiente > Workow > Status Workow, selecione a opo "Incluir". O sistema apresenta a tela de incluso da rotina.
24
Workow
Cadastro de Status Agrupamento Campos Cd Processo Codificao Cd Status Descrio Informativo Tempo mdio Cdigo do processo. Cdigo do status de processo. Esse cdigo deve ser um valor numrico acima de 999. A faixa de valores entre 0 e 999 est reservada ao Workflow . Descrio doStatus do processo. Tempo mdio de execuo deste status . Este tempo calculado pelo sistema. Descrio
Workow
25
Exerccios
Ainda no congurador, selecione a opo de menu Ambiente > Workow > Status Workow e cadastre alguns status para o processo mencionado, conforme o contedo dos campos apresentados abaixo:
Cd Processo ATUAPV ATUAPV ATUAPV ATUAPV ATUAPV ATUAPV ATUAPV ATUAPV ATUAPV Cd Status 100100 100200 100300 100400 100500 100600 100700 100800 100900 Descrio INICIANDO GERANDO PROCESSO PARA ENVIO ENVIANDO MENSAGEM AGUARDANDO RETORNO ATUALIZANDO PRECO DE VENDA TIMEOUT REENVIANDO A MENSAGEM FINALIZANDO ERRO DE EXECUO
Anotaes
26
Workow
E-mails substitutos
O cadastro de e-mails substitutos um recurso disponvel no Workow que tem por nalidade delegar para um outro endereo eletrnico todas as mensagens dirigidas a um determinado participante por um perodo de tempo estipulado. Esse recurso importante quando se tratar de eventuais problemas em que um dos participantes do uxo do processo permanea ausente por motivos diversos (frias, afastamento etc.). Para cadastrar e-mails substitutos: Em Ambiente > Workow > E-mails Substitutos, clique na opo "Incluir". O sistema apresenta a janela de incluso e Conrme.
Workow
27
Exerccios
Cadastre um E-mail Substituto, seguindo as informaes abaixo: Do e-mail: aprovador1@microsiga.com.br Para o e-mail: aprovador2@microsiga.com.br Data Inicial: 01/10/2007 At: 31/10/2007
Anotaes
28
Workow
SCHEDULER
O Scheduler (agenda) uma ferramenta responsvel pela execuo das funes de usurios ou funes padronizadas do sistema (chamaremos de Jobs), em determinados horrios especficos entre um intervalo de tempo, sem que haja a interveno do usurio. Para que essa ferramenta esteja habilitada a realizar execues dos jobs, necessrio que ela esteja ativada no servidor do Protheus.
Ativao
Para que os jobs sejam executados nos horrios pr-determinados, importante que aps a carga do servidor do Protheus, o Scheduler seja executado. Dessa forma, ele poder verificar a cada minuto se h jobs a serem executados. Essa ativao ocorre a partir do recurso disponvel na seo[OnStart]contido no arquivo TOTVSAppServer. INI. Exemplo a ser adicionado ao arquivo TOTVSAppServer.INI: [ONSTART] Jobs=Scheduler [Scheduler] Main=WFONSTART Environment=EnvTOP
A funo WFOnStart responsvel pela carga inicial do Scheduler e requer informaes contidas no arquivo auxiliar chamado Scheduler.wf , localizado no diretrio system do Protheus. O contedo desse arquivo servir para obter a lista de parmetros necessria para executar o Scheduler. Caso o arquivo no exista, ser criado automaticamente com o seguinte contedo padro: 99,01,ENVTOP,T,MOD. 1. 99 cdigo da empresa. 2. 01 cdigo da lial. 3. ENVTOP ambiente no qual ser executado o Scheduler. 4. T Valor lgico (True ou False). True, Indicar que realizar reativao dos processos nas tabelas do Workow. 5. MOD Nome do ambiente do qual o Workow obter licenas.
Anotaes
Workow
29
O Protheus, aceita os parmetros passados atravs da prpria seo sem a necessidade de utilizar o arquivo auxiliar Scheduler.wf , apenas acrescentando as seguintes linhas: Exemplo: [Scheduler] Main=WFOnStart Environment=ENVTOP nParams=5 Parm1=99 Parm2=01 Parm3=ENVTOP Parm4=T Parm5=TMK
Agendando
Atravs do congurador, possvel acessar a janela de cadastro de jobs a serem executados pelo Scheduler. Para configurar a rotina de Schedule: Selecione as opes Ambiente > Schedule > Schedule Selecione: Processos Especiais .
30
Workow
Anotaes
Workow
31
Scheduler Processos Especiais Agrupamento Campos Cdigo C Identificao Nome Descrio Diria Descrio digo nico identificador do job. Nome simplificado. Descrio do job. Executa diariamente entre os horrios inicial e final a cada intervalo de tempo. Executa nos dias selecionados da semana (domingo, segunda, tera, quarta, quinta, sexta e sbado), entre os horrios inicial e final a cada intervalo de tempo. Executa nos meses selecionados do ano (janeiro a dezembro), entre os horrios inicial e final a cada intervalo de tempo. Data inicial que passar a vigorar a execuo. Horrio inicial de execuo. Dia limite de execuo. Horrio limite de execuo. Intervalo de tempo a cada execuo entre o horrio inicial e final. Funo de us urio ou funo interna do Protheus a ser executado. Os parmetros passados para esta funo devero ser sempre tratados como um array. Ambiente em que o job ser executado.
Freqncia
Semanal
Mensal
Data Incio Perodo Inicial Hora Incio Data final Perodo Final Hora final Perodo Intervalo
Job
Ao
Environment
Ambiente
Anotaes
32
Workow
Anotaes
Workow
33
34
Workow
Post message
O recurso Post message , nas pginas html a partir dos navegadores internet, permite que as respostas sejam enviadas ao Workflow via correio eletrnico (e-mail) ou servio http. Para que isso seja possvel necessrio incluir o tag <form action=mailto:%WFMailTo% method=post> nos formulrios html.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0"> <title>Aprovao de Pedido de Compra</title> </head> <body bgcolor="#FFFFFF"> <form action="mailto:%WFMailTo%" method="POST" name ="FormPedComp"> ... </form> </body> </html>
Workow
35
Macro substituio
Esta rotina consiste na substituio de todas as palavras encontradas nos formulrios html que estiverem entre % ou ! . Essa palavra-chave ter seu contedo modificado por outra informao durante a execuo do processo. Observe um formulrio modelo de aprovao de pedido de compras com suas respectivas palavraschaves (macros):
%macro% - Toda palavra encontrada entre este sinal (%), alm da substituio do contedo por outra informao, tambm haver a necessidade de incluir no formulrio (cpia do modelo) as linhas de tags <input type=hidden...> para cada palavra-chave (macro) encontrada. Exemplo: <input type=hidden name="EMISSAO" value="01/04/05"> <input type=hidden name="FORNECEDOR" value="100100"> <input type=hidden name="LB_NOME" value="RM SUPRIMENTOS INFO LTDA"> <input type=hidden name="LB_COND" value="30D"> <input type=hidden name="PEDIDO" value="000003"> importante saber que o uso desse smbolo necessrio somente para campos editveis que esperam modicaes de seus contedos e que sero tratados no retorno das mensagens. Use este smbolo nos controles do tipo TextField, TextArea, Radio Button, Combo Box e Check Box.
36
Workow
TextField: <input type="text" size="13" name="T7" value=%quantidade%> TextArea: <textarea name="S1" rows="4" cols="74">%observacao%</textarea> Radio Button: <input type="radio" checked name="%aprovacao%" value="Sim">Sim. <br> <input type="radio" name="%aprovacao%" value="Nao">No. Combo Box: <select name="list" size="1"><option selected>%itens%</option> Check Box: <input type="checkbox" name="checkbox" value="%item1%">Item 1 !macro! Toda palavra encontrada entre este sinal (!) ter somente seu contedo substitudo. No ser includo <input hidden...> no html para essas palavras-chaves. Utilize-o em texto fixo. Exemplo: ttulos, mensagens, cabealhos e rodaps. </select>
Tabelas
As tabelas so identificadas pelo Workflow atravs do nome que precede o ponto (.) nas palavras-chaves. Contudo, essas palavras-chaves devem realmente pertencer a uma tabela (tag <table>...</table>) do formulrio html. Veja em itens do html da aprovao do pedido de compras que h algumas palavras-chaves com o nome precedido da palavra produto. . Neste caso, o Workow ir referir-se a essa tabela pelo nome de produto (sem o ponto). Poder conter vrias tabelas em um html que o Workflow saber identificar atravs do nome.
Workow
37
Exerccios
Crie um html modelo, chamado ATUAPV.HTM, no diretrio \WORKFLOW (abaixo do rootpath) que ser utilizado no e-mail para que o destinatrio altere o valor do preo de venda do produto e envie a resposta atravs do boto Enviar . Cdigo fonte: <html><head><title>Atualizao preco de venda</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body><form action="mailto:%WFMailTo%" method="post" name="form1"> <table width="100%" height="130" border="1" bordercolor="#66CCFF" > <tr bordercolor="#DFEFFF"> <td height="71" colspan="4" bgcolor="#DFEFFF"> <p align="center"><strong><font color="#3333FF" size="4" face="Verdana, Arial, Helvetica, sans-serif">Atualização do Preço de Venda</font></strong></p> </td></tr><tr bordercolor="#66CCFF"> <td height="20" bgcolor="#DFEFFF"> <font size="1">Código:</font></td> <td bgcolor="#DFEFFF"><font size="1">Descrição:</font></td> <td bgcolor="#DFEFFF"><font size="1">Preço de venda R$:</font> </td> </tr> <tr bordercolor="#66CCFF"> <td width="17%" height="28"><strong>!B1_COD!</strong></td> <td width="53%">!B1_DESC!</td> <td width="30%"><em><strong> <input name="pvenda" type="math" id="pvenda" value="%B1_PRV1%"></strong></em></ td> </tr> </table><p> <input type="submit" name="Submit" value="Enviar"></p> </form> </body> </html>
Anotaes
38
Workow
Tela Pronta:
Anotaes
Workow
39
Classe TWFProcess
A classe TWFProcess responsvel pela criao e gerenciamento do processo. Como toda classe, a TWFProcess dividida em mtodos e propriedades.Veremos alguns dos principais mtodos e propriedades que iremos usar para criao de um processo.
Mtodos
:New(<cCodProc>,<cDescr>,<cProcID>) O mtodo New() responsvel pela criao e inicializao da classe WFProcess. Parmetros: 1. cCodProc: este parmetro recebe o cdigo do processo usado em Cadastro de Processos . 2. cDescr: este parmetro recebe a descrio do processo que est sendo criado no momento. Se no for informado, ser usada a descrio contida no cadastro de processo, localizada atravs do parmetro anterior cCodProc. 3. cProcID: este parmetro recebe o ID do processo criado anteriormente. Normalmente, utilizado para reconstruir um processo anterior, dando seqncia a ele.
40
Workow
Exemplo: oP := TWFProcess():New("PEDCOM","Aprovacao do Pedido de Compras") :NewTask(<cDescr>,<cArqHtml>,<lCopiar>) Este mtodo responsvel por criar a seqncia de tarefas a serem executadas e identificar qual html ser utilizado pelo processo. Parmetros: 1. cDescr: este parmetro recebe a descrio da tarefa. 2. cArqHtml: recebe o caminho e o nome do arquivo html que far uso no processo. 3. Copiar: este parmetro, do tipo lgico, responsvel por copiar todos os campos utilizados em uma tarefa anterior, ou seja, para a tarefa que est sendo criada no momento. Exemplo: oP:NewTask("Criando Aprovacao", "\Workflow\WFW120p.htm" ) :AttachFile(<cArquivo>) Este mtodo responsvel pela incluso de arquivos anexos mensagem. Esses arquivos devero estar abaixo do root path do Protheus. Parmetros: cArquivo: caminho e nome do arquivo a ser anexo mensagem. Exemplo: oP:AttachFile(\Workflow\teste.txt) :Start(<cHtmlCopiarPara>) -> cProcessKey Este mtodo responsvel por construir todo o processo, gravar os registros nas tabelas do Workow e enviar a mensagem para os destinatrios. O valor de retorno uma chave composta pela codificao ProcessID + TaskID e nmeros aleatrios, no total de 17 algarismos em hexadecimal. Parmetros: 1. cHtmlCopiarPara: Caminho em que o Workflow dever realizar uma cpia do html final. Exemplo: cID := oP:Start(\Workflow\copia) if file( \Workflow\copia\ + cID) conout(Arquivo copiado com sucesso.) endif :Finish()
Workow
41
Este mtodo responsvel por nalizar o processo. Aps a nalizao, ele no estar mais disponvel para execues do tipo retorno e timeout. Exemplo: oP:Finish() :Track(<cCodStatus>,<cDescr>,<cUsuario>) Este mtodo responsvel por incluir as descries dos passos seguidos pelo uxo do processo e apresent-los na consulta da rastreabilidade. Parmetros: 1. cCodStatus: cdigo do status do processo. 2. cDescr: descrio do passo ocorrido. 3. cUsuario: nome do usurio a que se destinou a tarefa. Exemplo: oP:Track(100200 , Enviando o pedido para aprovacao , AprovadorA) Propriedades :cTo, :cCC e :cBCC Estas propriedades denem o endereo dos destinatrios. Poder ser informado mais que um destinatrio ao mesmo tempo. Basta incluir um ponto-e-vrgula ; entre eles. Se for informada uma palavra qualquer que no seja um endereo de e-mail vlido, o Workow ir considerar que se trata de um diretrio em que o html gerado dever ser gravado. Pode-se mesclar os tipos. Exemplo: oP:cTo := aluno1@microsiga.com.br;aluno2@microsiga.com.br oP:cCC := aluno3@microsiga.com.br;Aluno oP:cBCC := aluno4@microsiga.com.br :cSubject Esta propriedade dene o assunto da mensagem. Exemplo: oP:cSubject := Aprovado do pedido de compras no. 1028 :cBody Esta propriedade armazenar um texto que permanecer no corpo da mensagem. Caso seja utilizado, o html ir como anexo da mensagem.
42
Workow
Exemplo: oP:cBody := Testando... :bReturn Esta propriedade contm o nome da funo que ser executada no momento em que o Workow receber a mensagem de resposta de um dos destinatrios via e-mail ou servio http. Exemplo: oP:bReturn := U_Retorno :bTimeOut Esta propriedade recebe um array de timeouts contendo nomes das funes e tempo de espera. Caso o tempo seja alcanado, sero executadas as funes mencionadas no 1 item do array. Podero ser especicados mais do que um array de timeouts. { { <cFuncao>, <nDias>, <nHoras>, <nMinutos> }, { ... } } Exemplo: oP:bTimeOut := { { TimeOut1 , 0, 5, 30 } } ou oP:bTimeOut := { { TimeOut1 , 0, 5, 30 }, { TimeOut2 , 1, 10, 0 } } :fProcessID Esta propriedade fornece o nmero ID do processo. Exemplo: cProcID := oP:fProcessID :fTaskID Esta propriedade fornece o nmero ID da tarefa criada para um determinado processo, atravs do mtodo :NewTask(). Exemplo: oP:NewTask( "100100", "\Workflow\WFW120p.htm" ) cTaskID := oP:fTaskID :oHTML Esta propriedade responsvel pelo tratamento das palavras-chaves no html mencionado no mtodo :NewTask(). Esse objeto uma referncia da classe TWFHtml() e disponibiliza dois dos mtodos mais importantes :RetByName() e ValByName(). :oHTML:RetByName( <cNome da macro> )
Todos os direitos reservados. Workow
43
Esta propriedade tem como objetivo obter o contedo da macro quando as respostas retornarem para o Workow. O mtodo somente dever ser usado na funo de retorno. Exemplo: cNome := oP:oHtml:RetByName( Nome ) Em uma tabela: aCodigo := oP:oHtml:RetByName( produto.Codigo ) :oHTML:ValByName(<cMacro>,<uConteudo>) Este mtodo tem como objetivo atribuir ou obter um valor a uma macro existente no html. Dever ser usado somente no momento em que estiver assinalando valores ao html ou na funo de timeouts, em que o uso necessrio por motivo de no haver recebido resposta. Parmetros: cMacro: nome da macro (palavra-chave) encontrada no html e identificada entre os smbolos % e ! . uConteudo: valor a ser atribudo macro. Exemplo: Assinalando um valor: oP:oHtml:ValByName( Nome , Aluno1 ) Usando na funo de timeout: cNome := oP:oHtml:ValByName( Nome ) Atribuindo um valor a uma tabela: AAdd( oP:oHtml:ValByName( produto.codigo ), SB1->SB1_COD )
Anotaes
44
Workow
Exerccios
Criar processo de Workow a partir do ponto de entrada No TotvsDevStudio, geraremos um arquivo de programa chamado ATUAPV.PRW onde ser criada a funo representativa do ponto de entrada MT010INC, em que descreveremos o uxo do processo com o uso das classes e funes do Workow. Essa funo (ponto de entrada) ser executada a partir do momento em que for pressionado o boto OK , na conrmao da incluso dos dados do produto na tabela SB1. ATUAPV.PRW #INCLUDE PROTHEUS.CH /* // MT010INC - Corresponde ao ponto de entrada do sistema que somente // ser executado na incluso de novos produtos. */ User Function MT010INC(nOpcao,oProcess) // Inicialmente, os parmetros nOpcao e oProcess estaro com valores iguais a NIL. // se nOpcao for NIL, ter o seu valor inicial igual a 0 (zero). default nOpcao := 0 do case case nOpcao == 0 U_APVInicio() case nOpcao == 1 U_APVRetorno(oProcess) case nOpcao == 2 U_APVTimeOut(oProcess) endcase Return
/* // APVInicio - Esta funo responsvel por iniciar a criao do processo e por // enviar a mensagem para o destinatrio. */ User Function APVInicio(oProcess) Local nDias := 0, nHoras := 0, nMinutos := 10 Local cCodProcesso, cCodStatus, cHtmlModelo Local cUsuarioProtheus, cCodProduto, cTexto, cAssunto cCodProduto := SB1->B1_COD // Cdigo extrado do cadastro de processos. cCodProcesso := "ATUAPV"
Workow
45
// Arquivo html template utilizado para montagem da aprovao cHtmlModelo := "\Workflow\atuapv.htm" // Assunto da mensagem cAssunto := "Atualizao do preo de venda" // Registre o nome do usurio corrente que est criando o processo: cUsuarioProtheus:= SubStr(cUsuario,7,15) // Inicialize a classe TWFProcess e assinale a varivel objeto oProcess: oProcess := TWFProcess():New(cCodProcesso, cAssunto) // Crie uma tarefa. oProcess:NewTask(cTitulo, cHtmlModelo) // Crie um texto que identique as etapas do processo que foi realizado // para futuras consultas na janela de rastreabilidade. cTexto := "Iniciando a solicitao de " + cAssunto + " do produto: " + cCodProduto // Informe o cdigo de status correspondente a essa etapa. cCodStatus := "100100" // Cdigo do cadastro de status de processo. // Repasse as informaes para o mtodo responsvel pela rastreabilidade. oProcess:Track(cCodStatus, cTexto, cUsuarioProtheus) // Rastreabilidade // Adicione informaces a serem includas na rastreabilidade. cTexto := "Gerando solicitao para envio..." cCodStatus := "100200" oProcess:Track(cCodStatus, cTexto, cUsuarioProtheus) // Assinale novos valores s macros existentes no html: oProcess:oHtml:ValByName("B1_COD", cCodProduto) oProcess:oHtml:ValByName("B1_DESC", SB1->B1_DESC) oProcess:oHtml:ValByName("B1_PRV1", SB1->B1_PRV1) // Repasse o texto do assunto criado para a propriedade especca do processo. oProcess:cSubject := cAssunto // Informe o endereo eletrnico do destinatrio. oProcess:cTo := "bi@microsiga.com.br" // Utilize a funcao WFCodUser para obter o cdigo do usurio Protheus. oProcess:UserSiga := WFCodUser("BI") // Antes de assinalar o ID do processo no campo, vericado se realmente o // campo existe na tabela SB1. If SB1->(FieldPos("B1_WFID")) > 0 If RecLock("SB1",.f.)
46
Workow
EndIf EndIf
// Informe o nome da funo de retorno a ser executada quando a mensagem de // respostas retornar ao Workow: oProcess:bReturn := "U_MT010INC(1)" // Informe o nome da funo do tipo timeout que ser executada se houver um timeout // ocorrido para esse processo. Neste exemplo, ela ser executada cinco minutos aps o envio // do e-mail para o destinatrio. Caso queira-se aumentar ou diminuir o tempo, altere // os valores das variveis: nDias, nHoras e nMinutos. oProcess:bTimeOut := {"U_MT010INC(2)", nDias, nHoras, nMinutos} // Adicione as informaces a serem includas na rastreabilidade cTexto := "Enviando solicitao..." cCodStatus := "100300" oProcess:Track(cCodStatus, cTexto , cUsuarioProtheus) // Aps ter repassado todas as informaces necessrias para o Workow, // execute o mtodo Start() para gerar todo o processo e enviar a mensagem // ao destinatrio. oProcess:Start() // Adicione as informaces a serem includas na rastreabilidade cTexto := "Aguarde retorno..." cCodStatus := "100400" oProcess:Track(cCodStatus, cTexto , cUsuarioProtheus) // Rastreabilidade Return /* // APVRetorno - Esta funo executada no retorno da mensagem enviada // pelo destinatrio. O Workow recria o processo em que // parou anteriormente na funo APVInicio e repassa a // varivel objeto oProcess por parmetro. */ User Function APVRetorno(oProcess) Local nPrecoVenda Local cCodProduto, cCodStatus, cTexto // Obtenha o cdigo do produto a partir do html cCodProduto := oProcess:oHtml:RetByName("B1_COD") // Obtenha o novo preo de venda informado pelo destinatrio: nPrecoVenda := Val(oProcess:oHtml:RetByName("B1_PRV1")) dbSelectArea("SB1") SB1->(dbSetOrder(1))
Workow
47
// Localize o produto cadastrado na tabela SB1 If SB1->(dbSeek(xFilial("SB1") + cCodProduto)) // Adicione as informaces a serem includas na rastreabilidade. cTexto := "Atualizando o preo de venda..." cCodStatus := "100500" // Atravs do atributo :cRetFrom da classe twfprocess, possvel obter o endereo // eletrnico de quem respondeu a mensagem. Obtenha-o para adicion-lo rastreabilidade. oProcess:Track(cCodStatus, cTexto, oProcess:cRetFrom) // Atualize o preo de venda: If RecLock( "SB1", .f. ) SB1->B1_PRV1 := nPrecoVenda MsUnLock() EndIf Else // Adicione as informaces a serem includas na rastreabilidade. cTexto := "No foi possvel encontrar o produto: " + cCodProduto cCodStatus := "100900" oProcess:Track(cCodStatus, cTexto, oProcess:cRetFrom) EndIf // Adicione as informaces a serem includas na rastreabilidade. cTexto := "Finalizando o processo..." cCodStatus := "100800" // Cdigo do cadastro de status de processo oProcess:Track(cCodStatus, cTexto, oProcess:cRetFrom) // Rastreabilidade Return /* // APTimeOut - Esta funo ser executada a partir do Scheduler no tempo // estipulado pela propriedade :bTimeout da classe TWFProcess. // Caso o processo tenha sido respondido em tempo hbil, essa // execuo ser descartada automaticamente. */ User Function APTimeOut(oProcess) Local nDias := 0, nHoras := 0, nMinutos := 10 Local cCodStatus, cHtmlModelo Local cCodProduto, cTexto, cTitulo cHtmlModelo := "\Workflow\atuapv.htm" cTitulo := "Atualizao do preo de venda" // Adicione as informaces a serem includas na rastreabilidade. cTexto := "Executando TIMEOUT..." cCodStatus := "100600" // A funo APTimeOut executada, automaticamente, pelo sistema. // Devido no haver usurio associado execuo, ser omitido o parmetro // correspondente. oProcess:Track(cCodStatus, cTexto) // Rastreabilidade
48
Workow
// Na execuo da funo de timeout, no se caracteriza retorno de mensagem. // Neste caso, deve usar o mtodo :ValByName() no lugar do mtodo :RetByName() // para obter os valores contidos no html. cCodProduto := oProcess:oHtml:ValByName("B1_COD") // Finalize a tarefa anterior para no car pendente. oProcess:Finish() dbSelectArea("SB1") SB1->(dbSetOrder(1)) // Localize o produto na tabela SB1: If SB1->(dbSeek(xFilial("SB1") + cCodProduto)) // Crie uma nova tarefa, aproveitando o contedo do html preenchido anteriormente // com o uso do terceiro parmetro com o valor lgico igual a .T. (verdadeiro) oProcess:NewTask(cTitulo, cHtmlModelo, .T.) // Antes de assinalar o ID do processo no campo, verique se realmente o campo // existe na tabela SB1: If SB1->(FieldPos("B1_WFID")) > 0 If RecLock("SB1",.f.) SB1->B1_WFID := oProcess:fProcessID MsUnLock() EndIf EndIf // Acrescente a palavra "(REENVIO)" no incio do assunto da mensagem para // reforar que houve um timeout executado. If (Left(oProcess:cSubject,9) != "(REENVIO)") oProcess:cSubject := "(REENVIO)" + oProcess:cSubject EndIf oProcess:cTo := "bi@microsiga.com.br" // Utilize a funo WFCodUser para obter o cdigo do usurio Protheus. oProcess:UserSiga := WFCodUser("BI") // Redena a funo de retorno a ser executada. oProcess:bReturn := "U_MT010INC(1)" // Redena a funo de timeout a ser executada. oProcess:bTimeOut := {"U_MT010INC(2)", nDias, nHoras, nMinutos} // Adicione as informes a serem includas na rastreabilidade cTexto := "Reenviando a solicitao..." cCodStatus := "100700" oProcess:Track(cCodStatus, cTexto)
Workow
49
// Inicie o processo oProcess:Start() Else // Adicione as informaces a serem includas na rastreabilidade. cTexto := "No foi possvel encontrar o produto: " + cCodProduto cCodStatus := "100900" // Cdigo do cadastro de status de processo oProcess:Track(cCodStatus, cTexto) // Rastreabilidade EndIf Return Exerccio 2 Compilar e executar o ambiente COMPRAS. Aps compilar o programa ATUAPV.PRW, execute o ambiente de compras, selecione a opo de menu Atualizaes | Cadastros | Produtos e inclua um novo produto. Ao conrmar a gravao pressionando o boto Ok , ser enviado um e-mail ao destinatrio contendo, no corpo o html, os dados do produto e o campo do valor do preo de venda a ser alterado. Ao receber o e-mail no cliente de e-mail, coloque o valor no campo Preo de Venda R$ e clique em Enviar. Garanta que o Scheduler esteja ativo e a funo de recebimento de mensagens do Workflow esteja agendada (faa o agendamento de 1 em 1 minuto para que a resposta seja quase prontamente processada). Passados alguns segundos, consulte o cadastro do produto recm-includo e veja que o preo de venda foi atualizado com o valor informado no e-mail. Exerccio 3 Consultas (Rastreabilidade de processo) A qualquer momento, podero ser realizadas consultas na janela de rastreabilidade para saber em que situao est um determinado processo. A partir da opo de menu Miscelnea | Workow | Rastreabilidade no prprio ambiente de compras (ou qualquer outro), possvel realizar tais consultas. No campo Pesq Padro: , selecione a pesquisa padro WFSB1 e, no campo Processo: , pressione F3 para realizar a pesquisa da tabela SB1 (produtos). Ao selecionar o produto, voc ter algumas informaes inerentes ao processo gerado para o produto escolhido. Observe que todos os textos que inclumos atravs do mtodo oprocess:track(...) sero vistos nesta janela. Exerccio 4 Consultas (Processo por usurios) A qualquer momento, o usurio do sistema poder realizar consultas sobre pendncias geradas pelo Workow, simplesmente selecionando a opo de menu Miscelnea | Workow | Processos Usuarios disponvel nos ambientes.
50
Workow
Se o usurio atual for administrador, ele poder ver as pendncias geradas para qualquer outro usurio cadastrado no sistema. Caso contrrio, somente visualizar as pendncias relacionadas a ele prprio.
Anotaes
Workow
51
Glossrio
52
Workow
Autenticao SMTP: validao de usurio e senha no servidor de e-mail para envio de mensagens. Browser internet: programa que permite navegar nas pginas disponveis na internet. O Internet Explorer um exemplo de browser. Caixa de correio: nome dado a um diretrio em que sero armazenadas todas as mensagens recebidas, a enviar, enviadas etc. Em agrupamento de pastas nomeadas inbox, outbox, sent etc. pertencentes a uma determinada conta de e-mail. Cliente de e-mail: sofware de controle de e-mails pelo usurio nal. Exemplos: OutLook Express e OutLook XP. Conta de e-mail: endereo de e-mail existente em um servidor de e-mail. Cookies: arquivos gravados na estao do usurio, pelos diversos sites, para leitura de informaes daquela estao. Html (Hyper Text Mark-up Language): um arquivo no formato texto que contm diversos tipos de comando que controlam a apresentao visual no browser internet. Java Script: linguagem contida nos HTMLs, permitindo validaes e aes diversas. Messenger do Protheus: recurso disponvel no Protheus que serve para avisar aos usurios de algum processo ou mensagem de Workow que esteja disponvel no aguardo de uma ao a ser tomada. Processo: conjunto de tarefas a serem executadas, baseadas em uma regra de negcio que determina um ou mais caminhos a serem seguidos denominados fluxo. Protocolo POP3 ou IMAP: recurso disponvel pelos servidores de e-mails para permitir o acesso caixa de correio (leitura). Protocolo SMTP: recurso disponvel pelos servidores de e-mails para o envio de mensagens atravs de uma conta de e-mail. Rastreabilidade: recurso necessrio para localizar e identicar as propriedades (status, descrio, data, participante etc.) de um determinado processo de Workow. Retorno: conjunto de respostas obtidas por e-mail ou pela postagem de um html via browser internet, atravs do servio http que sero usados para realizar atualizaes na base de dados do Protheus. Servio http: servio utilizado pelos servidores internet que disponibiliza aos usurios o acesso internet.
Servidor de e-mail: software de controle de envios e recebimento de e-mails. Exemplos: Exchange e Domino. Timeout: tempo fora do prazo limite (tempo excedido). Procedimento a ser executado aps o tempo limite esperado por uma ao a ser tomada por um participante na trajetria de um uxo de processo. Workow: automao do uxo de processo. Nmero de registro: P10200907
Workow
53