Árvore de páginas

Função: TWFProcess

A classe TWFProcess foi desenvolvida pontualmente para a utilização no Workflow, é responsável pela criação e gerenciamento do processo. Ou seja, quando existe o envio e retorno do e-mail. Como toda e qualquer classe, a TWFProcess é dividida em métodos e propriedades. Veremos alguns dos principais métodos e propriedades que iremos usar para criação de um processo. 

ObservaçãoNo caso de um simples e-mail, aconselha-se utilizar:

- As classes TMailManager (Classe TMailManager) e TMailMessage (Classe TMailMessage);

- Corpo de e-mail HTML. Qualquer estilização e/ou ferramenta de mercado, considera-se customização.



TWFProcess ( [ ] ) --> Nil


NomeTipoDescriçãoObrigatórioReferência

Array of Record



Nil (Nulo)


Métodos 


:New(<cCodProc>,<cDescr>,<cProcID>)

O método New() é responsavel pela criação e inicialização da classe WFProcess.

Parâmetros:

1.     cCodProc: Este parâmetro recebe o código do processo usado em “Cadastro de Processos”

2.     cDescr: Este parâmetro recebe a descrição do processo que esta sendo criado no momento. Se não for informado, será usado a descrição contida no cadastro de processo localizada através do parâmetro anterior cCodProc.

3.     cProcID: Este parâmetro recebe o ID do processo criado.

Exemplo:

oP := TWFProcess():New('PEDCOM','Aprovacao do Pedido de Compras')

 

:NewTask(<cDescr>,<cArqHtml>,<lCopiar>)

Este método é responsável por criar a seqüência de tarefas a serem executadas e identificar qual html será utilizado pelo processo.

Parâmetros:

1.     cDescr: Este parâmetro recebe a descrição da tarefa.

2.     cArqHtml: Este parâmetro recebe o caminho e o nome do arquivo html que fará uso no processo.

3.     lCopiar: Este parâmetro do tipo lógico é responsável por copiar todos os campos utilizados em uma tarefa anterior para esta que esta sendo criado no momento.

Exemplo:

oP:NewTask('Criando Aprovacao', '\workflow\WFW120p.htm' )

 

:AttachFile(<cArquivo>)

Este método é responsável pela inclusão de arquivo anexos à mensagem. Os arquivos anexos deverão estar abaixo do root path do Protheus.

Parâmetros:

1.     cArquivo: Caminho e nome do arquivo a ser anexo a mensagem.

Exemplo:

oP:AttachFile(“\Workflow\teste.txt”)

 

:Start(<cHtmlCopiarPara>) -> cProcessKey

Este método é responsável por construir todo o processo, gravar os registros nas tabelas do Workflow e enviar a mensagem para os destinatários. O valor de retorno é uma chave composta pela codificação ProcessID + TaskID e números aleatórios no total de 17 algarismos em hexadecimal.

Parâmetros:

1.     cHtmlCopiarPara: Caminho onde o Workflow devera realizar uma copia do html final.

Exemplo:

cID := oP:Start(“\workflow\copia”)

if file( “\workflow\copia\” + cID)

      conout(“Arquivo copiado com sucesso.”)

endif

 

:Finish()

Este método é responsável por finalizar o Processo. Após a finalização, este não estará mais disponível para execuções do tipo retorno e timeout.

Exemplo:

oP:Finish()

 

:Track(<cCodStatus>,<cDescr>,<cUsuario>)

Este método é responsável por incluir as descrições dos passos seguidos pelo fluxo do processo e apresentá-los na consulta da rastreabilidade.

Parâmetros:

1.     cCodStatus: Codigo do status do processo.

2.     cDescr: Descrição do passo ocorrido.

3.     cUsuario: Nome do usuário 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 endereço dos destinatários. Poderá ser informado mais que um destinatário ao mesmo tempo. Basta incluir um ponto-e-vírgula “;” entre eles. Se for informado uma palavra qualquer que não seja um endereço de e-mail válido, o Workflow irá considera que se trata de um diretório onde o html gerado devera ser gravado. Pode mesclar os tipos.

Exemplo:

oP:cTo := “[email protected];[email protected]

oP:cCC := “[email protected];Aluno”

oP:cBCC := “[email protected]

 

:cSubject

Esta propriedade define o assunto da mensagem.

Exemplo:

oP:cSubject := “Aprovado do pedido de compras no. 1028”

 

:cBody

Esta propriedade armazenará um texto que permanecera no corpo da mensagem. Caso seja utilizado, o html irá como anexo da mensagem.

Exemplo:

oP:cBody := “Testando...”

 

             

:bReturn

Esta propriedade contém o nome da função que será executada no momento em que o Workflow receberá a mensagem de resposta de um dos destinatários via e-mail ou serviço http.

 

Exemplo:

oP:bReturn := “U_Retorno”

 

 

:bTimeOut

Esta propriedade recebe um array de timeouts contendo nomes das funções e tempo de espera. Caso os tempo seja alcançado, será executado a função mencionadas no 1º item do array. Poderá especificar mais que 1 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 número ID do processo.

 

Exemplo:

cProcID := oP:fProcessID

 

 

:fTaskID

Esta propriedade fornece o número ID da tarefa criada para um determinado processo, através do método :NewTask().

 

Exemplo:

oP:NewTask( '100100', '\workflow\WFW120p.htm' )

cTaskID := oP:fTaskID

 

 

 

:oHTML

Este objeto é uma referência da classe de uso interno TWFHtml() e disponibiliza dois dos métodos mais importantes: RetByName() e ValByName().

 

 

 

:oHTML:RetByName( <cNome da macro> )

Esta propriedade tem como objetivo obter o conteúdo da “macro” quando as resposta retornarem para o Workflow. Este método somente deverá ser usada na função de retorno.

 

Exemplo:

cNome := oP:oHtml:RetByName( “Nome” )

 

Em uma tabela:

aCodigo := oP:oHtml:RetByName( “produto.Codigo” )

 

 

:oHTML:ValByName(<cMacro>,<uConteudo>)

Este método por objetivo atribuir ou obter um valor à uma “macro” existente no html. Este deverá ser usado somente no momento em que estiver assinalando valores ao html ou na função de timeouts. Na função de timeouts o uso é necessário por motivo de não ter recebido nenhuma resposta.

Parâmetros:

1.     cMacro: Nome da macro (palavra chave) encontrada no html, identificada entre os símbolos “%” e “!”.

2.     uConteudo: Valor a ser atribuido à macro.

 

Exemplo:

Assinalando um valor:

oP:oHtml:ValByName( “Nome”, “Aluno1” )

 

Usando na função de timeout:

cNome := oP:oHtml:ValByName( “Nome” )

 

Atribuindo um valor a uma tabela:

AAdd( oP:oHtml:ValByName( “produto.codigo” ), SB1->SB1_COD )



Microsiga Protheus 8.11 , Protheus 10