Frage

Ich habe einen wiederholbaren Business-Prozess, den ich jede Woche im Rahmen meiner Konfigurationsmanagementaufgaben auszuführen. Der Prozess ändert sich nicht: Ich Änderung Details in Excel herunterladen, die Tabelle öffnen und Details zu einem Makro abschreiben basieren, erstellen Sie ein Word-Dokument von einer Agenda-Vorlage, aktualisieren Sie die Tagesordnung mit den Excel-Daten, erstellen Sie PDF-Dateien aus dem Word-Dokument, und mailen sie aus.

Dieser Prozess ist sehr einfach in einer Sequenz Workflow dargestellt und das ist, wie ich es habe bisher mit COM-Automatisierung der Excel und Word Stücke automatisch zu handhaben. Der Schraubenschlüssel in den Gängen ist, dass es ein Mensch Schritt zwischen „schaffen Agenda“ und „es auszusenden“, wobei ich die Änderungsdetails und formulieren Fragen über sie, die auf die Tagesordnung gesetzt werden. Im Moment habe ich eine Aktivität Suspend den Workflow zu unterbrechen, während ich dieses Stück des Prozesses manuell tun.

Meine Frage ist, soll ich meinen Workflow neu zu schreiben, um es eine Zustandsmaschine zu machen eine bewährte Methode für die menschliche Interaktion in einem Geschäftsprozess zu folgen, oder ist die Suspend-Aktivität eine vernünftige Lösung?

War es hilfreich?

Lösung

Nein, ich glaube nicht, dass Sie eine Zustandsmaschine für diesen Workflow verwenden. Aber schlage ich die Suspend-Aktivität zu ändern, weil:

  

Die SuspendActivity Aktivität   vorübergehend stoppt die Ausführung der   aktuelle Workflow. Normalerweise verwenden Sie   die SuspendActivity Aktivität   spiegeln eine Fehlerbedingung, die   erfordert Aufmerksamkeit durch eine   Administrator.

     

Wenn ein Workflow   Instanz wird suspendiert, ein Fehler ist,   angemeldet. Sie können eine Mitteilung angeben   String, den Fehler zu begleiten, um zu helfen   der Administrator das Problem diagnostizieren   mit dem SuspendActivity Fehler   Eigentum. A suspendiert Workflow   Instanz kann immer noch Nachrichten empfangen   , die sich bis zum Workflow-Warteschlange gestellt   wird neu gestartet. Der ganze Staat   Informationen für die Workflow-Instanz   gespeichert und wird, wenn die wieder   Beispiel wieder aufgenommen wird (mit Lebenslauf).

     

Quelle: MSDN

Der typische Weg, um eine menschliche Aufgabe in einem Workflow (entweder Sequenz oder eine Zustandsmaschine) zum Hinzufügen ist ein externer Datenaustausch-Schnittstelle zu definieren und eine HandleExternalEvent Aktivität (und möglicherweise eine CallExternalMethod Aktivität) verwenden. Weitere Einzelheiten finden Sie in den folgenden Artikeln:

Andere Tipps

Update: Panos macht ein guter Punkt, um Aktivität Suspend. Ich bin damit einverstanden es hat einen anderen Zweck im Workflow-Automaten.

Wenn Sie das Gefühl haben, mehr über Workflow-Übergang zwischen verschiedenen Zuständen sich Gedanken, dann Zustandsmaschine Workflow ist ideal. Ansonsten ist Folge ganz gut.

Das Hauptproblem zu lösen Sie versuchen sollten, ist, dass der Arbeitsablauf sollte nicht einen Thread binden, während für die menschliche Interaktion (Thread Agilität) wartet. Wenn der Workflow idled wird und während dieser Zeit blieb (wie unter Verwendung von SqlWorkflowPersistenceService ), sollte es kein Problem sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top