2009-05-18 3 views
6

Stiamo procedendo alla riscrittura di un sistema legacy di grandi dimensioni che utilizza in modo estensivo (errato) un motore di workflow. Andando avanti, vorrei prendere in considerazione alternative a un motore di flusso di lavoro per la nuova applicazione. Una possibilità molto interessante è un motore di regole Space-based architecture +. Quali altri paradigmi esistono?Quali sono alcune alternative a un motore del flusso di lavoro?

Ricorderò che questa applicazione orchestra i flussi di lavoro di pubblicazione di documenti complessi con molte modifiche diverse a seconda del paese/regione/ecc., Ma mi piacerebbe mantenere le risposte più generali se possibile.

Modifica: Ho aggiunto una taglia a questa domanda per ottenere più feedback. Mi piacerebbe sentire da qualcuno che ha effettivamente implementato un'alternativa del flusso di lavoro. Se non viene prodotto nulla, accetterò la risposta di BPEL, anche se sono completamente privo di entusiasmo riguardo alla tecnologia stessa.

+0

nessuna idea riguardo l'aspetto della programmazione, ma hai visto WWF (Windows Workflow Foundation)? http://msdn.microsoft.com/en-us/netframework/aa663328.aspx – balexandre

+0

Non sto cercando un'implementazione del flusso di lavoro, ma piuttosto un'alternativa al modello del flusso di lavoro – rcampbell

+1

Il motivo della mancanza di risposte è che non hai t descrivere il vero problema che stai cercando di risolvere. La descrizione si riduce a "quali sono le alternative ai flussi di lavoro per l'applicazione che orchestra i flussi di lavoro", il che preclude qualsiasi risposta al di là dei "flussi di lavoro". – ima

risposta

2

Sembra una risposta così ovvio, ma nessun altro lo ha elevato, quindi ecco qui : hai considerato il software di gestione dei documenti (o dei contenuti)?

0

NetBpm (una porta .Net di jBPM) processo basato

+0

Non sto chiedendo implementazioni del flusso di lavoro alternative, ma piuttosto alternative ai motori del flusso di lavoro interamente – rcampbell

2

BPEL è un'opzione. Andresti su quella strada se avessi immaginato di sfruttare i futuri strumenti BPEL per il lavoro. Altrimenti, BPEL è un pasticcio complicato (come tutte le soluzioni generali "tutti possono inserire").

Qualcosa di semplice è rendersi conto che il flusso di lavoro è molto spesso sulle code piuttosto che sul flusso di lavoro. Cioè, si tratta piuttosto di mettere qualcosa sulla scrivania di qualcuno piuttosto che dirigere il flusso del lavoro secondo uno schema rigido. In quel contesto qualcosa che contiene una coda, che è una fase definita del lavoro, e quindi si collega ad altri potenziali blocchi di lavoro in modo flessibile. Esiste un processo generale, ma esistono eccezioni a tale processo. Un motore di regole può spostare le cose tra le code come una questione di processo generale (e avviare processi esterni secondo necessità), con l'opzione per un utente di spostare arbitrariamente le cose nella coda "giusta" quando le regole definite non la tagliano.

1

Bene, hai già menzionato l'elaborazione basata su regole. Un modello di elaborazione basato su eventi è in qualche modo simile, ma è meno formalmente vincolato in termini di risposta agli eventi. Nel complesso, non credo che si debba aderire esclusivamente a un modello specifico.

(ad esempio, una base di front end evento -> basato su regole di orchestrazione -.> Specifica (lineare) di elaborazione del flusso di lavoro)

1

Se si guarda da 30.000 piedi si hanno due opzioni:

  • una partecipazione di controllo di processo sondaggi code e gli archivi di dati di controllo ciò che è dove, e si muovono le cose sulla base di un insieme di regole.
  • Un sistema che attende di essere informato degli eventi e li gestisce in base a un insieme di regole.

In entrambi i casi le "regole" possono essere definite in flussi di lavoro/orchestrazioni, un motore di regole o un codice.

Abbiamo scelto di implementa sistemi basati sui seguenti criteri:

  • relative regole semplici, impemented direttamente nel codice
  • Logica complessa in flusso di lavoro.In modo che possiamo mostrarlo al cliente, chiedere loro se questo è ciò che intendevano, e sapere che è OK, poiché ciò che stanno guardando è ciò che viene eseguito.
  • Orchestration pub/sub per spostare le cose intorno sulla base di un insieme di regole

Io lavoro con la tecnologia MS così per il tipo di sistema che descrivi, avrei messo in atto in Sharepoint, che ha una gestione dei documenti sistema e flussi di lavoro integrati per la gestione dei documenti. La licenza di Sharepoint entry level di Windows Sharepoint Services è inclusa nel sistema operativo.

1

Da un punto di vista KISS, il flusso di lavoro non è altro che il motore di code e regole sono se non altro: abbiamo un sistema di documenti per il quale abbiamo un flusso di lavoro simile all'elaborazione. Abbiamo preso in considerazione il flusso di lavoro di websphere e anche WLI di weblogic, ma uno semplice con JMS (MDBs e wake-up dei consumatori) con storage persistente ha funzionato molto bene per noi senza problemi. Penso che tu stia prendendo il giusto approccio qui - buona fortuna!

2

Si potrebbe fare rigorosamente come un motore macchina a stati finiti che si costruisce dinamicamente in base a utente, cultura o altro. Dovresti mantenere i particolari automati come stato per le transazioni a lungo termine. Quindi, quando l'utente richiama lo stato o prende un'altra "azione" (fondamentalmente modellata come transizione di stato), si consente alle transizioni di avere output (macchina Mealy) o sul nuovo stato (macchina Moore).

-1

Puoi considerare Apache Camel. EIP e gran parte del flusso di lavoro Langugae piace se, scelta è supportata, ma devi scrivere il codice per questo.