Pergunta

Eu uso o WWF há algum tempo como parte de um aplicativo interno de call center (ASP.NET) e, enquanto aprendia, era uma boa prática para entender como um sistema de fluxo de trabalho baseado em máquina de estado deve trabalho, definitivamente não estou apaixonado pelo próprio WWF.Na minha opinião é:

  1. Excessivamente complexo, especialmente para uso em aplicativos da web (todas aquelas coisas de tempo de execução encadeadas)
  2. Imaturo (já trabalhou com aquele designer horrível?)
  3. Anêmico em seu conjunto de recursos atual

Alguém tem uma sugestão para uma estrutura de fluxo de trabalho baseada em .NET melhor?Especificamente, estou procurando os seguintes recursos:

  1. Baseado em máquina de estado (mapeamento de estados para ações disponíveis)
  2. Foco nas permissões do usuário (controlando quem tem acesso a quais ações)
  3. A capacidade de executar fluxos de trabalho como tarefas cronometradas em segundo plano (por exemplo, para enviar lembretes para itens que estão em um determinado estado há x dias)

Isso é realmente tudo que preciso.Não preciso "arrastar e soltar" nenhuma atividade ou projetar visualmente o fluxo.Sinto-me perfeitamente confortável escrevendo código real quando uma ação específica é acionada.

Foi útil?

Solução

Você poderia tentar Máquina de Estado Simples.Você mesmo teria que implementar o controle de acesso e os temporizadores de segundo plano, mas isso não deveria ser um grande problema.O SSM também foi construído a partir da frustração com a WF. Existem algumas outras implementações de máquinas de estado no Codeplex também.Se um deles não se enquadrar no projeto, eles são de código aberto e devem chegar perto o suficiente.

Concordo plenamente com você sobre máquinas de estado no WF - elas não são testáveis, são muito complicadas, o modelo de threading é peculiar e difícil de seguir, e não tenho certeza se um designer visual poderia ter sido mais mal concebido para projetar máquinas de estado graficamente.Acho que isso pode ocorrer porque o conceito de máquina de estado parece estar incorporado ao tempo de execução do WF, que foi projetado para máquinas de estado sequenciais, algo com o qual o WF faz um trabalho muito melhor, na minha opinião.O problema é que as máquinas de estado não são realmente o mesmo animal que um fluxo de trabalho sequencial e deveriam ter recebido uma implementação própria de primeira classe, porque a distorção do WF para fazê-lo parecer apoiá-las acabou sendo mais ou menos insuportável, se não realmente inutilizável.

Outras dicas

Eu ficaria longe do Drools.Net, já que seu último commit do SVN foi em setembro de 2007.Parece legal, mas parece um pouco arriscado incluir uma biblioteca tão grande em seu projeto quando você sabe que ela não recebe mais atenção.

Experimente o Drools.NET

Dê uma olhada em Mecanismo de fluxo de trabalho.É uma estrutura de fluxo de trabalho leve para soluções .NET e Java.Possui um designer visual HTML5, controle de versão, uma UI decente e suporta uma ampla variedade de bancos de dados.

Você tem a opção de considerar o BizTalk Server?

Gostei bastante de trabalhar com o Oracle BPEL Process Manager.Faz parte do JDeveloper.

http://www.oracle.com/technology/bpel/index.html http://gemsres.com/story/dec06/313602/jellema-fig1.jpg

Você pode querer dar uma olhada no Jazz - http://jazz.codeplex.com/

Experimente o WF4.5.Foi completamente redesenhado desde o .NET4.0.

Primeiro de tudo você deve procurar um motor que suporte BPMN.BPMN é um padrão em gerenciamento de fluxo de trabalho e processos e bem suportado em muitos projetos.Em segundo lugar, você deve pensar nos requisitos para um motor.Quando você procura um mecanismo BPMN, existem duas abordagens diferentes:

Orientado a tarefas

Estes motores (por ex. JBoss BPM - jbpm) são projetados para processar dados de entrada por meio de um modelo de processo bem definido.Cada tarefa no modelo dá controle a um trecho de código - seja um padrão ou uma implementação individual.O processo termina quando o token do processo atinge o final do modelo de processo (End-Event).Esse tipo de processamento leva milissegundos.O mecanismo pode ser usado para trabalhos em lote ou processamento de dados com um fluxo complexo orientado a processos.

Orientado por eventos

Os mecanismos de fluxo de trabalho centrados no ser humano são orientados por eventos (por exemplo, Fluxo de trabalho Imixs).Este é um tipo de máquina de estado, mas normalmente oferece muito mais funcionalidades.Você pode iniciar uma nova instância de processo atribuindo ao seu objeto de negócios a tarefa inicial (definida pelo evento de início).O mecanismo de fluxo de trabalho permite acionar eventos atribuídos a cada tarefa, definidos em seu modelo.Cada evento (Intermediate CatchEvent) aciona o mecanismo de fluxo de trabalho para transferir a instância do processo em execução para a próxima tarefa (estado).Até que nenhum novo evento seja acionado, a instância do processo 'espera' na tarefa (estado) atual.Um processo de aprovação é um exemplo típico desse tipo de fluxo de trabalho centrado no ser humano.

Você pode encontrar uma lista de motores aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top