De que se trata o artigo
Este artigo tem por objetivo demonstrar a construção de aplicações que automatizam processos de negócio dentro .NET framework. A fim de se cumprir tal objetivo será utilizada a tecnologia Workflow Foundation, uma tecnologia que visa a automação de processos de negócios.
Em que situação o tema é útil
A tecnologia conhecida como Windows Workflow Foundation, pode ser uma excelente alternativa para cenários que exijam a automação de processos de negócio. Este mecanismo da plataforma .NET permite que as atividades que caracterizam um processo sejam especificadas graficamente, com o mesmo valendo para as interações entre as diferentes etapas consideradas: ao modelo visual gerado a partir disto dá-se o nome de workflow.
Workflow Foundation - Utilizando Workflows para a modelagem e automação de processos de negócio
A construção de aplicações de software que automatizem processos de uma organização pode se revelar, em muitos casos, como uma tarefa bastante árdua. As dificuldades podem se acentuar em cenários nos quais a lógica de negócios esteja sujeita a modificações frequentes, ou mesmo, o processo em questão resulte na execução de atividades por prolongados períodos de tempo. Além disso, este tipo de funcionalidade conta normalmente com uma codificação extensa, o que dificulta não apenas a manutenção das estruturas existentes, como também a compreensão do processo como um todo. A representação gráfica por meio de um workflow simplifica não apenas o entendimento do processo em questão, como também permite a obtenção de um código-fonte mais conciso e flexível diante de prováveis mudanças.
A rotina de uma organização compreende processos de negócio voltados aos mais variados objetivos, com a execução conjunta das atividades que englobam os mesmos permitindo a continuidade das operações. Um processo deve ser entendido, em termos gerais, como um agrupamento de tarefas relacionadas, sendo que a realização das mesmas visa atender a uma demanda ou meta previamente traçada.
Levando em conta as peculiaridades do ambiente empresarial, nota-se que são comuns tanto situações nas quais existem processos completamente automatizados e que dependem fortemente de recursos de software, assim como procedimentos cujas atividades são desempenhadas apenas por seres humanos, e sem a utilização de meios eletrônicos. Existe ainda a possibilidade de cenários mistos, nos quais atividades manuais são combinadas com tarefas automatizadas, buscando-se assim o cumprimento de um determinado objetivo de negócio.
Diante de um contexto caracterizado por profundas e constantes alterações, muitos gestores vêm focando na automação de diversos processos em suas respectivas áreas, buscando com isto um maior nível de eficiência operacional em atividades corriqueiras. Tal automação normalmente se dá, por meio da adoção de uma solução de software direcionada ao atendimento de uma necessidade específica.
É comum que aplicações concebidas para a automação de um processo (ou de partes deste), apresentem um código extenso e que dificulte sua compreensão. Isto acaba por dificultar a manutenção de tais soluções quando da necessidade de modificação de um processo, sobretudo quando se toma como base a estrutura complexa com a qual as mesmas foram construídas.
Considerando todos estes fatores, inúmeras alternativas foram concebidas visando à automação de processos de negócio por meio de recursos de software. A metodologia conhecida como BPM (Business Process Modeling) é um exemplo, oferecendo em suas definições uma série de técnicas para a modelagem de processos. Inúmeras ferramentas de mercado encapsulam elementos deste paradigma, contando normalmente com mecanismos para a modelagem gráfica de fluxos de atividades.
A Microsoft disponibiliza algumas alternativas voltadas à automação de processos, em todos os exemplos citados a seguir, a especificação do fluxo de atividades é realizada graficamente, sendo que ao modelo resultante dá-se o nome de workflow:
· BizTalk Server: plataforma centralizada para a integração e o gerenciamento de processos de negócio;
· Windows Workflow Foundation: permite a construção de workflows para uso dentro da plataforma .NET;
· Integration Services: componente do SQL Server que permite a construção de soluções para a manipulação de dados, empregando para isto workflows.
O objetivo deste artigo é abordar a construção de aplicações voltadas à automação de processos de negócio, fazendo para isto uso da tecnologia Workflow Foundation (atualmente na versão 4.0). Para isto, serão apresentados conceitos a respeito deste framework, bem como implementada uma solução de exemplo que demonstre o uso do mesmo.
BPM (Business Process Modeling) é uma metodologia que foca na modelagem de processos de negócio a partir do mapeamento das atividades que compõem os mesmos, assim como dos relacionamentos que se estabelecem entre estas últimas.
Uma das linguagens disponíveis para a representação de fluxos de atividades é a BPMN (Business Process Model and Notation). Tal linguagem é na verdade, uma especificação para a modelagem gráfica de processos de negócio, sendo mantida pela OMG (Object Management Group, consórcio formado por grandes companhias do mercado de tecnologia como Microsoft, Oracle e IBM e que está voltado para o estabelecimento de padrões).
Outra especificação a ser citada é a BPEL (Business Process Execution Language). Trata-se de uma linguagem para execução de modelos contendo processos de negócios, sendo mantida por um grupo conhecido como OASIS (Organization for the Advancement of Structured Information Standards).
Quando utilizar workflows?
Recomendam-se que workflows sejam construídos em .NET em cenários nos quais, o processo em questão é de longa duração, ou ainda, sofra alterações constantemente em sua lógica de negócio. A possibilidade de representar visualmente o processo que se está automatizando pode também, em muitos casos, influenciar na decisão por esta tecnologia.
Um exemplo de processo de longa duração seriam os diversos passos que envolvem a aprovação de despesas: inicia-se pelo lançamento por parte de um funcionário de um gasto que ainda será efetuado, passando ainda por etapas de aprovação do departamento responsável, e por fim, da área financeira da organização. Processos da área de suprimentos e da área produtiva, também representam situações que se enquadram neste perfil. Considerando tudo isto, as aplicações responsáveis pelo controle destes tipos de procedimentos, precisam ser capazes de controlar prováveis paradas entre diferentes etapas. Implementar partindo do zero, e com técnicas convencionais não é nada fácil, sendo o framework Workflow Foundation uma alternativa a demandas como estas.
Outros cenários válidos para o uso de workflows são situações nas quais, aspectos legais conduzem devido aos mais variados motivos, a mudanças frequentes nas regras de funcionamento de processos. Mudanças podem ser efetuadas de maneira rápida num workflow, dispensando muitas vezes novos trechos extensos de código ao longo de um projeto.
Windows Workflow Foundation: uma visão geral
O framework Workflow Foundation pode ser descrito, basicamente, como uma tecnologia voltada à construção de workflows voltados que implementam de forma automatizada partes, ou ainda, todo um processo de negócio. A elaboração de um workflow acontece dentro do Visual Studio, o qual conta com um editor gráfico para a modelagem das interações entre diferentes tipos de atividade.
Workflows podem ser gerados em uma biblioteca separada para posterior reuso por outras soluções em .NET, dentro de uma aplicação, ou ainda, como um serviço WCF (a aplicações deste último tipo dá-se o nome de Workflow Services). O modelo que corresponde a um workflow é um arquivo de extensão .xaml (ou .xamlx no caso de um Workflow Service).
O elemento básico para a montagem de um workflow é uma atividade. O .NET Framework disponibiliza dentro do namespace System.Activities diversos de tipos de atividades que podem ser facilmente configuradas para a construção de processos.
Basicamente, workflows criados através deste framework podem ser classificados em 2 tipos:
· Sequential workflow: o fluxo de execução das atividades ocorre passo-a-passo, sendo possível ainda o uso de desvios condicionais dentro da lógica que se está elaborando. Seu uso é recomendado na modelagem de processos mais simplificados e sem intervenção humana, sendo equivalentes a rotinas escritas de maneira procedural dentro de uma linguagem de programação. Dentro deste modelo, as diversas atividades que constituem o processo são agrupadas dentro de uma atividade principal do tipo Sequence;
· Flowchart workflow: permite a modelagem de um processo num padrão gráfico similar a um diagrama de atividades UML. São úteis na representação de processos com uma estrutura sequencial, mas que também contam com loops que desviam o fluxo de execução para estados anteriores. Diferentemente de um Sequential workflow, este tipo de workflow é recomendável na modelagem de processos que também contem com interações humanas. Em um Flowchart workflow as diversas atividades que fazem parte de um processo são agrupadas dentro de uma atividade do tipo Flowchart.
As interações entre as atividades que compõem um workflow envolverão, em grande parte dos casos, o fluxo de informações de um ponto a outro do processo em questão. Assim, procurando oferecer suporte ao intercâmbio de dados entre as partes que constituem um workflow, a tecnologia Workflow Foundation disponibiliza recursos como variáveis, argumentos e expressões, utilizando para isto dos mesmos conceitos presentes numa linguagem de programação convencional.
Variáveis apresentam, dentro de um workflow, um escopo a partir do qual a utilização das mesmas é válida. Pode-se definir que tal escopo corresponda a todo o workflow, ou ainda, que a utilização de uma variável seja possível apenas dentro de um conjunto de atividades (as quais podem estar agrupadas sob a forma de uma atividade do tipo Sequence ou Flowchart).
As interações entre as atividades que constituem um workflow envolverão o fluxo de informações de um ponto a outro do processo em questão. Assim, buscando oferecer suporte ao intercâmbio de dados entre as partes que constituem um workflow, a tecnologia Workflow Foundation disponibiliza mecanismos como variáveis, expressões (baseadas em VB Expressions) e argumentos (de entrada, de saída, ou ainda, uma combinação destas dois características), valendo-se dos mesmos conceitos existentes numa linguagem de programação convencional.
De acordo com a finalidade a que se destinam, os variados tipos de atividades nativos do framework .NET 4.0 podem ser agrupados nas seguintes categorias:
· Control Flow: oferece construções para o controle de fluxo em modelos de processos do tipo Sequential workflow;
· Flowchart: permite gerenciar o fluxo de execução em modelos do tipo Flowchart workflow;
· Messaging: dentro desta categoria são disponibilizadas atividades que possibilitam a integração entre as tecnologias Workflow Foundation e WCF;
· Runtime: conta com atividades para persistir uma instância de um workflow, ou ainda, encerrar a execução do mesmo a partir de um determinado ponto;
· Primitives: disponibiliza recursos de uso geral para a invocação de métodos, atribuição de valores a uma variável, interrupção da execução do workflow por um período de tempo, etc.;
· Transaction: possibilita o uso de controles transacionais dentro de instâncias de workflows;
· Collection: oferece suporte para a manipulação de coleção de objetos (adição, exclusão de itens, etc.);
· Error Handling: disponibiliza recursos para a manipulação de exceções (tratamento, geração de erros) dentro de um workflow;
· Migration: através do tipo Interop presente nesta categoria é possível a execução de atividades criadas a partir do .NET framework 3.5.
Além das diversas categorias aqui mencionadas, atividades customizadas podem ser criadas herdando-se para isto do tipo CodeActivity.
XAML é a sigla para o termo em inglês para Extensible Application Markup Language. Trata-se de uma linguagem declarativa baseada em XML, a qual foi concebida pela Microsoft para uso na definição de elementos de interfaces gráficas, data binding, eventos, dentre outros aspectos. É empregada em larga escala, dentro da plataforma .NET, em soluções que envolvam as tecnologias Windows Presentation Foundation (WPF), Workflow Foundation e Silverlight.
Benefícios do uso de workflows
O objetivo desta seção é apresentar algumas das vantagens resultantes do uso do framework Workflow Foundation na construção de softwares concebidos para a automação de processos.
Conforme já discutido, representar graficamente um processo simplifica os esforços empregados na modelagem do mesmo, visto que este tipo de prática, por ser mais intuitiva, possibilita uma maior compreensão das atividades envolvidas. O funcionamento de um workflow pode ser modificado através da adição e/ou remoção de atividades, algo que seria uma tarefa um pouco mais trabalhosa em uma solução que conte com uma codificação extensa.
A execução de atividades paralelas pode ser modelada graficamente, o que é bastante útil, sobretudo quando se leva em consideração a complexidade em se desenvolver uma lógica para execução simultânea de diversas rotinas de software. Assim, este tipo de recurso contribui em muito para tornar mais produtiva à construção da lógica de processos que envolvam paralelismo.
O uso de transações e a manipulação de exceções são aspectos recorrentes em aplicações corporativas. A tecnologia Workflow Foundation também dispõe de mecanismos para controle transacional e tratamento de erros, possibilitando assim a construção mais simplificada de soluções que empreguem estes tipos de recursos.
A monitoração do que acontece em workflows pode ser feita por meio do recurso conhecido como tracking. Através desta técnica, diversas informações relativas à execução de instâncias de workflow podem ser gravadas em um meio de persistência (como uma base de dados, por exemplo). Isto pode se revelar como um recurso de bastante utilidade no acompanhamento, ou no diagnóstico de problemas com um workflow que já se encontre em operação.
Além dos recursos disponibilizados por default pela tecnologia Workflow Foundation, a mesma permite que suas capacidades sejam estendidas a partir da construção de atividades customizadas. Estruturas deste tipo derivam de uma classe abstrata chamada CodeActivity. Importante ressaltar que uma atividade customizada em nada difere dos outros tipos de atividades disponibilizados pelo .NET, este tipo de construção pode receber e retornar parâmetros, ou mesmo, devolver valores mediante execução.
Outro benefício das atividades customizadas está em seu potencial de reuso: uma estrutura deste tipo pode ser empregada ao longo de outras soluções que dependam das funcionalidades definidas pela mesma.
É importante mencionar também os aspectos positivos da integração entre as tecnologias Workflow Foundation e WCF. Workflows ao serem expostos como Web Services, por exemplo, têm seu potencial de reuso aumentado significativamente já que podem ser utilizados por qualquer tipo de aplicação capaz de consumir um serviço. Além disso, a utilização de padrões como SOAP em tais soluções, possibilita a interoperabilidade com outras plataformas bastante heterogêneas (Java e mainframe, por exemplo).
...