Springe zum Inhalt

Zustandsautomat – SharePoint Workflow

Im Unternehmensumfeld sind Geschäftsprozesse und vor allem ihre Automatisierung ein zentrales Thema. Bei der Abbildung von Geschäftslogik mit MS SharePoint Technologie, z.B. bei der Entwicklung von Workflows mit Hilfe von Visual Studio oder SharePoint Designer gibt es zum Einen das Konzept des sequentiellen Workflows und zum Anderen den Zustandsautomat (engl. state machine) welcher seine Vorteile gegenüber sequentieller Automatisierung von Geschäftsprozessen hat, welche in einer tendenziell größeren Freiheit der menschlichen Teilnehmer bestehen.

Zustandsautomat und sequentieller Workflow

Allgemein betrachtet kann man sich den sequentiellen Workflow als eine strenge Vorgabe festgelegter Vorgänge vorstellen, die immer wieder aufs neue exakt repliziert werden. Dabei bleibt dem menschlichen Teilnehmer wenig Freiheit und man kann einen solchen Workflow wie einen Montageroboter betrachten der immer wieder das gleiche Teil auf die exakt gleiche Weise montiert.

Der Zustandsautomat hingegen definiert eine Reihe von Zuständen und Ereignissen/Eingaben die einen Zustandsübergang auslösen. Dabei kann es eine unbestimmte Anzahl von Zustandsübergängen und Iterationen geben, wobei die menschlichen Teilnehmer dabei die Freiheit haben, selbst zu entscheiden wann ein Zustandsübergang erfolgen soll und in welchen Zustand gewechselt werden soll. Wichtig ist nur, dass es einen Endzustand gibt, der auch erreicht wird. Dabei kann man selbstverständlich die gerade geschilderten Freiheitsgrade der Benutzer einschränken wie man möchte. Prinzipiell ist alles was denkbar ist, auch programmierbar.

 

Entwicklung eines Zustandsautomaten in SharePoint-Designer

MS SharePoint bietet mit seinem SharePoint Designer ein recht nützliches, wenn auch manchmal relativ schwerfälliges, Werkzeug um grafisch Workflows selbst zu programmieren die auf einer beliebigen Datenstruktur in Ihrer SharePoint-Farm operieren.

Einen Zustandsautomat haben Sie mit wenigen Klicks erzeugt. Hierfür brauchen Sie nur ein Feld bzw. eine Listenspalte (engl. list column) welche Ihre Zustandsausprägungen beinhaltet. In meinem Fall die Spalte „Status“ welche drei Ausprägungen hat („Antrag gestellt“, „Freigabe“, „Abgelehnt“). Mein Zustandsautomat wäre beispielhaft für einen einfachen Prozess wie ein Urlaubsantrag beim Vorgesetzten.

Der SharePoint-Designer bietet eine Funktion „Schritt“ mit deren Hilfe Sie einzelne Funktionsblöcke kapseln können (siehe Bild unten). Ich verwende diese Funktion um meine drei Status je in einem eigenen Schritt zu kapseln. Jeden Schritt beginne ich mit einer Bedingung die mein Status-Feld auf den jeweiligen Status prüft. Trifft die Bedingung zu, d.h. das Prädikat ist true, dann wird eine Sequenz von Funktionen ausgeführt. Diese richtet sich nach der Logik des jeweiligen Geschäftsprozesses.

 

sharepoint designer state machine

Natürlich sollten Sie nicht vergessen die Bedingungen für einen Statuswechsel zu definieren. Hier wäre z.B. das true setzen einer Checkbox geeignet, was dann durch den Workflow im jeweiligen Status per Bedingung getestet wird um dann den Wert des Statusfeld zu ändern. Natürlich wäre auch ein direktes Ändern dieses Feldes durch den User möglich. Jedoch möchte man in der Regel sicher Stellen, das zum Beispiel der Endstatus nicht mehr verändert werden kann. Somit könnten Sie das Feld nur für den Workflow sichtbar halten, also mit Inhaltstypen (engl. content types) arbeiten um so jedem Status nur eine reduzierte Sicht auf einen Datensatz zur Bearbeitung freizugeben.

Hierzu ist es wichtig zu wissen, dass die Verwaltung von Inhaltstypen in MS SharePoint Listen zunächst erst einmal freigegeben werden muss. Ausserdem muss man wissen, dass Inhaltstypen die Unsichtbarkeit (fast) aller Feldtypen zulassen. Somit kann zwar der Workflow das Feld modifizieren, jedoch bekommt der Benutzer in seinem Bearbeitungsformular (EditForm) nichts davon zu sehen. Bitte beachten Sie, dass ein Workflow den Wert eines Feldes nicht modifizieren kann, wenn sich das Listenelement derzeit in einem Inhaltstypen befindet der dieses Feld nicht beinhaltet. Damit ist ein Inhaltstyp immer eine Menge die identisch, oder eine Teilmenge der Menge der definierten Listenspalten ist.

Veröffentlicht inMS SharePointTechnik und Technologie

Sei der Erste der einen Kommentar abgibt

Schreibe einen Kommentar