Sie sind auf Seite 1von 3

DesenvolvendoumProcesso

ConstruindoumapginaHTML
Caso queira refinar seu email e deseje que o mesmo tenha um retorno, poder inserir dentro do seu email uma pgina Html, criada por voc. Isto no imprescindvel,
pois voc pode enviar um email contendo apenas texto. Entretanto, neste ltimo caso, voc no ter como controlar a resposta deste email, ou seja, seu processo ser
baseadoapenasnoenviodeemail.
VocpoderconstruirapginaHTMLnoFrontPageProfessional,preferencialmente.Anicacondioquevocdeverseguircolocarparacadacontrole(ouobjeto)ovalor
inicial (propriedade existente em cada objeto) entre "%" (porcentagem) ou "!" (exclamao). Por exemplo para uma caixa onde ser colocado o Cdigo do Pedido, o valor
inicialdeverser"%CODIGO%".Outrapontoque,casosejautilizadaumobjetotipoTABELA,osvaloresiniciaisdecadacolunadeveserumndice.
Exemplo:
%Produto.Quant%,%Produto.Valor%,etc.

Casonumatabelasejanecessriooinputdedados,necessriousarocaracterporcentagememvezdaexclamao.
NotequecasovoctenhaconhecimentosdeJavaScript,vocpoderadicionlossuapgina,paraprogramarconsistnciaseminputsdedados.
EsteHTMLnoconternenhumdadodoMicrosigaProtheus.Serconstitudosomentedolayoutquesedesejaparaomesmo.Vocpoderrefinlocomimagens,AVIs,
etc. As imagens , AVI's, etc devero estar em um local acessvel a todos, de preferncia em um site ou ftp. O preenchimento dos dados no HTML sero feitos por um
programaemADVPL.
Caso seu HTML tenha um retorno, ele dever ter na propriedade Action a string mailto:%WFMailTo% e a propriedade Method dever estar setada como POST. Estas
propriedadessodoformulrio.

ConstruindooprogramaADVPL
Os processos do Workflow podem se iniciar atravs de um modo automtico, atravs de um agendamento, que ser mostrado mais adiante, ou atravs de um ponto de
entradadentrodoMicrosigaProtheus.Umpontodeentradaumafunodousurioqueexecutadaapsdeterminadaaoemumprocesso.Estespontosdeentrada
hojesofixosnoMicrosigaProtheus.Casosejanecessriocriarmaisum,sernecessriocontactarosetordedesenvolvimento.
A programao do Ponto de Entrada toda feita em ADVPL. Para se ativar o Workflow neste ponto de entrada necessrio incluir algumas funes especficas do mesmo.
EstasfunesdiferemumpoucodatradicionalprogramaoADVPL,poispassamosatrabalharcomclasseseobjetos,emvezdesimplesvariveisefunes.
MostraremosasfunesexistentesparaquesepossafazerumafunoparaumprocessodeWorkflow.NotequevocdevertertimasnoesdeprogramaoADVPLpara
entenderasfunesabaixo.
O principal objeto a ser criado o objeto do Processo, que chamaremos de "oProcess". Dentro dele existe a propriedade que representa o HTML deste processo, que
chamaremosde"ohtml".
Abaixosegueumalistadetodososmtodosdoobjeto.
a. CriaodoProcesso.
Sintaxe:TWFProcess():New(Cdigodoprocesso,Descriodoprocesso)

Exemplo:
oProcess:=TWFProcess():New("PEDCOM","PedidodeCompras")
b. InformandooHTMLeocdigodoprocessoquecompemesteProcesso.
Sintaxe:oProcess:NewTask(CdigoProcesso,CaminhodoHTML).
OArquivoHTMLdeveestarabaixodoRootPathdoMicrosigaProtheus.
Exemplo:
oProcess:NewTask('Inicio',"\workflow\WF_450A.htm")
c. DefinindooAssuntodoEmail(propriedadecSubject):
Exemplo:
oProcess:cSubject:="AprovacaodePedidodeCompra"
d. Definindoo(s)Destinatrio(s)doEmail(propriedadecTo.Maisdeumdestinatrio,separarpor)
Exemplo:
oProcess:cTo:=aprovador1@company.com
e. Definindoo(s)Destinatrio(s)comcpiadoEmail(propriedadecCC.Maisdeumdestinatrio,separarpor)
Exemplo:
oProcess:cCC:=aprovador2@company.com
f.

Definindoo(s)Destinatrio(s)comcpiaocultadoEmail(propriedadecBCC.Maisdeumdestinatrio,separarpor)
Exemplo:
oProcess:cBCC:=aprovador2@company.comaprovador3@company.com

g. Definindoocorpodamensagem,casonoqueirautilizarHTMLatachadoaoemail(propriedadecBody).
Exemplo:
oProcess:cBody:=Seupedidonmero120foiaprovado
h. DefinindoaFunoADVPLdeRetorno(propriedadebReturn).EstafunoserexecutadaquandooWorkflowreceberoemailderespostadeumdosdestinatrios
informadosnaspropriedadesacima.
Exemplo:
oProcess:bReturn:="U_WFW120P(1)"
i.

DefinindoaFunodeTimeOut(propriedadebTimeOut).Estafunoserexecutadaquandootempolimitederespostaforalcanado.
No exemplo a seguir, a funo U_WFW120P ser executada aps 2 dias, 5 horas e 50 minutos do email inicial ter sido enviado e o mesmo no ter sido respondido.
Reparequeapropriedaderecebeumarraydefunes,isto,vocpodeprogramarvriasfunesdeTimeOut.
Exemplo:

oProcess:bTimeOut:={{"U_WFW120P(2)",2,5,50}}
oProcess:bTimeOut:={{"U_WFW120P(2)",2,5,50},{"U_WFW120P(3)",4,5,50}}
j.

SetandoumvalorparaumcontroledoHTML,quenoestejaemumatabeladapginaHTML.Noexemploaseguir,EMISSAOcorrespondeumobjetodoHTMLcuja
propriedadevalorinicialseria%EMISSAO%.
Sintaxe:ValByName(NomeObjeto,valor)
Exemplo:
oProcess:oHtml:ValByName("EMISSAO",SC7>C7_EMISSAO)

k. SetandoovalordeumcontroledentrodeumatabelanoHTML.Noexemploabaixo,produto.itemcorrespondeumobjetodatabelanoHTMLcujopropriedadevalor
inicialseria%produto.item%.Reparequeatabelacontroladaporumarray.
Sintaxe:aadd(oProcess:oHtml:ValByName(NomeObjeto),valor)
Exemplo:
aadd((oProcess:oHtml:ValByName("produto.item")),C7_ITEM)
l.

Atachandoumarquivoqualquernoemailaserenviado.ReparequeoarquivodeveestarabaixodoRootPathdoMicrosigaProtheus.
Exemplo:
oProcess:AttachFile("\SIGAMAT\SIGACOM.MNU")

m. IniciandooProcesso
Exemplo:
oProcess:Start()
n. PegandoovalorderetornodeumobjetodentrodoHTML,emcujoemailomesmoestavaatachado.
Sintaxe:oProc:oHtml:RetByName(Nomedoobjeto)
Exemplo:
oProc:oHtml:RetByName("Aprovacao")
o. FinalizandooProcesso.
Exemplo:
oProcess:Finish()

ApsacriaodoHtmledoPontodeentrada,oprocessodeWorkflowestarcriado.
Vejaoexemplo:AtualizaodePreos.