Quando utilizzare i motori del flusso di lavoro?

39

Ho lavorato in passato su alcuni dei motori del flusso di lavoro come programmatore, ma non ho mai avuto una chiarezza sul motivo per cui abbiamo scelto i motori del flusso di lavoro al primo posto. E come programmatore, so che ci sono almeno 100 modi per fare qualcosa quando stai scrivendo il codice, ma solo alcuni dei modi sono i migliori!

Non riesco ancora a capire quali casi d'uso siano meglio risolti dai motori del flusso di lavoro (o piuttosto dal loro concetto) rispetto alla progettazione di una buona applicazione DI abilitata. Sto cercando alcune caratteristiche generali dei casi d'uso neutrali rispetto al dominio, dove i motori del flusso di lavoro sono una delle migliori opzioni.

Quindi la mia domanda è: quali sono le caratteristiche generali di un requisito che può essere considerato un segnale per optare per un buon motore di workflow e per codificarlo?

    
posta A01_ 26.08.2011 - 18:41
fonte

6 risposte

19

Un motore di workflow è utile quando devi andare dall'inizio alla fine, ma ci sono molti percorsi / regole / regole per arrivarci.

Ad esempio, diciamo che scrivo un programma che pubblica contenuti. Quindi, nel mio caso, la pubblicazione passa attraverso un processo di revisione, legale e quindi l'approvazione finale. Scrivo il programma implementando la mia logica di processo e i passaggi. Ora questo funziona benissimo per me e la mia compagnia. Quindi, decido che gli altri dovrebbero usare il mio programma.

Purtroppo, non tutti pubblicano contenuti utilizzando lo stesso processo, quindi anziché scrivere processi separati per ogni caso diverso, implementeremo un processo di flusso di lavoro in modo che il programma sia flessibile per soddisfare tutti. Indipendentemente dal numero di passaggi o regole o logica tra questi due punti, il risultato è lo stesso.

Quindi, se i processi sono variabili dall'inizio alla fine, utilizzare un flusso di lavoro. Se lo stesso processo può essere utilizzato da tutti, non è necessario un flusso di lavoro.

    
risposta data 26.08.2011 - 19:49
fonte
18

So che hai chiesto casi d'uso, ma è più facile elencare i vantaggi che immaginare tutti i possibili casi d'uso. Naturalmente i vantaggi dipendono dal motore e dalla lingua che si sta confrontando, ma in generale:

  1. Mantenere le regole come dati anziché codice significa che non è necessario ricompilare, in modo da poter testare le modifiche rapidamente, cambiare in fase di esecuzione, ecc. Non è un vantaggio se non si deve ricompilare il primo posto, però.

  2. Gli utenti possono ragionevolmente aspettarsi di modificare le regole. Possono potenzialmente armeggiare con loro in modo interattivo in modi che non sono fattibili avendo un codice di scrittura del programmatore per loro.

  3. Mantenere le regole come dati consente di scrivere strumenti per visualizzare e modificare i dati.

  4. Mantenere le regole in quanto i dati consentono più facilmente la meta-programmazione: puoi scrivere codice per analizzare i dati e inserirne altri in un modo complesso, il che sarebbe molto difficile per il codice.

Tutto ciò che è possibile fare direttamente con il codice (ad es. scrivere un parser C # per trovare tutte le regole di un certo tipo e generare codice per più regole, inserendolo dinamicamente in un assembly in un modo che consenta lo scaricamento degli assiemi, scrivere strumenti per gli utenti per poterlo fare anche usando il visualizzatore e l'editor) ma potrebbe essere molto più difficile a seconda della lingua (i programmatori che usano un Lisp potrebbero riferirsi agli articoli 1-4 come "programmazione" ).

    
risposta data 26.08.2011 - 19:24
fonte
3

IMHO, l'UNICO caso in cui dovresti usare questo genere di cose è quando può essere configurato da utenti meno preziosi. Se riesci a risolvere il tuo problema dando loro uno strumento, torna a lavorare su qualcos'altro di più importante, quindi usane uno.

Se devi ancora configurarlo per loro, immagino che potresti pensare a 10 modi diversi di ottenere lo stesso risultato con uno strumento che conosci e sarà molto più facile da supportare e personalizzare.

    
risposta data 30.08.2011 - 01:41
fonte
3

Sembra una vecchia domanda, ma emerge numerose volte in natura. Sono d'accordo con la risposta di Jon . Ho trovato che i motori del flusso di lavoro sono altamente produttivi nei seguenti scenari:

  1. Esiste un processo aziendale sottostante che stai tentando di rappresentare / implementare tramite il tuo software.
  2. Esiste un'unica entità aziendale (forse composita) su cui sono state elaborate tutte o alcune fasi del processo. Nell'esempio che Jon ha dato, questa entità o elemento del flusso di lavoro sarebbe contenuto o un articolo. Prendi in considerazione il bug tracking come un altro esempio di un flusso di lavoro, una transizione Bug tra vari stati, basata su un'azione che un utente prende.
  3. Utilizza i flussi di lavoro per modellare i tuoi processi, solo se prevedi che il processo aziendale cambi, per modifica intendo la sequenza o l'azione eseguita come risultato di un'azione o transizione dell'utente.

Sii molto attento e fondamentale per vedere se il tuo dominio / i requisiti del problema hanno un processo aziendale, non provare a "adattarlo" a un flusso di lavoro.

    
risposta data 20.01.2012 - 05:46
fonte
1

Ho un paio di linee guida che uso per suggerire i motori del flusso di lavoro.

1) Quando gli analisti di business non hanno background di codifica, ma possono disegnare diagrammi.

I moderni motori di flusso di lavoro utilizzano la notazione per la modellazione dei processi di business o le versioni meno efficienti disponibili in SharePoint e sistemi simili. Ciò consente ai membri del team tecnicamente competenti e con problemi di codifica di progettare e sviluppare molti flussi di lavoro.

2) Quando è necessario monitorare lo stato di avanzamento del lavoro, eseguire escalation, spostarsi avanti e indietro tra processi controllati dal computer e processi controllati dall'uomo.

Il monitoraggio e l'auto-riferimento sono le caratteristiche dei moderni motori di flusso di lavoro.

    
risposta data 10.07.2014 - 00:01
fonte
-2

Dal punto di vista delle risorse umane, i motori di flusso di lavoro sono molto importanti.

  1. Forniscono un processo strutturato, anche se è sempre lo stesso.
  2. Forniscono trasparenza

    • Chi ha richiesto la modifica,
    • Quando è stato richiesto,
    • Chi ha approvato ecc.

    Questa trasparenza aiuta a guidare il processo e promuove la proprietà.

Supponendo che i moduli siano integrati e intelligenti, supportando la logica di business, hanno anche un effetto drammatico sulla timeline, l'efficienza di elaborazione e la qualità dei dati. La sicurezza è anche una considerazione e contenere informazioni sensibili in un sistema sicuro è preferibile avere moduli cartacei in attesa di essere firmati. È anche molto più mobile. Dopo una recente implementazione, un manager mi ha detto che gli ha risparmiato un sacco di fastidi facendogli scrivere cose per la firma mentre viaggiava molto.

A nome delle risorse umane: lunga vita al flusso di lavoro !!!

    
risposta data 01.08.2013 - 13:12
fonte

Leggi altre domande sui tag