Domanda

Ho un modello ripetibile di un processo di business che eseguo ogni settimana come parte della mia configurazione responsabilità di gestione.Il processo non cambia:Scarica modificare i dati in Excel, aprire il foglio di calcolo e copiare i dati su un macro, creare un documento di Word da un'agenda modello di aggiornare l'agenda con i dati di Excel, creare file Pdf da un documento Word, e-mail fuori.

Questo processo è molto facilmente rappresentato in una sequenza del flusso di lavoro ed è così che ho finora, con COM automazione per gestire Excel e Word pezzi automaticamente.La chiave in gears è che c'è un passo umano tra "crea ordine del giorno" e "inviarlo", in cui il cambiamento dettagli e formulare domande su di loro, che vengono aggiunti all'ordine del giorno.Io attualmente sono a Sospendere l'attività per sospendere il flusso di lavoro, mentre io manualmente fare questo pezzo del processo.

La mia domanda è, devo riscrivere il mio flusso di lavoro per renderlo una macchina a stati per seguire una best practice per l'interazione umana in un processo di business, o la Sospensione dell'attività di una soluzione ragionevole?

È stato utile?

Soluzione

No, non credo che si debba usare una macchina a stati per il flusso di lavoro.Ma, mi propongo di modificare l'Sospendere l'attività a causa:

Il SuspendActivity attività interrompe temporaneamente l'esecuzione del flusso di lavoro corrente.In genere, si utilizza il SuspendActivity attività di riflettere una condizione di errore che richiede attenzione da un amministratore.

Quando un flusso di lavoro istanza di sospensione, un errore è registrato.È possibile specificare un messaggio stringa per accompagnare l'errore aiuto l'amministratore diagnosticare il problema con il SuspendActivity Errore proprietà.Una sospensione del flusso di lavoro istanza può ancora ricevere messaggi in coda fino a quando il flusso di lavoro viene riavviato.Tutto lo stato informazioni per l'istanza del flusso di lavoro viene salvato e ripristinato quando il istanza viene ripreso (utilizzando il proprio Curriculum vitae).

Fonte: MSDN

Il modo tipico per l'aggiunta di un compito umano in un flusso di lavoro (o sequenza o di una macchina a stati) è quello di definire un Esterno interfaccia di Scambio Dati e di utilizzare un HandleExternalEvent attività (e, eventualmente, un CallExternalMethod attività).Per ulteriori dettagli, vedere i seguenti articoli:

Altri suggerimenti

Aggiornamento:Panos rende un buon punto circa Sospendere l'Attività.Sono d'accordo che ha un diverso scopo del flusso di lavoro automa.

Se avete l'impressione di preoccuparsi di più per il flusso di lavoro in fase di transizione tra i vari stati, stato della macchina del flusso di lavoro è l'ideale.In caso contrario, la sequenza è solo bene.

Il problema principale che si dovrebbe essere cercando di risolvere è che il flusso di lavoro non dovrebbe impegnare un thread in attesa per l'interazione umana (thread agilità).Se il flusso di lavoro è difficile e persistente durante quel tempo (come l'utilizzo di SqlWorkflowPersistenceService), non dovrebbe essere un problema.

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