Wo soll man bei einem StateMachine Workflow in SharePoint 2007 die Tasks anlegen und wieder aufräumen?
Möchte hier meine Überlegungen mit euch teilen. Anmerkungen und Kommentare sind willkommen.
Es geht dabei um die Stelle im Workflow, wo der Task angelegt wird. Als mögliche Pattern möchte ich auf zwei Varianten eingehen.
Pattern1
-Task wird immer bei einem Event erstellt oder aufgeräumt
Pattern2
-Task wird immer im "Initialisation" Block erstellt und im "Finalisation" Block wieder aufgeräumt

Einsatzgebiete Pattern1
Beispiel Pattern1
Das Pattern1 ist am besten dort einzusetzen, wo es verschiedene langlebige Tasks mit gleichen Besitzern gibt.
Wenn das Taskformular oder deren Besitzer häufig wechseln, ist das Pattern2 ev. übersichtlicher für die Entwicklung. Vor allem wenn man Zustände über mehrere Wege erreichen kann. Dann muss bei diesem Pattern bei verschiedenen vorangehenden Zuständen ein Task erstellt oder auf die gleiche Weise angepasst werden.
Einsatzgebiete Pattern2
Beispiel Pattern2
Das Pattern2 kann am besten dort eingesetzt werden, wo sich die Zustände in den Tasks-Besitzern und in den TaskFormularen unterscheiden.
Wenn also zwischen den Zuständen sowieso der bestehende Task abgeschlossen oder gelöscht werden soll, und im nächsten Zustand wieder ein neuer Task mit einem neuen Formular erstellt werden soll.
Es muss somit nur überlegt werden ob der Zustand verlassen wird, wenn dem so ist wird, zum Beispiel im "OnTaskChange"-Eventhandler mit SetState ein neuer Zustand gesetzt.
Das Abschliessen des aktuellen Zustandes respektive dessen Task geschieht im "Finalisation"-Block. Das Einrichten des neuen Zustandes wird vom Initialisation-Block des nächsten Zustandes übernommen. Dabei ist es sogar egal welches der nächste Zustand ist, weil dieser die Arbeit übernimmt.

