Alternative a Windows Workflow Foundation?


13

Utilizzo il WWF da un po 'come parte di un'applicazione interna di call center (ASP.NET), e mentre imparavo era una buona pratica per capire come funziona un sistema di workflow basato su macchina statale non è innamorato del WWF stesso. A mio parere si tratta di:

  1. eccessivamente complessa, in particolare per l'utilizzo in applicazioni web (tutto ciò che filettato roba runtime)
  2. Immaturo (mai lavorato con quell'orribile designer?)
  3. anemico nel suo set di funzionalità corrente

Qualcuno ha un suggerimento per una migliore struttura del flusso di lavoro basato su .NET? In particolare, sto cercando le seguenti caratteristiche:

  1. Stato basate sul computer (Stati mappatura alle azioni disponibili)
  2. Un focus sui permessi degli utenti (controllare chi ha accesso a quali azioni)
  3. La possibilità di eseguire flussi di lavoro come attività in background (ad esempio, per inviare promemoria per articoli che sono stati in un determinato stato per x giorni)

Questo è tutto ciò di cui ho bisogno. Non ho bisogno di essere in grado di "trascinare e rilasciare" alcuna attività o di disegnare visivamente il flusso. Sono perfettamente a mio agio nel scrivere il codice effettivo una volta che viene attivata un'azione particolare.

13

Si potrebbe provare Simple State Machine. Dovresti implementare autonomamente controllo degli accessi e timer di background, ma non dovrebbe essere un grosso problema. SSM è stato anche costruito per la frustrazione con WF. There are some other state machine implementations on Codeplex pure. Se uno di loro non va bene, esce dalla scatola, sono open source e dovrebbero avvicinarti abbastanza.

Sono pienamente d'accordo con te sulle macchine di stato in WF - non sono testabili, sono troppo complicate, il modello di threading è peculiare e difficile da seguire, e non sono sicuro che un visual designer avrebbe potuto essere concepito in modo poco corretto per progettare graficamente le macchine di stato. Penso che ciò possa essere dovuto al fatto che il concetto di macchina statica è stato appiccicato al runtime WF, che è stato progettato per macchine a stati sequenziali, a mio parere, con cui WF svolge un lavoro molto migliore. Il problema è che le macchine a stati non sono in realtà lo stesso animale di un flusso di lavoro sequenziale e avrebbero dovuto essere implementate di prima classe, perché la deformazione di WF per far sembrare che fossero supportate si è rivelata più o meno insostenibile, se non effettivamente inutilizzabile.

+2

Simple State Machine è intelligente. Se il suo modello si adatta ma preferiresti lavorare in C# rispetto a Boo, potresti anche considerare Stateless (http://stateless.googlecode.com) 16 ago. 092009-08-16 02:34:52

  0

Scusate, sono nuovo qui (e su .NET) quindi sono in ritardo al gioco. :) Concordo sul fatto che l'implementazione della macchina di stato in WF sia piuttosto complicata. Io stesso sto usando flussi di lavoro sequenziali perché corrispondono ai miei requisiti, ma la gestione degli errori è davvero complicata (per me) quando tutto ciò che è coinvolto include ancora requisiti di aggiornamento della GUI. Grazie per aver consigliato Simple State Machine - Mi piace quanto sia facile implementare flussi di lavoro sequenziali in WF, ma immagino che sia ancora abbastanza semplice in SSM, e forse la gestione degli errori sarà molto più semplice da implementare. 05 dic. 092009-12-05 16:14:32


0

Avete la possibilità di considerare BizTalk Server?


1

Prova Drools.NET


4

vorrei stare lontano da Drools.Net dal momento che è ultima SVN commit era nel settembre 2007. Sembra bello, ma sembra un po 'troppo rischioso per fare una così grande parte libreria del progetto quando sai che non attira più l'attenzione.


0

Mi è piaciuto molto lavorare con Oracle BPEL Process Manager. Fa parte di JDeveloper.

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


0

Si consiglia di dare un'occhiata al Jazz - http://jazz.codeplex.com/


0

Prova WF4.5. È stato completamente ridisegnato da .NET 4.0.


1

Dai un'occhiata allo Workflow Engine. È un framework di flusso di lavoro leggero per soluzioni .NET e Java. Ha un visual designer HTML5, controllo di versione, un'interfaccia utente decente e supporta una vasta gamma di database.


0

Prima di tutto dovresti cercare un motore che supporti BPMN. BPMN è uno standard nella gestione dei flussi di lavoro e dei processi e ben supportato da molti progetti. Secondo, dovresti pensare ai requisiti per un motore. Quando si guarda per un motore BPMN, ci sono due approcci differenti:

Task orientata

Questi motori (ad esempio JBoss BPM - jbpm) sono progettati per elaborare un dato di input per un modello di processo ben definito. Ogni attività nel modello dà il controllo a un pezzo di codice - un'implementazione standard o individuale. Il processo termina quando il token di processo raggiunge la fine del modello di processo (End-Event). Questo tipo di elaborazione richiede millisecondi. Il motore può essere utilizzato per lavori batch o per elaborare dati con un flusso complesso orientato al processo.

motori di workflow umani-Centric Event-Driven sono event driven (ad esempio Imixs-Workflow). Questo è un tipo di macchina a stati ma offre in genere molte più funzionalità. È possibile avviare un nuovo processo, assegnando il proprio oggetto business all'attività iniziale (definita dall'evento start). Il motore del flusso di lavoro consente di attivare eventi assegnati a ciascuna attività, definiti nel modello. Ogni evento (Intermediate CatchEvent) attiva il motore del flusso di lavoro per trasferire il processo in esecuzione all'attività successiva (stato). Fino a quando non viene attivato alcun nuovo evento, il processo "attende" nell'attività corrente (stato). Un processo di approvazione è un tipico esempio di questo tipo di flusso di lavoro incentrato sull'uomo.

È possibile trovare un elenco di motori here.