Esse artigo faz parte da revista Java Magazine edição 44. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

Workflows em Java

Criando e mantendo fluxos de trabalho em Java

Implemente soluções de workflow, utilizando a ferramenta OSWorkflow, para automatizar processos.

Com a crescente necessidade de automação dos processos nas organizações, a demanda por aplicações com características de um sistema de workflow torna-se cada vez mais significativa. Diversos processos presentes no dia-a-dia podem ser automatizados, desde atividades simples, como solicitação e aprovação de férias, até as mais complexas, como o acompanhamento de compras em lojas de comércio eletrônico.

Neste segundo caso, por exemplo, o processo geralmente assume um caráter de grande importância estratégica. Os gestores passam a necessitar de ferramentas para realizar análises sobre o fluxo, identificando, dentre outros detalhes, quais passos atrasam, ou qual setor é mais ocioso, com isso apoiando a tomada de decisões.

Desenvolver soluções para atender a essas demandas, que possuem requisitos específicos, pode não ser uma tarefa trivial, principalmente se a implementação partir "do zero". Portanto, entender como modelar um workflow e utilizar bibliotecas que suportem as funcionalidade necessárias se torna fator crítico de sucesso.

Neste contexto, abordaremos neste artigo conceitos sobre workflow e realizaremos a análise, passo-a-passo, da implementação de uma solução adotando o OSWorkflow, da OpenSymphony.

Conceitos de workflow

Conforme a Workflow Management Coalition (WMC), organização internacional especializada no assunto, “workflow” é a automação de um processo de negócio, no todo ou em parte, durante o qual documentos, informações ou tarefas são transferidas entre participantes do processo, de acordo com um conjunto definido de regras, para alcançar um determinado objetivo.

Pode-se dizer que o objetivo principal de uma solução de workflow é aumentar a eficiência de processos, tanto os críticos e rotineiros quanto os eventuais, e a efetividade das pessoas que trabalham em conjunto para executá-los. Ou seja, quando adotamos uma solução desse tipo, esperamos alcançar vários benefícios. Por exemplo, o aumento de produtividade com a eliminação de passos desnecessários; o melhor controle de processos com a padronização do método de trabalho; e maior flexibilidade com a possibilidade de alterar o fluxo de negócio de maneira mais simples.

De forma resumida, pode-se considerar que um workflow é composto por um conjunto de passos, conectados entre si através de transições. Cada passo possui uma ou mais ações. Essas ações podem ser executadas pelos usuários, como o preenchimento de um formulário eletrônico; ou pelo próprio sistema, como a execução de um cálculo ou envio de e-mail. O resultado da execução de uma ação pode resultar na mudança de passo, através de uma transição, ou então no fim do workflow. A Figura 1 exemplifica esta idéia.

Figura 1. Exemplo Simplificado de Workflow.

Outro importante conceito envolve a idéia de Sistemas de Gerenciamento de Workflow (Workflow Management Systems – WFM). Um WFM define e gerencia a execução de um ou vários workflows, através da utilização de softwares que interpretam como os processos devem ser executados e em qual ordem. A maior parte dos WFMs interage com outras aplicações, como bancos de dados e serviços de e-mail, estruturando um fluxo que envolve diversos sistemas independentes. Os WFMs são conhecidos também como engines de workflow.

Um exemplo: Loja virtual

Finalizando esta primeira parte, modelaremos um workflow simplificado para nosso estudo de caso: uma transação eletrônica em uma loja virtual (veja a Figura 2).

O workflow inicia quando o cliente finaliza uma compra, através de uma aplicação web, colocando automaticamente o pedido no passo "Análise de Pedido". Neste passo, os dados sobre cadastro do cliente e estoque são verificados de forma automática. Caso não haja impedimentos, o pedido é encaminhado para o passo “Processamento”; caso contrário, é enviado para o passo “Cancelados”. No passo “Processamento”, pode ocorrer a interação com sistemas externos para realizar a cobrança, passando o pedido para o passo “Expedição”. Neste passo, o sistema aguarda a interação do expedidor para informar se o pedido já foi enviado. E por fim, após a Expedição, o pedido vai para o passo de “Finalizados”, concluindo o workflow.

O que chamamos de passo, neste artigo, também pode ser encontrado na literatura como atividade, tarefa ou nó.

Figura 2. Workflow da Aplicação de Exemplo.

Iniciando com o OSWorkflow

O OSWorkflow é uma biblioteca open source em Java, desenvolvida pela OpenSymphony, que provê toda a infra-estrutura necessária para a definição e o gerenciamento de workflows.

O OSWorkflow não é o único engine de workflow livre e desenvolvido em Java. Entre outras ferramentas com este propósito e características, destacam-se o JBPM (da JBoss) e Enhydra Shark. Verifique o quadro de links para os sites destas ferramentas.

A característica mais marcante do OSWorkflow é a flexibilidade. Ele não é acoplado, por padrão, a nenhuma tecnologia, seja de banco de dados, de protocolo ou qualquer outra. Grande parte da integração com outras tecnologias deve ser realizada pelo próprio desenvolvedor. Além disso, workflows podem ser criados através da edição de arquivos em formato XML, não havendo a necessidade de se possuir uma ferramenta gráfica para isso.

Esta flexibilidade, entretanto, possui aspectos negativos, pois é necessário investir um tempo maior na customização da ferramenta. Felizmente, dependendo das necessidades de sua aplicação, os ganhos em flexibilidade podem compensar bastante. Com o OSWorkflow é possível, dentre outras coisas:

·         Definir a forma como os dados manipulados serão persistidos, para isto implementando interfaces específicas ou adotando as opções já existentes, como o Hibernate; ...

Quer ler esse conteúdo completo? Tenha acesso completo