Sei sulla pagina 1di 120

WORKFLOW

Workflow...........................................................................................................................3
Principais benefcios:.....................................................................................................3
Fluxo Operacional.............................................................................................................5
Configurao.....................................................................................................................6
Requisitos......................................................................................................................6
Correio Eletrnico.........................................................................................................7
Protocolo........................................................................................................................7
Contas de e-mail............................................................................................................8
Cadastrar a conta de e-mail do Workflow.......................................................................10
Pasta Caixa de Correio................................................................................................11
Pasta Receber Mensagens............................................................................................12
Parmetros.......................................................................................................................16
Estrutura de diretrio de mensagens................................................................................22
Processos Workflow........................................................................................................25
Status Workflow..............................................................................................................29
E-mails substitutos...........................................................................................................32
Scheduler.........................................................................................................................34
Ativao.......................................................................................................................34
Agendando...................................................................................................................35
Agendar recebimento de mensagens do Workflow.....................................................38
Agendar envio de mensagens do Workflow................................................................38
Requisitos para desenvolvimento....................................................................................40
Html MODELO WORKFLOW...................................................................................41
Post message................................................................................................................41
Macro substituio.......................................................................................................42
Tabelas.........................................................................................................................44
Criando um processo em Advpl - funes.......................................................................47
Classe TWFProcess.....................................................................................................47
Mtodos.......................................................................................................................48
Propriedades................................................................................................................50
Glossrio..........................................................................................................................61

2 WorkFlow

WorkFlow - 3

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 Workflow nos
processos crticos de uma organizao, estes tornam-se mais geis e
seguros, evitando o travamento operacional do complexo fluxo
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 fluxos 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.

4 WorkFlow

Qualquer processo existente pode ser automatizado atravs


da construo de um Workflow.

WorkFlow - 5

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.

6 WorkFlow

Fluxo Operacional

WorkFlow - 7

Configurao
Requisitos

Software: o Workflow, que uma ferramenta embutida dentro do


Server do Protheus, no necessita de instalao prpria, apenas
configuraes. Toda configurao se d atravs do ambiente
Configurador do Protheus.
Servidor de e-mail (quando necessrio para os processos): o
Workflow 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 Workflow
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 especfica. Pea
para o seu provedor criar esta nova conta. Sugerimos com o nome da
conta Workflow.
Exemplo: workflow@suaempresa.com.br
Clientes de e-mail: para recebimento dos e-mails gerados a partir
do Workflow, so utilizados os clientes de e-mails que devem ser
aptos a responder os e-mails gerados pelo Workflow, gerando
arquivos de retorno chamados octetos.
Para saber se o cliente de e-mail compatvel com o Workflow, 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 Workflow: OutLook
Express 4.01, OutLook Express 5.5x, OutLook Express 6.0 e OutLook
8 WorkFlow

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 Workflow 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
Workflow deve possuir memria suficiente 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.

Correio Eletrnico

Protocolo

O Workflow 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:

WorkFlow - 9

POP3

IMAP

Exemplo:
[Mail]
Protocol=IMAP
Folder=inbox

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 configurador:

10 WorkFlow

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 especificado 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.

WorkFlow - 11

O protocolo MAPI no suportado pelo Protheus.

12 WorkFlow

Cadastrar a conta de e-mail do Workflow


A principal caracterstica do Workflow so as mensagens que so
enviadas e recebidas via email. Para que isto funcione necessrio
configurar as contas de email e tambm alguns parmetros do
Workflow.
imprescindvel a criao de pelo menos uma conta de email
exclusiva para o Workflow.
Para iniciarmos a configurao, precisamos inicialmente definir as
contas que podero ser usadas. Podemos cadastrar vrias contas de
email que sero utilizadas com os processos de Workflow. Por
exemplo, podemos ter uma conta de email para os processos do
Workflow para uma empresa/filial e outra conta para outra
empresa/filial.
Para definir as contas de email, acesso no ambiente Configurador:
Menu Ambiente | Workflow | Contas de Email.

WorkFlow - 13

Nesta opo voc poder definir quantas contas de email forem


necessrias.
Para incluir uma nova conta, escolha a opo Incluir. As seguintes
informaes so pedidas:

14 WorkFlow

Pasta Caixa de Correio

Caixa de Correio
Opo

Item

Descrio

Correio

Nome da caixa de correio.


Esse nome ser usado para
criar a pasta, em que sero
identificadas as mensagens
pertinentes a cada conta.

Tempo Espera

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.

Correio

Remetente

Nome
Endereo

Nome
do
mensagem.

remetente

Endereo eletrnico.

WorkFlow - 15

da

Habilitar

Incluir esta conta


ao enviar e receber
e-mails

Esta opo habilita o uso da


conta para enviar e receber
mensagem.

Pasta Receber Mensagens

Receber mensagens
Opo

Item

Descrio

Nome

IP ou Named Pipe do servidor.


Ser exibido conforme o tipo
utilizado na seo [Mail] no
arquivo mp8srv.ini

Servidor (POP3
ou IMAP)
Porta

Login
16 WorkFlow

Conta

Porta de acesso dependendo


do tipo.
POP3 = 110; IMAP = 143
(defaults).
Nome da conta.

Senha

Senha de acesso conta.

WorkFlow - 17

Pasta Enviar Mensagens

Enviar mensagens
Opo

Servidor
SMTP

Autenticao

Item

Descrio

Nome

IP ou Named Pipe do servidor


SMTP.

Porta

Porta de acesso. Valor padro:


25.

Usurio

Nome
do
usurio
para
autenticao.
Alguns
servidores
exigem
esta
informao para envio de emails.

Senha

18 WorkFlow

Senha
de
autenticao.

acesso

para

Pasta Conexo

Conexo
Opo

Item

Descrio

LAN

Utiliza
a
conexo
j
estabelecida pelo usurio em
uma intranet.

DIAL-Up

Utiliza o recurso de discagem


atravs
de
uma
linha
telefnica (no recomendvel).
Somente funciona em estaes
e servidores Windows.

Tipo

Discagem

*Conexes

Lista de conexes disponveis


do tipo Dial-up, obtidas a
partir do cadastro de conexes
dial-up criado previamente no

WorkFlow - 19

Microsoft Windows.
Conta

Nome da conta (usurio) de


acesso ao provedor internet.

Senha

Senha de acesso conta no


provedor.

Telefone

Nmero da linha de acesso ao


provedor internet.

* 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.

20 WorkFlow

WorkFlow - 21

Parmetros
O Workflow faz uso de uma srie de parmetros que
determinam a maneira como ele se comportar perante alguns
pontos estratgicos na execuo dos fluxos de processo. O
acesso janela de parmetros est disponvel na opo do
menu do configurador Ambiente | Workflow | Parmetros WF

22 WorkFlow

Pasta "Correio"

Correio
Opo

Caixa de
correio

Composio
da mensagem

Item

Parmetro

Descrio

Conta

MV_WFMLBO
X

Caixa de correio a ser


utilizada pelo workflow
para
o
envio
e
recebimento
de
mensagens.

Envia figura
do html como
anexo da
mensagem

MV_WFIMAG
E

Recurso
ainda
disponvel.

MV_WFHTML

Selecionando
esta
opo, o html passara a
fazer parte do corpo da
mensagem. O contrrio,

Envia html no
corpo da
mensagem

WorkFlow - 23

no

ir como anexo.
Envio
automtico

Usa Java
Script

MV_WFSNDA
U

Aps
a
criao
do
processo, o workflow
enviar a mensagem
imediatamente.

MV_WFJAVAS

No html, o Workflow
adicionar rotinas semiprontas em Java script.

Pasta "Processo"

Processos
Opo

Item

Parmetro

Descrio

Execuo de
retornos

Execuo(es)
de retorno(s)
simultneos
de processos.

MV_WFMAXJ
B

Define a quantidade de
processos de retorno
que
podero
ser
executados por vez.

24 WorkFlow

Esteja atento
nmero
licenas
disponveis e
capacidade
processamento
mquina.
quantidade
influenciar
performance
servidor.

WorkFlow - 25

ao
de

de
da
A
na
do

Reativar
processos
automaticame
nte

MV_WFREAC
T

Caso esta opo seja


selecionada,
ocorrer
erro na execuo de
retornos. O Workflow
reativar o processo
imediatamente para ser
executado de novo. Caso
contrrio, ser reativado
somente
quando
o
Scheduler for reiniciado.

MV_WFTRAN
S

Habilita o recurso de
transao
com
a
finalidade de conservar
a integridade dos dados
em caso de falha de
execuo.

Tratamento
de erros
Usar
TRANSAAO
na execuo
de funes de
RETORNO e
TIMEOUTs

Pasta "Notificao"

Notificao
26 WorkFlow

Opo

E-mail do
administrad
or

Item

Parmetro

MV_WFADMI
N

Endereo

Descrio
Endereo eletrnico do
administrador (es) do
sistema. Separe entre
;
(ponto-e-vrgula)
caso deseje informar
mais
do
que
um
endereo. Exemplo:
Adm1@prov.com.br;
adm2@prov.com.br

Enviar
notificao

Quando
ocorrer erro
ao executar
funes
Retorno e
Timeout.

Notificar por e-mail a


lista de endereos dos
MV_WFNF001
administradores sobre o
erro ocorrido.

Ao reativar
processos
pendentes.

Notificar por e-mail a


lista de endereos dos
administradores
no
MV_WFNF002
momento em que forem
reativados os processos
que ocorreram erro.

Ao receber
mensagens
no
reconhecidas.

Notificar por e-mail a


lista de endereos dos
administradores
sobre
MV_WFNF003
as
mensagens
no
reconhecidas
pelo
Workflow.

WorkFlow - 27

Pasta "Messenger"

Messenger
Opo

Item

Caminho

Parmetro

Descrio

MV_WFBROW
S

Arquivo executvel do
browser Internet que
dever estar no path da
estao.

MV_WFBRWS
R

IP ou Nomed PIPE do
servidor Protheus para
uso do servio http.
Adicione : + a porta,
caso seja diferente do
padro.

Browser
Internet
Servidor

Diretrio
HTTP

Caminho

MV_WFDHTT
P

Diretrio de trabalho do
servio http. Verifique o
identificador Path= na
seo
[HTTP]
do
arquivo mp8Srv.ini para
obter o diretrio de
trabalho.

Habilitar

Habilitar

MV_WFMESS

28 WorkFlow

messenger

ser

Messenger
automaticamente.
(prximo logon)

WorkFlow - 29

executado
automaticamente
no
prximo
login
de
qualquer
ambiente
Protheus.

30 WorkFlow

WorkFlow - 31

32 WorkFlow

WorkFlow - 33

34 WorkFlow

Estrutura de diretrio de mensagens


A pasta Workflow localiza-se no Root por questes
de organizao de acesso aos respectivos arquivos de
controle e mensagens a cada empresa.

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.

WorkFlow - 35

Pasta individual de trabalho para cada empresa.

Mail

Esta pasta contm a estrutura de


diretrios para uso exclusivo de
armazenamento
de
mensagens
enviadas e recebidas para cada caixa
de correio existente.

Process

Contm arquivos de controle criados


pelo Workflow para gerar e manipular
processos.

Tasks

Contm temporariamente arquivos de


agendamento de rotinas utilizados
para serem inseridos dentro da tabela
SXM (scheduler).

Temp

Diretrio temporrio de trabalho.

A partir da pasta Mail, sero criadas todas as caixas


de correio existentes no cadastro de contas de
correio do Workflow.

Archive

Esta pasta foi criada exclusivamente


para uso da caixa de correio do
Workflow. Todas as mensagens que
no sejam relacionadas aos processos
de Workflow, sero armazenadas nesta
pasta.
Ex: Spam.

Ignored

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)

Inbox

Esta uma pasta comum entre as


caixas de correio existentes. Ela
responsvel pelo armazenamento de
mensagens recebidas.

Outbox

36 WorkFlow

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.

Sent

Esta uma pasta comum entre as


caixas de correio existentes, sendo
responsvel pelo armazenamento das
mensagens enviadas.

WorkFlow - 37

1.
2.
3.
4.
5.

38 WorkFlow

WorkFlow - 39

Case Atualizao do Preo de Venda de Produto


A partir do ponto de entrada (MT010INC) no cadastro de produtos,
criaremos um processo de Workflow que enviar um html via e-mail
para um destinatrio que dever atualizar o preo de venda do
produto e, em seguida, enviar a resposta para ser atualizada na base
de dados do Protheus. Esse ponto de entrada ser executado aps a
incluso de um novo produto.
Conforme os passos descritos abaixo, realizaremos um cadastro de
processos e de status para futuras pesquisas com o uso da
rastreabilidade de processos. Criaremos, tambm, um html e um
arquivo de programa para descrevermos o fluxo do processo em
cdigo Advpl, usando as classes e as funes de Workflow.
Criar novo campo no SB1
Crie um novo campo B1_WFID no SB1 para que possa ser gravado
o ID do processo de Workflow e ser utilizado em consultas na janela
de rastreabilidade.
Definio do campo B1_WFID: tipo Caracter; tamanho 7; decimais 0
Pesquisa padro SXB
Crie uma pesquisa SXB com o nome WFSB1 que faa referncia
tabela SB1 e retorne o contedo do campo B1_WFID.

40 WorkFlow

WorkFlow - 41

42 WorkFlow

WorkFlow - 43

Processos Workflow
O cadastro de processos do Workflow, 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 Configurador.

Para cadastrar processos workflow:


Em Ambiente | Workflow | Processos Workflow, selecione a opo
"Incluir"
O sistema apresenta a tela de incluso da rotina.

44 WorkFlow

WorkFlow - 45

Confira os dados e confirme a incluso.

Cadastro de Processos
Agrupamento

Campos

Descrio

Cdigo

Cdigo nico identificador.

Nome

Nome do processo.

Codificao

46 WorkFlow

Informativo
Pesquisa
genrica
Visio

Tabelas

Especificaes das tabelas


execuo do processo.

utilizadas

para

Pesquisa
Padro

Cdigo da pesquisa padro utilizada


localizar um determinado processo.

para

Arquivo .vsd

Arquivo visio document (fluxo do processo


desenhado a partir do Microsoft Visio).

WorkFlow - 47

Exerccio
A partir do configurador, selecione a opo de menu Ambiente |
Workflow | Processos Workflow e crie um novo processo conforme o
contedo dos campos apresentados na tabela abaixo:
Cdigo
ATUAPV

Descrio
ATUALIZACAO DO PRECO DE VENDA

48 WorkFlow

Pesq Padro
WFSB1 - Produto

Status Workflow
O cadastro de Status o complemento do cadastro de
processo. Atravs dele, determina-se cada etapa que se realizar
em um fluxo de processo, sendo muito til para determinar pontos
de rastreabilidade dentro de um grande processo.
Para cadastrar status workflow:
Em Ambiente | Workflow | Status Workflow, selecione a opo
"Incluir".
O sistema apresenta a tela de incluso da rotina.

Cadastro de Status

WorkFlow - 49

Agrupamento

Codificao

Informativo

Campos

Descrio

Cd
Processo

Cdigo do processo.

Cd Status

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

Descrio do Status do processo.

Tempo
mdio

Tempo mdio de execuo deste status. Este


tempo calculado pelo sistema.

Confira os dados e confirme a incluso.

50 WorkFlow

Exerccio
Ainda no configurador, selecione a opo de menu Ambiente |
Workflow | Status Workflow 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

WorkFlow - 51

E-mails substitutos
O cadastro de e-mails substitutos um recurso disponvel no
Workflow que tem por finalidade 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 fluxo do processo permanea ausente por
motivos diversos (frias, afastamento etc.).
Para cadastrar e-mails substitutos:
Em Ambiente | Workflow | E-mails Substitutos, clique na opo
"Incluir".
O sistema apresenta a janela de incluso e Confirme.

52 WorkFlow

Cadastro de e-mails substitutos


Agrupamento

Campos

Descrio
Endereo eletrnico do participante que
permanecer ausente por um perodo de tempo.

Do e-mail
Endereo
eletrnico

Perodo

Para
mail

e-

Endereo eletrnico do participante que ficar


responsvel por receber as mensagens.

Data incio

Data inicial em que passar


substituio dos e-mails.

Data final

Data final do perodo.

Dias

Clculo de dias entre a data inicial e final.

WorkFlow - 53

vigorar

Exerccio
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

54 WorkFlow

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]

WorkFlow - 55

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.
6.
7.
8.
9.

99 cdigo da empresa.
01 cdigo da filial.
ENVTOP ambiente no qual ser executado o Scheduler.
T Valor lgico (True ou False). True, Indicar que realizar
reativao dos processos nas tabelas do Workflow.
10. MOD Nome do ambiente do qual o Workflow obter licenas.

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 configurador, possvel acessar a janela de cadastro de


jobs a serem executados pelo Scheduler.
56 WorkFlow

Para configurar a rotina de Schedule:


Selecione as opes "Ambiente" | "Schedule" | "Schedule";

WorkFlow - 57

Selecione: Processos Especiais.

Pressione o boto Incluir

58 WorkFlow

Janela de cadastro de jobs

Scheduler Processos Especiais


Agrupament
o

Identificao

Freqncia

Perodo

Campos

Descrio

Cdigo

Cdigo nico identificador do job.

Nome

Nome simplificado.

Descrio

Descrio do job.

Diria

Executa diariamente entre os horrios


inicial e final a cada intervalo de tempo.

Semanal

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.

Mensal

Executa nos meses selecionados do ano


(janeiro a dezembro), entre os horrios
inicial e final a cada intervalo de tempo.

Data
Incio

Data inicial que passar a vigorar a


execuo.

WorkFlow - 59

Inicial

Perodo Final

Perodo

Job

Environment

Hora
Incio

Horrio inicial de execuo.

Data final

Dia limite de execuo.

Hora final

Horrio limite de execuo.

Intervalo

Intervalo de tempo a cada execuo


entre o horrio inicial e final.

Ao

Funo de usurio ou funo interna do


Protheus
a
ser
executado.
Os
parmetros passados para esta funo
devero ser sempre tratados como um
array.

Ambiente

Ambiente em que o job ser executado.

Agendar recebimento de mensagens do Workflow

Para que o Workflow possa receber as mensagens e executar os


retornos de processos, necessrio cadastrar no Scheduler a funo
WFReturn(Cdigo_Empresa, Cdigo_Filial).
A funo WFReturn responsvel por:

baixar (download) todas as mensagens contidas na caixa postal


de mensagens do correio eletrnico do Workflow e gravar na
pasta Inbox (veja acima estrutura de diretrios para
melhor esclarecimento);

separar as mensagens reconhecidas (retornos de aprovao


etc.) pelo Workflow e mover para a pasta Process;

separar as mensagens no reconhecidas (spam etc.) pelo


Workflow e mover para a pasta Archive. Em seguida, notificar
lista de e-mails de administradores informados no cadastro
de parmetros do Workflow;

executar cada um dos retornos de processos.

Exemplo:
WFReturn( 99, 01 )
Agendar envio de mensagens do Workflow

60 WorkFlow

Apesar de ter a opo Enviar Automaticamente disponvel no


cadastro de parmetros do Workflow, importante saber que nem
sempre possvel enviar as mensagens em um determinado
momento. Podero ocorrer alguns problemas que podem acarretar
fila de espera e, com isso, crescer o nmero de processos parados.
Entre os problemas mais comuns est a perda da comunicao
com o servidor de e-mail.
Para evitar tais problemas, interessante agendar a funo
WFSendMail (Cdigo_Empresa, Cdigo_Filial) da mesma
forma que a funo WFReturn. Assim, haver a garantia de que a
qualquer momento as mensagens que, eventualmente, tenham ficado
na fila de espera sero enviadas.
A funo WFSendMail responsvel por:

enviar cada uma das mensagens contidas na pasta Outbox


(caixa de sada);

mover para a pasta Sent (itens enviados) as mensagens que


foram enviadas com sucesso;

mover para a pasta Outbox\Error as mensagens que tiveram


problemas durante o envio. Caso queira reenvi-las, basta
mov-las para a pasta Outbox (caixa de sada).

Exemplo:
WFSendMail( 99, 01 )

WorkFlow - 61

Requisitos para desenvolvimento

Para construir um processo de Workflow que automatize de forma


correta, so necessrios quatro requisitos fundamentais:

conhecer o sistema de ERP como um todo, inclusive


tecnicamente. Isso corresponde a conhecer todos os recursos
de configurao e programao do Protheus, bem como suas
tabelas
e
respectivos
relacionamentos;

saber programar em linguagem ADVPL, nvel avanado, com


conhecimento
em
objetos
e
classes;

conhecimento em linguagem HTML, para construo de


pginas, alm de saber programar em Java Script, para
refinamento
e
validao
das
pginas;

software e hardware necessrios.

62 WorkFlow

Html MODELO WORKFLOW


O Workflow faz uso de formulrios html para realizar interaes
entre o(s) participante(s) e o sistema ERP. Alm de inform-los,
possvel responder determinadas requisies atravs do recurso
Post message oferecido pelos navegadores internet. Os formulrios
desenhados e utilizados para interagir com os participantes, so
denominados modelos (templates) e devero estar disponveis em
algum diretrio abaixo do rootpath do Protheus. Ao ser utilizado
algum desses modelos nos processos de Workflow, apenas a cpia do
modelo ser modificado. necessrio bons conhecimentos de
programao HTML e Java Script para a construo de pginas no
Workflow.

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.

WorkFlow - 63

64 WorkFlow

<html>
<head>
<meta http-equiv="Content-Type"
charset=iso-8859-1">

content="text/html;

<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>

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 palavras-chaves (macros):

WorkFlow - 65

%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 palavrachave (macro) encontrada.
Exemplo:
<input type=hidden name="EMISSAO" value="01/04/05">
<input type=hidden name="FORNECEDOR" value="100100">
<input
type=hidden
SUPRIMENTOS INFO LTDA">

name="LB_NOME"

value="RM

<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 modificaes 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.

66 WorkFlow

TextField:
<input type="text" size="13" name="T7" value=%quantidade%>

TextArea:
<textarea
name="S1"
%</textarea>

rows="4"

cols="74">%observacao

checked

name="%aprovacao%"

Radio Button:
<input
type="radio"
value="Sim">Sim.
<br>
<input type="radio" name="%aprovacao%" value="Nao">No.
Combo Box:
<select
name="list"
size="1"><option
%</option>
</select>

selected>%itens

Check Box:
<input
type="checkbox"
value="%item1%">Item 1

name="checkbox"

!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.
Tabelas

WorkFlow - 67

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 Workflow 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.

68 WorkFlow

Exerccio
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=iso8859-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,
sansserif">Atualiza&ccedil;&atilde;o
do
Pre&ccedil;o
de
Venda</font></strong></p>
</td></tr><tr bordercolor="#66CCFF">
<td height="20" bgcolor="#DFEFFF">
<font size="1">C&oacute;digo:</font></td>
<td
bgcolor="#DFEFFF"><font
size="1">Descri&ccedil;&atilde;o:</font></td>
<td bgcolor="#DFEFFF"><font size="1">Pre&ccedil;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>

WorkFlow - 69

70 WorkFlow

Tela Pronta:

WorkFlow - 71

72 WorkFlow

Criando um processo em Advpl - funes


No existem processos de Workflow nativos dentro do Protheus,
sendo necessria a construo de acordo com a necessidade.
Um processo de Workflow poder ser iniciado a partir de uma
destas opes:

pontos de entrada;

item de menu de qualquer ambiente;

job agendado atravs do Scheduler;

manualmente atravs do remote.

A opo mais utilizada o ponto de entrada. Se for realizado


um pedido de compras, por exemplo, automaticamente gerada uma
aprovao para os itens do pedido e enviado para um aprovador.
Qualquer ponto de entrada do sistema pode ser utilizado.
Para ser iniciado o processo em qualquer das opes escolhidas, ser
necessrio fazer uso do cdigo fonte Advpl para determinar a forma
como ir proceder a execuo do fluxo do processo.
Na maior parte, o Workflow baseia-se, no uso de classes
referenciadas aos objetos, que se tornam a ponte de acesso para uso
de seus mtodos e propriedades. A principal classe do Workflow a
TWFProcess, o que veremos a seguir ( necessrio conhecimento
de programao orientada a objetos).

WorkFlow - 73

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.

74 WorkFlow

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.
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.

WorkFlow - 75

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.

76 WorkFlow

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 Workflow 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()
Este mtodo responsvel por finalizar o processo. Aps a
finalizao, ele no estar mais disponvel para execues do tipo
retorno e timeout.
Exemplo:
oP:Finish()

WorkFlow - 77

:Track(<cCodStatus>,<cDescr>,<cUsuario>)
Este mtodo responsvel por incluir as descries dos passos
seguidos pelo fluxo 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 definem 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
Workflow 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 define o assunto da mensagem.
Exemplo:
oP:cSubject := Aprovado do pedido de compras no. 1028

78 WorkFlow

:cBody
Esta propriedade armazenar um texto que permanecer no corpo
da mensagem. Caso seja utilizado, o html ir como anexo da
mensagem.
Exemplo:
oP:cBody := Testando...

:bReturn
Esta propriedade contm o nome da funo que ser executada no
momento em que o Workflow 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 especificados 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}}

WorkFlow - 79

: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 palavraschaves 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> )


Esta propriedade tem como objetivo obter o contedo da macro
quando as respostas retornarem para o Workflow. 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>)

80 WorkFlow

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.

WorkFlow - 81

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(
>SB1_COD )

82 WorkFlow

produto.codigo

),

SB1-

Exerccio
Criar processo de Workflow 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 fluxo do processo com
o uso das classes e funes do Workflow. Essa funo (ponto de
entrada) ser executada a partir do momento em que for pressionado
o boto OK, na confirmao 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

WorkFlow - 83

//
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"
// 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 identifique 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
rastreabilidade.
oProcess:Track(cCodStatus,
cTexto,
Rastreabilidade

mtodo

responsvel

cUsuarioProtheus)

// 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)
84 WorkFlow

pela
//

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 especfica 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, verificado 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
// Informe o nome da funo de retorno a ser executada quando a
mensagem de
// respostas retornar ao Workflow:
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)

WorkFlow - 85

// Aps ter repassado todas as informaces necessrias para o


Workflow,
// 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 Workflow 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))
// 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
86 WorkFlow

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

WorkFlow - 87

// 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 ficar 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, verifique 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")
// Redefina a funo de retorno a ser executada.
oProcess:bReturn := "U_MT010INC(1)"
// Redefina a funo de timeout a ser executada.
88 WorkFlow

oProcess:bTimeOut
nMinutos}

:=

{"U_MT010INC(2)",

nDias,

nHoras,

// Adicione as informes a serem includas na rastreabilidade


cTexto := "Reenviando a solicitao..."
cCodStatus := "100700"
oProcess:Track(cCodStatus, cTexto)
// 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
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 confirmar 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.

WorkFlow - 89

Exerccio
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 | Workflow |
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
Consultas (Processo por usurios)
A qualquer momento, o usurio do sistema poder realizar consultas
sobre pendncias geradas pelo Workflow, simplesmente selecionando
a opo de menu Miscelnea | Workflow | Processos Usuarios
disponvel nos ambientes.
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.

90 WorkFlow

WorkFlow - 91

92 WorkFlow

WorkFlow - 93

94 WorkFlow

WorkFlow - 95

96 WorkFlow

WorkFlow - 97

98 WorkFlow

WorkFlow - 99

100 WorkFlow

WorkFlow - 101

102 WorkFlow

WorkFlow - 103

104 WorkFlow

WorkFlow - 105

106 WorkFlow

WorkFlow - 107

108 WorkFlow

WorkFlow - 109

110 WorkFlow

WorkFlow - 111

112 WorkFlow

WorkFlow - 113

114 WorkFlow

WorkFlow - 115

116 WorkFlow

WorkFlow - 117

118 WorkFlow

Glossrio
Autenticao SMTP: validao de usurio e senha no servidor de email 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 final.
Exemplos: OutLook Express e OutLook XP.
Conta de e-mail: endereo de e-mail existente em um servidor de email.
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
Workflow 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 emails para permitir o acesso caixa de correio (leitura).

WorkFlow - 119

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 identificar as
propriedades (status, descrio, data, participante etc.) de um
determinado processo de Workflow.
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 fluxo de
processo.
Workflow: automao do fluxo de processo.

120 WorkFlow

Potrebbero piacerti anche