Domanda

Mi piacerebbe sapere su specifici problemi - il lettore - hanno risolto utilizzando Motori di Workflow e quali librerie/framework utilizzato se non da arrotolare.Mi piacerebbe anche sapere quando un Motore di Workflow che non era la scelta migliore e se/come si è scelto qualcosa di più semplice, come un TaskList/Lista di lavoro/Attività di Gestione del tipo di applicazione che utilizza macchine di stato.

Domande:

  • Che problemi hai utilizzato motori di workflow per risolvere?
  • Quali librerie/framework hai usato?
  • Quando ha fatto una semplice Macchina a stati/Attività di Gestione come sistema bastare?
  • Bonus:Come ha fatto/si fa a fare la distinzione tra La Gestione Delle Attività e Motore Di Workflow?

Sto cercando esperienze di prima mano.

Alcune delle risorse ho verificato:

È stato utile?

Soluzione

sono di parte, così, come io sono l'autore principale della STONEPATH .

Ho sviluppato applicazioni di workflow per il Dipartimento di Stato degli Stati Uniti, il Centro di Ginevra per lo sminamento umanitario, diversi clienti Fortune 500, e più recentemente la DC Scuola Sistema Pubblico di Washington. Ogni volta che ho visto un 'motore di workflow' che ha cercato di essere il riferimento di un master per i processi di business, ho visto un'organizzazione stessa lotta per aggirare lo strumento. Ciò può essere dovuto al fatto che queste soluzioni sono sempre state fornitore / prodotto guidato, e poi finire con una squadra tattica di 'consulenti' alimenta costantemente l'applicazione ... ma proprio per questo, tendo a reagire negativamente quando sento il vantaggi di strumenti di processo-based che promettono di 'centralizzare la definizione del flusso di lavoro in un unico luogo e renderli ripetibili'.

Detto questo, mi piace molto Ruote - Ho seguito questo progetto da tempo e dovrebbe ho bisogno di quel tipo di soluzione, sarà lo strumento prossima sarò disposto a provare. STONEPATH ha uno scopo molto diverso rispetto ruote - dove Ruote è utile a Ruby, in generale, STONEPATH è volto a Rails, il web framework scritto in Ruby. Dove Ruote è di circa longevo processi aziendali e le loro relative definizioni, STONEPATH è sulla gestione del flusso di lavoro basato Stato-tasking e. Francamente, penso che la distinzione da fuori a guardare potrebbe essere sottile - molte volte lo stesso tipo di processi di business possono essere rappresentati in entrambi i casi -. Il modello basato-stato e-task-tende a mappare al mio modello mentale se

Lasciatemi descrivere i punti salienti di un flusso di lavoro di stato. Insomma, immaginate un flusso di lavoro che ruota attorno al trattamento di qualcosa di simile a un mutuo o un rinnovo del passaporto. Come si muove documento 'per l'ufficio', viaggia da stato a stato. Immaginate se si è responsabili per il documento, e il tuo capo ti ha chiesto ogni poche ore per un aggiornamento di stato, e voleva una risposta breve ... avresti detto cose come "E 'in entrata di dati" ... "stiamo verificando le credenziali del richiedente ora" ... 'siamo in attesa di revisione della qualità' ... 'abbiamo finito' ... e così via. Questi sono gli stati in un flusso di lavoro di stato. Si passa da stato a stato tramite le transizioni - come "l'approvazione", "applicazione", contraccolpo", 'negare', e così via questi tendono ad essere i verbi di azione cose come questa sono modellati per tutto il tempo in software come una macchina a stati.. .

La prossima parte di un / flusso di lavoro basata su attività dello stato è la creazione di attività. Un'attività è un'unità di lavoro, in genere con una data di scadenza e di movimentazione, che collega un elemento di lavoro (la richiesta di prestito o di rinnovo del passaporto, per esempio), per un utente "in scatola". Le attività possono accadere in parallelo tra di loro o sequentialy, e siamo in grado di creare attività automaticamente quando si entra stati, creare manualmente le attività come le persone si rendono conto lavoro deve ottenere fatto, e richiedono attività di essere completo prima di poter passare ad un nuovo stato. Tutto questo tipo di comportamento è facoltativo, e parte della definizione del flusso di lavoro.

La tana del coniglio può andare molto più profondo di questo, e ho scritto un articolo su di esso per Issue # 4 di PragPub, Rivista del Pragmatic Programmer. Controllare il link qui sopra per REO un PDF aggiornato dello stesso articolo.

Nel lavoro con STONEPATH ultimi mesi, ho scoperto che il modello basato sullo stato mappe molto bene alle architetture RESTful Web - in particolare, i compiti e le transizioni di stato mappa bene come risorse nidificate. Aspettiamo di vedere il futuro a scrivere da me su questo argomento.

Altri suggerimenti

io sono di parte, io sono uno degli autori ruote .

variante 1) macchina di stato collegato a una risorsa (documento, ordine, fattura, libro, mobile).

variante macchina 2) stato collegato a una risorsa virtuale denominata un'attività

variante 3) motore workflow interpretare definizioni workflow

"BPM" Ora la vostra questione è aggiunto che può essere espansa in "Business Process Management". Come funziona questo tipo di gestione si verificano in ciascuna della variante?

In variante 1, il processo di business (o flusso di lavoro) è sparso nell'applicazione. La macchina a stati collegata alla risorsa impone alcuni degli aspetti del flusso di lavoro, ma solo quelli relativi alla risorsa. Ci possono essere altre risorse con la propria macchina a stati seguendo lo stesso processo di business.

In variante 2, il flusso di lavoro può essere concentrata intorno alla risorsa compito e rappresentato dalla macchina a stati intorno a quella risorsa.

In variante 3, il flusso di lavoro è emanata interpretando una risorsa chiamata una definizione del flusso di lavoro (o la definizione dei processi di business).

Che cosa succede quando cambia processi di business? Vale la pena avendo un motore di workflow in cui i processi di business sono le risorse gestibili?

La maggior parte delle biblioteche della macchina dello Stato hanno 1 set stati + transizioni. motori di workflow sono, la maggior parte di loro, interpreti di definizione del flusso di lavoro e permettono molteplici flussi di lavoro diversi per eseguire insieme.

Quale sarà il costo di cambiare il flusso di lavoro?

Le varianti non sono reciprocamente esclusivi. Ho visto molti esempi in cui un motore di workflow cambia lo stato delle risorse multiple alcuni di loro custodito da macchine a stati.

Io uso anche la variante 3 + 2 molto, per le attività umane: il motore di workflow, in alcuni punti durante l'esecuzione di un'istanza di processo, le mani un compito (elemento di lavoro) ad un partecipante umano (compito delle risorse viene creato e messo in stato di ' pronto ').

Si può andare un lungo cammino con la variante 2 da solo (la variante task manager).

Si potrebbe citare anche la variante 0), dove non c'è macchina statale, nessun motore di workflow, e il processo di business (es) sono sparsi e / o hardcoded nell'applicazione.

È possibile fare molte domande, ma se non si prendono il tempo di leggere le risposte e non si prendono il tempo per provare e sperimentare, non si andrà molto lontano, e non sarà mai acquisire alcun gusto per quando usare questo o quello strumento.

In un precedente progetto su cui stavo lavorando ho aggiunto alcune regole Tipo di Workflow a una serie di forme di governo nel settore Healhcare.

I moduli necessari per essere compilati da parte dell'utente finale e, a seconda delle risposte di altre forme sono stati programmati per essere compilato in un secondo momento. Ci sono stati anche eventi esterni che potrebbero annullare Forme in programma o programmare nuovi.

Flusso del campione:

paziente ricoverato -> calendario iniziale SCHEDA DI VALUTAZIONE -> Calendario trimestrale Form -> paziente è morto -> Annulla Recensione -> Programma di scarica scheda di valutazione

Molte altre regole sono basate su cose come l'età del paziente, dove erano ricoverati etc.

Questa è stata un'applicazione ASP.NET, le regole erano fondamentalmente una tabella nel database. Ho aggiunto scripting, così uno script Correvo a completamento Modulo per determinare che cosa fare dopo. Questo è stato un design orribile, e sarebbe stato perfetto per una corretta motore di workflow.

rails_workflow gioiello - Credo che questo sia vicino a quello che la ricerca.

Io sono uno degli autori di Cadenza Motore Di Workflow abbiamo sviluppato presso Uber.La differenza tra Cadenza e la maggior parte del flusso di lavoro esistente motori è che è orientato allo sviluppatore ed è estremamente flessibile e scalabile (per decine di migliaia di aggiornamenti al secondo e fino a miliardi di aprire i flussi di lavoro).I flussi di lavoro vengono scritti come object oriented programmi e il motore assicura che lo stato del flusso di lavoro, di oggetti, tra cui filo pile e le variabili locali è completamente conservato in caso di host fallimenti.

Che problemi hai utilizzato motori di workflow per risolvere?La cadenza è utilizzato praticamente per qualsiasi applicazione di backend che vive al di là di una singola richiesta di risposta.Esempi di utilizzo sono:

  • Distribuito CRON jobs
  • Gestione ML/Dati gasdotti
  • Reagire a eventi di lavoro.Per esempio eventi di sgancio a Uber.Il flusso di lavoro può accumulare stato basato su eventi ricevuti ed eseguire attività quando necessario.
  • Distribuzione di servizi di Mesos/ Kubernetes
  • CI implementazione della Pipeline
  • Garantire che più chiamate al servizio completo quando viene ricevuta una richiesta.Tra SAGA modello di attuazione
  • Gestione delle umane attività di lavoro (simile ad Amazon MTurk)
  • Per l'elaborazione multimediale
  • Richiesta Di Supporto Routing
  • Elaborazione dell'ordine
  • Servizio di prova simile a ChaosMonkey

e molti altri

L'altra serie di casi d'uso è basato sul porting del flusso di lavoro esistente motori di eseguire su di Cadenza.Praticamente qualsiasi motore di workflow linguaggio di specifica può essere portato a eseguire su di Cadenza.Ci sono più interna Uber sistemi che sono stati trasferiti.In questo modo un singolo servizio back-end in grado di alimentare più di dominio specifici sistemi di flusso di lavoro.

Quali librerie/framework hai usato?

La cadenza è un autonomo servizio scritto in Andare con Andare e Java lato client librerie.L'unica dipendenza esterna è di archiviazione.Cassandra e il database SQL sono supportati.

Cadenza anche il supporto asincrono regione croce (utilizzando la terminologia AWS) replica.

Quando ha fatto una semplice Macchina a stati/Attività di Gestione come sistema bastare?

All'interno di Uber e la Cadenza del servizio è gestito dal nostro team.Quindi l'overhead della creazione personalizzata macchina di stato/attività di gestione è sempre più elevato rispetto all'utilizzo di Cadenza.Al di fuori dell'azienda, il servizio di storage e per questo deve essere impostato.Se si dispone già di un database SQL il servizio di distribuzione è banale attraverso un pannello di immagine.Il mobile è utilizzato anche per eseguire un locale Cadenza servizio per lo sviluppo di un personal computer o laptop.

I laminati mio proprio motore di workflow per supportare l'elaborazione graduale di documenti - catalogazione, l'invio per l'elaborazione delle immagini (lavoriamo con redazione SW), se necessario, l'invio di convalida, quindi rilasciare e, infine, la spedizione di nuovo al cliente. Nel nostro caso abbiamo un carico di documenti da elaborare in modo a volte abbiamo bisogno di eseguire ogni servizio separatamente per controllare la consegna e le risorse di utilizzo. Semplice nel concetto, ma ad alte prestazioni e distribuiti di elaborazione necessaria, e noi could't trovare qualsiasi fuori il prodotto mensola che misura la fattura per noi.

Ho un esperienza con l'utilizzo Activiti motore BPMN 2.0 per la gestione ad alte prestazioni e ad alta velocità di trasmissione dati trasferire i processi in un'infrastruttura di nodi di rete. Il compito principale era di permettere la configurazione ed il monitoraggio di tali processi di trasferimento e controllare ciascun nodo di rete (es. Richiesta nodo1 per inviare un file di dati per via Nodo2 livello di trasporto specifico).

Ci potrebbero essere migliaia di processi in esecuzione in un momento e decine complessive o poche centinaia di migliaia di processi al giorno.

Ci sono stati sacco di differenti definizioni di processo ma non è stato necessariamente richiesto che un operatore del sistema potrebbe creare flussi di lavoro personalizzati. Così il caso d'uso primario per il motore BPM in sé doveva essere robusta, scalabile e consentire il monitoraggio di ogni flusso di processo.

Alla fine è sostanzialmente funzionato, ma quello che abbiamo imparato da quel progetto era che una piattaforma BPMN, o meglio, il motore Activiti in particolare, non era la migliore scommessa per un tale sistema high-throughput.

Le sfide principali erano task di esecuzione delle priorità, di bloccaggio DB, l'esecuzione ritenta per citarne pochi relativa alla BPM stessa. Quindi abbiamo dovuto sviluppare la gestione personalizzata di questi, ad esempio:

  • Gestione di tentativi nel BPM per i casi in cui un nodo aveva nessun lavoratore libero per determinato compito, o quando il nodo non era in funzione a tutti.
  • Esecuzione di attività di trasferimento parallelo in un unico processo e sincronizzazione dei risultati (successo / fallimento).

Non so se altri motori BPMN sarebbe più adatto per tale scenario dal BPMN è in gran parte destinata per le attività di lunga durata d'affari che coinvolgono l'interazione utente in cui le prestazioni non è probabilmente lo stesso problema, come è stato nel nostro caso.

Sono uno degli autori Imixs-Workflow . Imixs-Workflow è un motore di workflow open source basato su BPMN 2.0 e completamente integrato nella tecnologia di stack Java EE.
I sviluppare motori di workflow da solo da più di 10 anni. Cercherò di rispondere alla tua domanda in breve:

> Quali problemi hai usato motori di workflow per risolvere?

Il mio obiettivo personale quando ho iniziato a pensare a motori di workflow è stato quello di evitare di duro codding la logica di business all'interno della mia applicazione. Molte cose in un'applicazione di business possono essere riutilizzate quindi ha senso per tenerli configurabile. Ad esempio:

  • l'invio di una notifica
  • visualizzare le attività aperte
  • assegnato un compito di una persona
  • che descrive l'attività corrente

Da questo elenco funzione potete vedere sto parlando dei flussi di lavoro umano-centrica. In breve: un motore di workflow umano-centrica risponde alle domande: Chi è responsabile di un compito e che ha bisogno di essere informato il prossimo? E queste sono le domande tipiche di requisiti di business.

> Quali biblioteche / quadri hai usato?

5 anni fa abbiamo iniziato reimplementare Imixs-Workflow motore concentrandosi su BPMN 2.0 . BPMN è lo standard comune per la modellazione dei processi. E la cosa sorprendente per me era che eravamo improvvisamente in grado di descrivere i processi di business, anche molto complessi che possono essere visualizzati ed eseguiti. Consiglio a tutti di utilizzare BPMN per la modellazione dei processi di business.

> Quando ha fatto una semplice macchina a stati / Management Task come il sistema sufficiente?

Una macchina a stati più semplice è sufficiente se si desidera solo per tenere traccia dello stato di un oggetto di business. Questo è il caso quando si inizia ad introdurre l'attributo 'status' nel vostro modello a oggetti. Ma in caso di necessità i processi aziendali con responsabilità, la registrazione e il controllo di flusso, quindi una macchina a stati non è più sufficiente.

> Bonus:? Come ha / si fa a fare la distinzione tra attività di gestione e il flusso di lavoro del motore

Questo è esattamente il punto in cui molti motori di workflow qui menzionati sono diverse. Per un flusso di lavoro umano-centrica in genere bisogno di una gestione delle attività per distribuire i compiti tra attori umani. Per un processo di automazione, questo punto non è così rilevante. E 'sufficiente che il motore esegue alcuni compiti. i motori di gestione del flusso di lavoro e di attività non possono essere paragonati a causa la gestione delle attività è sempre in funzione di un motore di workflow.

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