# Fluxo de trabalho

Fluxo de Trabalho (em inglês, workflow) é a seqüência de passos necessários para se automatizar processos de negócio, de acordo com um conjunto de regras definidas, permitindo que sejam transmitidos de uma pessoa para outra.$^[$

## Conceito

Segundo a WfMC (Workflow Management Coalition), fluxo de trabalho é a sistematização do processo de negócio, na sua totalidade ou em partes, onde documentos, informações ou tarefas são passadas de um participante para o outro para execução de uma ação, de acordo com um conjunto de regras de procedimentos.
A sistematização do processo de negócio identifica as várias atividades do processo, regras de procedimento e controle de dados associados para gerenciar o fluxo durante a ativação do processo.
Muitas instâncias individuais fazem parte de um mesmo processo. Todas devem atuar harmonicamente para se tornarem operacionais, cada uma associada a um conjunto específico de dados relevantes.

## Tipos

Além dos vários tipos de Workflow citados (ad hoc, produção e transação, administrativo etc.), seguem abaixo os dois tipos a ser mencionados.

## Orientado a Objetos

Objeto é a combinação de atributos e métodos num único objeto: o conjunto de atributos, ou dados, e instruções sobre como os dados devem ser processados, estocados, recuperados e visualizados pelo usuario.
Os atributos são os padrões de fluxo de trabalho, os casos ou instâncias, sendo as tarefas e formulários e o comportamento é a forma de processá-los.
Permite o desenvolvimento de aplicações completa. Características:
* Encapsulamento: é a possibilidade de que o software combinem múltiplos procedimentos em uma única representação procedural.
* Herança: é a possibilidade de se criar novos procedimentos baseados em regras e propriedades herdadas de outros procedimentos já existentes.
* Integridade Referencial: é a garantia de que a informação passada por herança seja igual à informação que a gerou.
* Procedimentos Compostos: é a ferramenta que o software deve ter para permitir a construção de procedimentos baseados em outros procedimentos.
* Bibliotecas procedurais: é a coleção de procedimentos que podem ser recombinados e reusados em outros procedimentos.
* Ambiente gráfico baseado em ícones: é a possibilidade de usar ícones para desenvolver as aplicações que possibilitarão automatizar o fluxo de trabalho. Com isso é permitido aos programadores de Workflow manipularem por meio de ícones, elementos como tarefa, usuários, processos, procedimentos e rotinas.

## Sistemas de gestão de fluxos de trabalho

Os sistemas de gestão de fluxos de trabalho (em inglês, WfMS – Workflow Management Systems) se inserem no contexto geral de programas de computador cujo objetivo é o suporte ao trabalho cooperativo, onde se enfatiza a interação entre usuários, e não apenas a interação usuário-sistema.
A gestão de fluxos de trabalho pode usar um conjunto de ferramentas para administrar, monitorar, controlar as aplicações clientes do fluxo, as aplicações invocadas, ferramentas de processos entre outras, e passa por várias transformações buscando melhorar processos de sua própria gestão.
As ferramentas utilizadas para gestão de fluxos apresentam algumas deficiências; por exemplo, podem não descrever processos de exceções, apresentar interações pouco flexíveis e não escalarem.

## Comparativo entre fluxos de trabalho e processos de software

Fluxos de trabalho e processos de engenharia de sistemas possuem pontos em comum. Ambos têm como objetivo definir processos, sendo que o primeiro define processos de negócios enquanto o segundo define o processo de produção de programas de computador.
O conceito de fluxo de trabalho surgiu no campo dos negócios, com a necessidade de definir de uma maneira formal as atividades executadas na empresa. Paralelamente os processos de software surgiram no meio acadêmico, com o objetivo de definir formalmente como se deve ser produzir um programa.