Domanda

Ho utilizzato WWF per un po' come parte di un'applicazione interna per call center (ASP.NET) e mentre l'ho imparato è stata una buona pratica per comprendere come funziona un sistema di flusso di lavoro basato su una macchina a stati Dovrebbe lavoro, sicuramente non sono innamorato del WWF in sé.Secondo me è:

  1. Estremamente complesso, soprattutto per l'uso all'interno di app Web (tutte quelle cose di runtime threaded)
  2. Immaturo (hai mai lavorato con quell'orribile designer?)
  3. Anemico nel suo attuale set di funzionalità

Qualcuno ha un suggerimento per un migliore framework del flusso di lavoro basato su .NET?Nello specifico cerco le seguenti caratteristiche:

  1. Basato sulla macchina a stati (mappatura degli stati sulle azioni disponibili)
  2. Un focus sulle autorizzazioni utente (controllare chi ha accesso a quali azioni)
  3. La possibilità di eseguire flussi di lavoro come attività in background a tempo (ad esempio, per inviare promemoria per elementi che sono rimasti in un determinato stato per x giorni)

Questo è davvero tutto ciò di cui ho bisogno.Non ho bisogno di poter "trascinare e rilasciare" alcuna attività o progettare visivamente il flusso.Sono perfettamente a mio agio nello scrivere il codice effettivo una volta attivata una particolare azione.

È stato utile?

Soluzione

Potresti provare Macchina a stati semplice.Dovresti implementare tu stesso il controllo degli accessi e i timer in background, ma non dovrebbe essere un grosso problema.La SSM è nata anche dalla frustrazione nei confronti del WF. Esistono altre implementazioni della macchina a stati su Codeplex anche.Se uno di questi non si adatta alle aspettative, sono open source e dovrebbero avvicinarti abbastanza.

Sono pienamente d'accordo con te riguardo alle macchine a stati 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 più scadente per la progettazione di macchine a stati graficamente.Penso che ciò possa essere dovuto al fatto che il concetto di macchina a stati sembra attaccato al runtime di WF, che è stato progettato per macchine a stati sequenziali, qualcosa con cui WF fa un lavoro molto migliore, secondo me.Il problema è che le macchine a stati non sono in realtà lo stesso animale di un flusso di lavoro sequenziale, e avrebbero dovuto ricevere una propria implementazione di prima classe, perché la deformazione di WF per far sembrare che le supportasse si è rivelata più o meno insostenibile, se non addirittura inutilizzabile.

Altri suggerimenti

Starei lontano da Drools.Net poiché il suo ultimo commit SVN è stato nel settembre 2007.Sembra carino ma sembra un po' troppo rischioso rendere una libreria così grande parte del tuo progetto quando sai che non riceve più alcuna attenzione.

Prova Drools.NET

Dai un'occhiata a Motore del flusso di lavoro.È un framework di flusso di lavoro leggero per soluzioni .NET e Java.Ha un designer visivo HTML5, controllo della versione, un'interfaccia utente decente e supporta un'ampia gamma di database.

Hai la possibilità di prendere in considerazione BizTalk Server?

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

Potresti dare un'occhiata a Jazz - http://jazz.codeplex.com/

Prova WF4.5.È stato completamente riprogettato a partire da .NET4.0.

Prima di tutto dovresti cercare un motore che supporti BPMN.BPMN è uno standard nella gestione del flusso di lavoro e dei processi ed è ben supportato da molti progetti.In secondo luogo dovresti pensare ai requisiti di un motore in questo modo.Quando cerchi un motore BPMN, esistono due approcci diversi:

Orientato al compito

Questi motori (ad es. JBoss BPM - jbpm) sono progettati per elaborare i dati di input mediante un modello di processo ben definito.Ogni attività nel modello attribuisce il controllo a una parte di codice, un'implementazione standard o individuale.Il processo termina quando il token del 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 l'elaborazione di dati con un flusso orientato al processo complesso.

Evento guidato

I motori del flusso di lavoro incentrati sull'uomo sono guidati dagli eventi (ad es. Flusso di lavoro Imixs).Questa è una sorta di macchina a stati ma offre in genere molte più funzionalità.Puoi avviare una nuova istanza di processo assegnando al tuo oggetto business l'attività iniziale (definita dall'evento di avvio).Quindi il motore del flusso di lavoro ti consente di attivare eventi assegnati a ciascuna attività, definita nel tuo modello.Ogni evento (Intermediate CatchEvent) attiva il motore del flusso di lavoro per trasferire l'istanza del processo in esecuzione all'attività (stato) successiva.Fino a quando non viene attivato alcun nuovo evento, l'istanza del processo "attende" nell'attività (stato) corrente.Un processo di approvazione è un tipico esempio di questo tipo di flusso di lavoro incentrato sull'uomo.

È possibile trovare un elenco di motori Qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top