Neste artigo abordaremos o Windows Workflow Foundation (WWF) da versão 4.0, encontrada no Visual Studio 2010. Portanto vale ressaltar que o WWF 4.0 não é compatível com as versão anteriores do Framework, sendo assim, as Activities e Services do WWF 4.0 não são compatíveis ​​com as versões anteriores

Um workflow é uma série de etapas de programação. Cada etapa é modelada em workflow como uma atividade.

Hoje em dia, há um número crescente de programas que utilizam Windows Workflow Foundation como solução técnica chave para a execução informatizada dos processos de negócios das empresas e clientes em geral.

Um componente fundamental de um projeto de Workflow é o uso de extensões para configurar o ambiente em que as atividades de Workflow irão operar. O .Net Framework oferece uma biblioteca de atividades e permite aos analistas criarem atividades personalizadas como funcionalidades adicionais.

O Workflow Designer é construído usando o Windows Presentation Foundation (WPF) o que melhora a experiência de designer das Activities e melhora o desempenho para Workflows grandes e complexos.

Alguns dos principais critérios para utilização de Workflow são listados abaixo:

  • Representação visual do processo;
  • Pode ser modificada dinamicamente em tempo de execução;
  • Pode ser de longa duração.

As Activities podem ser criadas visualmente em Workflows usando o Workflow Designer, uma interface de design que funciona dentro do Visual Studio. O designer também pode ser hospedado em outras aplicações.

Encapsular as funcionalidades de um programa em Activities permite ao desenvolvedor criar aplicações mais gerenciáveis, pois cada componente da execução pode ser desenvolvido como um objeto da Common Language Runtime cuja execução será gerida pelo Runtime do Workflow.

Veja abaixo uma figura Ilustrativa que demonstra visualmente como a tecnologia WWF 4.0 está posicionada no .Net Framework 4.0:

WWF no .Net

Figura 1: WWF no .Net

Veja o leitor que o WWF se encontra na caixa “Services”, juntamente com outras tecnologias.

O WWF possui um poderoso “engine”, que provê as seguintes funcionalidades:

  • Planejamento e execução de Workflows e Activities, que podem ser executados usando um de três métodos:
    - Usando WorkflowInvoker, que executa Workflows em Threads (isto é, uma nova Thread não é criada para o Workfolow). Isto significa que o processo de chamada irá aguardar o fluxo de trabalho para completar.
    - Usando WorkflowApplication, que executa Workflows em uma nova thread (de modo que o aplicativo de chamada não vai interromper sua execução, enquanto o fluxo de trabalho é executado).
    - Usando WorkflowServiceHost, que irá executar o Workflows como um serviço WCF. O serviço de Workflows resultante normalmente usa dados da rede como insumos para atividades contidas.
  • Gerenciamento de fluxos de execução entre as atividades. Execuções de fluxo de trabalho podem ser modeladas visualmente no designer, usando activities como fluxograma, IF, Sequence, Pick e Parallel:
  • Persistência de Workflows. Persiste um fluxo de trabalho salvando os dados do Workflow em um Banco de Dados ao algo do gênero, depois descarrega o Workflow na memória. O Workflow pode ser recarregado após um período de tempo especificado, ou quando o Workflow recebe uma mensagem. Ao remover Workflows ociosos da memória, o engine workflow pode aumentar muito o número de Workflows ativos de um sistema, aumentando a escalabilidade.
  • Gerenciamento de dados para a execução de Activities. Os dados são consumidos por Activities usando argumentos e variáveis, o que mantém o tempo de execução. Usando argumentos e variáveis para armazenar dados para Activities significa que o tempo de execução tem acesso ao estado completo de uma Activities no caso de precisar ser persistido. O tempo de execução também pode correlacionar as mensagens recebidas e os dados a uma instância de um Workflow específico no caso de vários Workflows em execução simultânea.

Como dito anteriormente, as versões do WWF do .Net não são compatíveis. Algumas das diferenças entre WWF 3.5 e 4.0 são os seguintes:

  • No WWF 3.5, havia uma classe de código e uma classe designer. A classe de código continha a implementação para os objetos CodeActivity. Continha também a definição dos membros da classe e o código do manipulador de eventos. No WF 4.0, não há nenhuma classe de código.
  • Não há mais Workflow de State Machine.
  • No WWF 4.0 foi adicionado o uso de variáveis e argumentos, porque não há arquivo de código.
  • Não há nenhuma classe WorkflowRuntime. Anteriormente, era permitido criar a classe WorkflowRuntime e então chamar seu método CreateWorkflow. Com WWF 4.0, o código faz simplesmente a seguinte chamada: WorkflowInvoker.Invoke (novo Workflow1 ());

O propósito deste artigo é servir de iniciação aos desenvolvedores que estão iniciando o processo de aprendizagem desta tecnologia, portanto criaremos dois programas bastante simples, sendo o primeiro o famoso “HelloWorld”.

Inicie o Visual Studio 2010, crie um novo projeto do tipo Workflow Console Application e o nomeie como HelloWorld.

Criando o Projeto

Figura 2: Criando o Projeto

O Visual Studio gera um arquivo Program.cs e arquivo Workflow1.xaml que é usado pelo Console Application e o Workflow.

Demonstração dos arquivos criados

Figura 3: Demonstração dos arquivos criados

Abra o arquivo Workflow1.xaml, perceba que ele está vazio. Arraste uma atividade WriteLine:

Adicionando a atividade WriteLine

Figura 4: Adicionando a atividade WriteLine

Agora vá à aba “Propriedades” do objeto “WriteLine”e insira os seguintes valores nas propriedades DisplayName e Text:

Preenchendo as propriedades

Figura 5: Preenchendo as propriedades

Agora abra o arquivo program.cs e faça a seguinte codificação:

Listagem 1: Verificando a chamada padrão do Workflow criado


class Program
{
static void Main(string[] args)
{
WorkflowInvoker.Invoke(new Workflow1());

Console.WriteLine("Pressione uma tecla para sair");
Console.ReadLine();
}
}

Agora rode a aplicação e você terá o seguinte output:

Output da aplicação

Figura 6: Output da aplicação

Com isso finalizamos nosso artigo de introdução ao WWF 4.0, onde vimos um pouco de teoria e criamos o nosso primeiro projeto de WWF. Agora que começamos a nos habituar com o “jeitão” do WWF 4.0 podemos nos aprofundar um pouco mais nos conhecimentos dessa tecnologia.

Abraços.