domingo, 3 de maio de 2009

Workflow... o que é isto?

Olá pessoal,

Já nasceu nosso primeiro GO LIVE, e agora rumo ao segundo, vim correndo publicar aqui no blog, sobre workflow, esse processo que muitas vezes já me deixou na dúvida, rs*

Boa leitura!!!

Um fluxo workflow é um conjunto de regras de negócios com a capacidade de mapear e rotear processos e informações de toda a empresa.
Considere como exemplos:
- a geração de uma nota fiscal a partir de um evento de venda
- a aprovação de documentos para qualquer tipo de decisão
- a estruturação de um código contábil a partir de uma transação

O módulo Oracle Workflow pode ser usado tanto em uma instalação Stand Alone ou incorporada ao ERP.
Podemos subdividí-lo em partes conforme o quadro abaixo:




Analisando o quadro da direita para a esquerda, na subdivisão “Cliente de Desenvolvimento do Workflow”, temos:

1. Workflow Builder: ferramenta onde são desenhados e compilados os fluxos.
2. Arquivos de Definição Workflow: arquivos que contêm a especificação dos fluxos desenhados na ferramenta acima.
3. Workflow Definitions Loader: script para leitura do arquivo de especificação descrito acima e gravação das informações na base de dados.

Na subdivisão “Servidor Oracle” temos:

1. Workflow Engine: É ele quem controla a execução de cada atividade do fluxo.
2. Notification System: É quem controla as notificações de um fluxo Workflow.
3. Serviços de Diretório: Conjunto de tabelas utilizadas pelo Notification System para controle das notificações.

No subdivisão “Servidor de Aplicativos” temos:

1. Servidor HTTP Oracle: Servidor de aplicativos (ERP) que interage com a base e consequentemente com toda a estrutura WF.
2. Notification Mailer: É quem faz a interface entre o aplicativo de E-mail e o Notification System, para envio/recepção de notificações via e-mail.


E por último, na subdivisão “Cliente do Usuário Final” temos:

1. Workflow Monitor: Ferramenta WEB disponível na versão 11i para visualização de notificações (WEB Notifications List) e de processos (WEB Process List).
2. Aplicativos de E-mail: Outlook, Lotus Notes, etc..

Um fluxo Workflow é composto de atividades que podem ser classificadas da seguinte forma:

Todo processo (subfluxo) é composto de apenas uma função de Start e uma ou mais funções End, conforme desenho abaixo:

Uma função é uma representação gráfica de um programa (procedure ou function) PLSQL.
As funçôes Start, End entre outras são programas prontos pertencentes a biblioteca (ou conjunto de fluxos) Standard, e código fonte dos mesmos estão na package WF_STANDARD.

Uma função pode ainda ter resultados que desviam o fluxo.
Como exemplo considere o subfluxo abaixo:

E todo o processo pode ter resultados. Considere como exemplo uma alternativa do desenho acima:

Os resultados de uma função, notificação ou processo devem obedecer a um domínio que chamamos de Lookup Type. A cada opção do domínio chamamos de Lookup Code.
Como exemplo considere:


No nosso processo de exemplo, a função “Doc. Aprovado?” resulta no Lookup Type T_SIM_NÃO e o processo como um todo resulta no Lookup Type T_STATUS_COMPRA.
Quando uma atividade resultar em um Lookup Type, todos os Lookup Codes deste devem ser mapeados, ou como alternativa, a opção DEFAULT deve ser mapeada.



Os Lookup Codes PAPELARIA, VESTIARIO e COMESTIVEIS estão mapeados através da opção DEFAULT.
Existe ainda a opção ANY que obriga o fluxo a executar as atividades por ela conectadas ainda que todos os Lookup Codes estejam mapeados.

Um processo pode ainda ter “rendevous“ através das funções “And” e “Or”, conforme abaixo:


A função “Efetuar Compra” só será executada quando as funções “Gerente Analisou Pedido” e “Depto Planej. Foi Informado” resultarem SIM, se encontrando na função “And”.



A função “Efetuar Compra” será executada assim que uma das funções “Loja A foi Contactada?” ou “Loja B foi Contactada?” resultar SIM.

Uma notificação é um tipo de atividade de um processo e, assim como as funções, podem ser simplesmente informativas ou podem requerer resultados:


No desenho acima a notificação “Solicita Aprovação Gerente” resulta no Item Type T_SIM_NÃO.
Já as notificações “Informa Pedido Aprovado” e “Informa Pedido Rejeitado” são apenas informativas.
Uma notificação pode ainda ter um tempo máximo de execução/resposta, o qual chamamos de “Time Out”. Neste caso o resultado “Time Out” também deve ser mapeado.

Uma função pode ter, além de resultados, parâmetros de entrada.
Estes parâmetros devem ser mapeados em variáveis que, no Workflow, chamamos de Atributos.
Os atributos são lidos e atualizados em diversos pontos do fluxo.

No próximo post, vou publicar como os componentes acima ficam listados no Workflow Builder.

Postar um comentário