WorkFlow - Desenvolvendo Um Processo

3
Desenvolvendo um Processo Construindo uma página HTML Caso queira refinar seu email e deseje que o mesmo tenha um retorno, poderá inserir dentro do seu email uma página Html, criada por você. Isto não é imprescindível, pois você pode enviar um email contendo apenas texto. Entretanto, neste último caso, você não terá como controlar a resposta deste email, ou seja, seu processo será baseado apenas no envio de email. Você poderá construir a página HTML no FrontPage Professional, preferencialmente. A única condição que você deverá seguir é colocar para cada controle (ou objeto) o valor inicial (propriedade existente em cada objeto) entre "%" (porcentagem) ou "!" (exclamação). Por exemplo para uma caixa onde será colocado o Código do Pedido, o valor inicial deverá ser "%CODIGO%". Outra ponto é que, caso seja utilizada um objeto tipo TABELA, os valores iniciais de cada coluna deve ser um índice. Exemplo: %Produto.Quant %, %Produto.Valor%, etc. Caso numa tabela seja necessário o input de dados, é necessário usar o caracter porcentagem em vez da exclamação. Note que caso você tenha conhecimentos de Java Script, você poderá adicionálos à sua página, para programar consistências em inputs de dados. Este HTML não conterá nenhum dado do Microsiga Protheus®. Será constituído somente do layout que se deseja para o mesmo. Você poderá refinálo com imagens, AVI’s, etc. As imagens , AVI's, etc deverão estar em um local acessível a todos, de preferência em um site ou ftp. O preenchimento dos dados no HTML serão feitos por um programa em ADVPL. 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 propriedades são do formulário. Construindo o programa ADVPL Os processos do Workflow podem se iniciar através de um modo automático, através de um agendamento, que será mostrado mais adiante, ou através de um ponto de entrada dentro do Microsiga Protheus®. Um ponto de entrada é uma função do usuário que é executada após determinada ação em um processo. Estes pontos de entrada hoje são fixos no Microsiga Protheus®. Caso seja necessário criar mais um, será necessário contactar o setor de desenvolvimento. A programação do Ponto de Entrada é toda feita em ADVPL. Para se ativar o Workflow neste ponto de entrada é necessário incluir algumas funções específicas do mesmo. Estas funções diferem um pouco da tradicional programação ADVPL, pois passamos a trabalhar com classes e objetos, em vez de simples variáveis e funções. Mostraremos as funções existentes para que se possa fazer uma função para um processo de Workflow. Note que você deverá ter ótimas noções de programação ADVPL para entender as funções abaixo. 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 chamaremos de "ohtml". Abaixo segue uma lista de todos os métodos do objeto. a. Criação do Processo. Sintaxe: TWFProcess():New(Código do processo,Descrição do processo)

description

WorkFlow - Desenvolvendo Um Processo

Transcript of WorkFlow - Desenvolvendo Um Processo

Page 1: WorkFlow - Desenvolvendo Um Processo

Desenvolvendo um Processo

Construindo uma página HTML

Caso queira refinar seu e­mail e deseje que o mesmo tenha um retorno, poderá inserir dentro do seu e­mail uma página Html, criada por você. Isto não é imprescindível,pois você pode enviar um e­mail contendo apenas texto. Entretanto, neste último caso, você não terá como controlar a resposta deste e­mail, ou seja, seu processo serábaseado apenas no envio de e­mail.

Você poderá construir a página HTML no FrontPage Professional, preferencialmente. A única condição que você deverá seguir é colocar para cada controle (ou objeto) o valorinicial (propriedade existente em cada objeto) entre "%" (porcentagem) ou "!" (exclamação). Por exemplo para uma caixa onde será colocado o Código do Pedido, o valorinicial deverá ser "%CODIGO%". Outra ponto é que, caso seja utilizada um objeto tipo TABELA, os valores iniciais de cada coluna deve ser um índice.

Exemplo:

%Produto.Quant %, %Produto.Valor%, etc.

Caso numa tabela seja necessário o input de dados, é necessário usar o caracter porcentagem em vez da exclamação.

Note que caso você tenha conhecimentos de Java Script, você poderá adicioná­los à sua página, para programar consistências em inputs de dados.

Este HTML não conterá nenhum dado do Microsiga Protheus®. Será constituído somente do layout que se deseja para o mesmo. Você poderá refiná­lo com imagens, AVI’s,etc. As imagens , AVI's, etc deverão estar em um local acessível a todos, de preferência em um site ou ftp. O preenchimento dos dados no HTML serão feitos por umprograma em ADVPL.

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. Estaspropriedades são do formulário.

Construindo o programa ADVPL

Os processos do Workflow podem se iniciar através de um modo automático, através de um agendamento, que será mostrado mais adiante, ou através de um ponto deentrada dentro do Microsiga Protheus®. Um ponto de entrada é uma função do usuário que é executada após determinada ação em um processo. Estes pontos de entradahoje são fixos no Microsiga Protheus®. Caso seja necessário criar mais um, será necessário contactar o setor de desenvolvimento.

A programação do Ponto de Entrada é toda feita em ADVPL. Para se ativar o Workflow neste ponto de entrada é necessário incluir algumas funções específicas do mesmo.Estas funções diferem um pouco da tradicional programação ADVPL, pois passamos a trabalhar com classes e objetos, em vez de simples variáveis e funções.

Mostraremos as funções existentes para que se possa fazer uma função para um processo de Workflow. Note que você deverá ter ótimas noções de programação ADVPL paraentender as funções abaixo.

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, quechamaremos de "ohtml".

Abaixo segue uma lista de todos os métodos do objeto.

a. Criação do Processo.

Sintaxe: TWFProcess():New(Código do processo,Descrição do processo)

Page 2: WorkFlow - Desenvolvendo Um Processo

Exemplo:

oProcess := TWFProcess():New( "PEDCOM", "Pedido de Compras")

b. Informando o HTML e o código do processo que compõem este Processo.

Sintaxe: oProcess:NewTask(Código Processo,Caminho do HTML).

O Arquivo HTML deve estar abaixo do RootPath do Microsiga Protheus®.

Exemplo:

oProcess:NewTask('Inicio',"\workflow\WF_450A.htm")

c. Definindo o Assunto do E­mail (propriedade cSubject):

Exemplo:

oProcess:cSubject := "Aprovacao de Pedido de Compra"

d. Definindo o(s) Destinatário(s) do E­mail (propriedade cTo. Mais de um destinatário, separar por ;)

Exemplo:

oProcess:cTo := [email protected]

e. Definindo o(s) Destinatário(s) com cópia do E­mail (propriedade cCC. Mais de um destinatário, separar por ;)

Exemplo:

oProcess:cCC := [email protected]

f. Definindo o(s) Destinatário(s) com cópia oculta do E­mail(propriedade cBCC. Mais de um destinatário, separar por ;)

Exemplo:

oProcess:cBCC := [email protected] ; [email protected]

g. Definindo o corpo da mensagem, caso não queira utilizar HTML atachado ao e­mail (propriedade cBody).

Exemplo:

oProcess:cBody := “Seu pedido número 120 foi aprovado”

h. Definindo a Função ADVPL de Retorno (propriedade bReturn). Esta função será executada quando o Workflow receber o e­mail de resposta de um dos destinatáriosinformados nas propriedades acima.

Exemplo:

oProcess:bReturn := "U_WFW120P( 1 )"

i. Definindo a Função de TimeOut(propriedade bTimeOut). Esta função será executada quando o tempo limite de resposta for alcançado.

No exemplo a seguir, a função U_WFW120P será executada após 2 dias, 5 horas e 50 minutos do e­mail inicial ter sido enviado e o mesmo não ter sido respondido.Repare que a propriedade recebe um array de funções, isto é, você pode programar várias funções de TimeOut.

Exemplo:

Page 3: WorkFlow - Desenvolvendo Um Processo

oProcess:bTimeOut := "U_WFW120P(2)",2, 5, 50

oProcess:bTimeOut := "U_WFW120P(2)",2, 5, 50 , "U_WFW120P(3)",4, 5, 50

j. Setando um valor para um controle do HTML, que não esteja em uma tabela da página HTML. No exemplo a seguir, EMISSAO corresponde à um objeto do HTML cujapropriedade valor inicial seria %EMISSAO%.

Sintaxe: ValByName(Nome Objeto, valor)

Exemplo:

oProcess:oHtml:ValByName( "EMISSAO", SC7­>C7_EMISSAO )

k. Setando o valor de um controle dentro de uma tabela no HTML. No exemplo abaixo, produto.item corresponde à um objeto da tabela no HTML cujo propriedade valorinicial seria %produto.item%. Repare que a tabela é controlada por um array.

Sintaxe: aadd(oProcess:oHtml:ValByName(Nome Objeto), valor)

Exemplo:

aadd( (oProcess:oHtml:ValByName( "produto.item" )),C7_ITEM )

l. Atachando um arquivo qualquer no e­mail a ser enviado. Repare que o arquivo deve estar abaixo do RootPath do Microsiga Protheus®.

Exemplo:

oProcess:AttachFile("\SIGAMAT\SIGACOM.MNU")

m. Iniciando o Processo

Exemplo:

oProcess:Start()

n. Pegando o valor de retorno de um objeto dentro do HTML, em cujo e­mail o mesmo estava atachado.

Sintaxe: oProc:oHtml:RetByName(Nome do objeto)

Exemplo:

oProc:oHtml:RetByName("Aprovacao")

o. Finalizando o Processo.

Exemplo:

oProcess:Finish()

Após a criação do Html e do Ponto de entrada, o processo de Workflow estará criado.

Veja o exemplo: Atualização de Preços.