Kolumne: SharePoint ganz praktisch

SharePoint: Workflows einrichten mit Visual Studio
Keine Kommentare

In den ersten beiden Teilen wurde noch der SharePoint Designer verwendet. Im heutigen dritten Teil der Serie über Sharepoint-Workflows zeigt Marc André Zhou, wie man mit Hilfe von Visual Studio einen Workflow einrichten kann.

Im Vergleich zu vorherigen SharePoint-Versionen hat sich die Entwicklung von Workflows erheblich gewandelt und verbessert. Die Realisierung von SharePoint-Workflows mit dem SharePoint Designer ist, wie in der vorherigen Ausgabe der Kolumne gezeigt wurde, relativ einfach möglich. Genau wie der SharePoint Designer kann auch Visual Studio für die Realisierung von SharePoint-Workflows verwendet werden. Für den SharePoint-Entwickler sollte dies auch das bevorzugte Werkzeug sein. Für die Realisierung schneller Prototypen hingegen empfiehlt sich vorerst noch die Verwendung des SharePoint Designers.

Der erste Schritt, um einen Workflow in Visual Studio anzulegen, erfolgt über die Anlage eines neuen leeren SharePoint-Projekts. SharePoint-Workflows in Visual Studio werden genau wie im SharePoint Designer vollständig deklarativ erstellt. Das heißt, an dieser Stelle ist kein eigener Code, wie er zum Beispiel in der vorherigen Workflowlaufzeitumgebung über eine Codeaktivität eingefügt werden konnte, möglich. Somit kann die neue leere SharePoint-Projektmappe auch als Sandkastenlösung (Sandboxed) erstellt werden. Dieser Umstand ermöglicht es auch, wie es in einer späteren Ausgabe dieser Kolumne noch erläutert wird, Workflows über eine SharePoint-App bereitzustellen.

Der neuen leeren Projektmappe muss nun ein neues Element vom Typ „Workflow“, das sich in der Gruppe „Office/SharePoint“ verbirgt, hinzugefügt werden. Abbildung 1 zeigt den dazugehörigen Dialog in Visual Studio. Im unteren Feld „Name“ ist ein entsprechender Name für den neuen Workflow anzugeben. Nach Auswahl der Schaltfläche Ok startet ein Assistent, der die grundlegenden Workfloweigenschaften abfragt. Zunächst kann ein Anzeigename für den Workflow vergeben werden, und es muss festgelegt werden, ob es sich um ein Listen- oder Site-Workflow handelt – so wie es auch Abbildung 2 demonstriert.

Im zweiten Schritt ist die gewünschte Liste bzw. Bibliothek anzugeben, auf der der Workflow operieren soll. Weiterhin können hier die Protokoll- sowie die Aufgabenliste angegeben werden. Stehen keine solchen Listen in dem gewählten SharePoint-Web zur Verfügung, kann hier die Auswahl Create New selektiert werden. Die Auswahl und Festlegung der Listen ist jedoch optional. Soll dies zu einem späteren Zeitpunkt erfolgen, muss nur das obere Kontrollkästchen Yes, associate this workflow with the following libraries and lists […] deaktiviert werden.

Im letzten Schritt des Assistenten kann noch das Startverhalten des Workflows bestimmt werden. Zur Auswahl stehen hier die Möglichkeiten:

  • Manueller Start
  • Starten, sobald ein neuer Eintrag in der Liste/Bibliothek erfolgt
  • Starten, sobald ein Eintrag in der Liste/Bibliothek bearbeitet wurde

Nach Abschluss des Assistenten erscheint die Workflow-Designer-Oberfläche in Visual Studio, und der Workflow kann definiert werden.

Abb. 1: Hinzufügen eines neuen Workflows

Abb. 1: Hinzufügen eines neuen Workflows

Abb. 2: Festlegung des Workflowtypen

Abb. 2: Festlegung des Workflowtypen

Workflow-Designer-Oberfläche

Abbildung 3 zeigt die Workflow-Designer-Oberfläche mit allen relevanten Bereichen in Visual Studio. Zu sehen ist hier die Standardanordnung der Fenster; die einzelnen Fenster können natürlich nach Bedarf neu angeordnet werden. Im rechten Bereich findet sich, wie üblich, die Projektmappenstruktur wieder. Direkt darunter sind die Eigenschaften einer gewählten Workflowaktivität zu sehen und zu bearbeiten. Das mittlere Hauptfenster enthält die Workflow-Designer-Oberfläche. Hier erfolgt die Zusammenstellung einzelner Workflowelemente zu einem neuen Workflow. Unter dem Designerbereich befindet sich ein spezieller Bereich, in dem unter anderem Workflowvariablen und -parameter verwaltet werden können. Im gesamten linken Bereich ist die Workflowtoolbox mit allen Aktivitäten zu sehen. Zur besseren Übersicht wurden die einzelnen Aktivitäten in einzelnen Gruppen organisiert. Die Gruppen stellen dabei grob die folgenden Funktionalitäten bereit:

  • SP – Current Content: Ermöglicht Zugriff auf Variablen/Werte innerhalb der aktiven Workflowinstanz.
  • Flowchart/Control Flow: Steuerung des Workflowverlaufs mittels Kontrollstrukturen (Bedingungen, Schleifen …).
  • SP – List: Verschiedene Aktivitäten für den Zugriff und die Operation auf Listendaten (Copy Item, Check-in/-out usw.).
  • SP – Task: Erstellung einer oder mehrerer Aufgaben.
  • SP – User: Aktivitäten aus diesem Bereich ermöglichen den Zugriff auf Benutzerinformationen.
  • SP – Utilities: Stellen Zusatzaktivitäten wie zum Beispiel E-Mail-Versendung und -Verzögerungen (Delay) bereit.
  • State Machine: Aktivitäten aus diesem Bereich ermöglichen die Realisierung eines ereignisgesteuerten Workflows.
  • Messaging: Interaktion, beispielweise mit externen Webdiensten.
  • Runtime: Zugriff auf Ausführungsinformationen und Steuerung des Workflows (Suspend, Terminate …).
  • Primitives: Enthält drei Aktivitäten für Variablenzuweisung, Verzögerung und Ausgabe.
  • Collection: Verwaltung von Auflistungen.
  • Error Handling: Enthält drei Aktivitäten für Try-Catch-Block, Neuauslösung eines Fehlers und Fehlerweiterleitung.
  • Migration: Enthält eine Aktivität, die eine Workflow-Foundation-3.x-Aktivität aufrufen und ausführen kann.
  • Dictionary: Ermöglichen die Verwaltung einer Dictionary-Datenstruktur.
  • Dynamic Value: Ermöglicht die Verwaltung einer dynamischen Datenstruktur.

Die einzelnen Aktivitäten können der mittleren Workflow-Designer-Oberfläche einfach per Drag and Drop hinzugefügt werden. An dieser Stelle ist es wichtig zu wissen, dass sich die gesamte Workflowdefinition innerhalb des Designers abspielt. Eine Codeansicht oder Ähnliches existiert nicht. Somit ist es auch hier an keiner Stelle direkt möglich, einen eigenen Code zu hinterlegen. Wie eigene .NET-Code-basierte Implementierungen innerhalb eines Workflows verwendet werden können, wird in einer späteren Kolumne detailliert erläutert. Nachfolgend wird nun die deklarative Zusammensetzung eines Workflows anhand eines Freigabeprozesses erläutert.

Abb. 3: Auslesen eines Listenwerts

Abb. 3: Auslesen eines Listenwerts

Definition eines Workflows

Um die Verwendung des Designers sowie den Ablauf der Workflowentwicklung zu erläutern, dient ein Freigabeprozessworkflow als Beispiel. Der Workflow soll dabei wie folgt ablaufen:

  1. Ein Dokument wird innerhalb einer Dokumentenbibliothek bearbeitet.
  2. Die Dokumentenbibliothek enthält zwei neue Spalten „Prüfer“ und „Freigabestatus“. In der ersten Spalte muss eine Person angegeben werden, die das Dokument vor der endgültigen Veröffentlichung kontrolliert. Die zweite neue Spalte gibt Auskunft über den aktuellen Status des Dokuments.
  3. Der Workflow liest die Person aus der Spalte aus und erstellt für diese Person eine Aufgabe.
  4. Wird die Aufgabe als erfolgreich beendet markiert, schreibt der Workflow in die neue Spalte „Freigabestatus“ den Text „geprüft“. Im negativen Fall erfolgt der Eintrag „abgelehnt“.
  5. Zum Schluss erfolgt noch ein Eintrag in die Workflowprotokollliste, und danach wird der Workflow beendet.

Zunächst wird die zu Beginn gewählte Dokumentenbibliothek in SharePoint aufgerufen und um die beiden neuen Spalten „Prüfer“ und „Freigabestatus“ erweitert. Die beiden neuen Spalten „Prüfer“ und „Freigabestatus“ werden als einfache Textspalte angelegt. Nach diesen vorbereitenden Maßnahmen kann mit der Umsetzung des Workflows begonnen werden. Direkt nach der Anlage des Workflows in Visual Studio befindet sich lediglich eine leere Sequenz auf der Designeroberfläche. Der Name der Sequenz kann über die Eigenschaften angepasst werden und wird in diesem Fall in die Bezeichnung „Freigabe“ geändert.

Um nun eine neue Aufgabe erstellen und der angegebenen Person zuweisen zu können, muss zunächst der Eintrag aus der Liste gelesen werden. Der Zugriff auf den Listeneintrag, auf denen der Workflow ausgeführt wird, ist mithilfe der Aktivität LookupSPListItem aus der Gruppe „SP – List“ sehr einfach möglich. Nachdem diese Aktivität der Designeroberfläche hinzugefügt wurde, müssen die Eigenschaften auf die Liste eingestellt werden. Theoretisch könnte aus den Einstellungen auch eine vorhandene Liste aus dem SharePoint-Web ausgewählt werden. In diesem Fall wäre der Workflow allerdings an eine bestimmte Liste gebunden. Daher kommen hier die dynamischen Platzhalter „Current Item“ und „Current List“ zum Einsatz. Diese werden zur Laufzeit aufgelöst und verweisen auf die Liste bzw. Bibliothek, auf der der Workflow operiert.

Nachdem diese Einstellungen gesetzt wurden, erfolgt der Zugriff auf die einzelnen Listenspalten über eine „DynamicValue“-Datenstruktur. Durch einen Klick auf den Link „Get Properties“ wird automatisch eine Variable dieses Typs angelegt und zugewiesen. Zudem erscheint eine neue Aktivität GetDynamicValueProperties auf der Designeroberfläche, über die nun die gewünschten Listenspalten ausgelesen werden können. Dazu muss auf den Link „View properties …“ geklickt werden. Daraufhin öffnet sich ein Dialogfenster, in dem alle gewünschten Spalten ausgelesen und einer Variable zugewiesen werden können.

Damit die Zuweisung der Spalte zur Variablen funktioniert, muss im Vorfeld die jeweilige Variable angelegt werden. Die manuelle Anlage eigener Variablen geschieht direkt im Fensterbereich unterhalb der Workflow-Designer-Oberfläche. In der ersten Spalte „Name“ wird der Variablenname festgelegt. Die zweite Spalte definiert den Typ, und in der letzten Spalte „Default“ kann optional ein Standardwert für die neue Variable angegeben werden. Erwähnenswert an dieser Stelle ist noch die Spalte „Scope“, die bei umfangreichen Workflows immer wichtiger wird. Jede Workflowvariable kann an einen Scope gebunden werden. Innerhalb eines Workflows stellt zum Beispiel jede Sequenz einen möglichen Scope dar. Da Sequenzen ineinander verschachtelbar sind, können innere Variablen an die jeweilige Sequenz gebunden werden. Dies vermeidet die Definition aller Workflowvariablen auf oberster bzw. globaler Ebene. Nachdem nun die notwendige Variable angelegt wurde, kann diese zugewiesen werden. Nach dieser Zuweisung steht im weiteren Verlauf der Inhalt aus der Spalte „Prüfer“ in der Variable „Approver“ zur Verfügung.

Anlage einer Aufgabe

Für die Anlage einer Aufgabe steht ebenfalls eine vorbereitete Aktivität bereit, die in der Gruppe „SP – Task“ zu finden ist. Hier gibt es gleich zwei Aktivitäten:

  • Composite Task
  • Single Task

Die erstere ermöglicht die Anlage mehrerer Aufgaben für unterschiedliche Verantwortliche, die parallel ausgeführt werden. Für den hier geplanten Workflowverlauf kommt die zweite „Single Task“-Aktivität zum Einsatz. Diese ermöglicht die Anlage einer Aufgabe für eine Person. Die Aktivität wird per Drag and Drop unterhalb der letzten Aktivität eingefügt. Konfiguriert werden kann die Aktivität entweder über die Eigenschaften im rechten Bereich oder über den Einstellungsdialog, der über den Link „Configure“ innerhalb der Aktivität geöffnet werden kann. Abbildung 4 zeigt den auf diese Weise geöffneten Dialog. Im oberen Bereich können die vier wichtigsten Angaben für die Aufgabe direkt getätigt werden. Auf jeden Fall anzugeben sind ein Verantwortlicher sowie ein Titel für die Aufgabe. Optional können an dieser Stelle noch eine ausführliche Aufgabenbeschreibung und ein Enddatum definiert werden.

Im Bereich „Task Options“ wird festgelegt, ob der Workflow auf die Erledigung der Aufgabe warten soll. Standardmäßig ist diese Einstellung aktiviert. Wird das Kontrollkästchen deaktiviert, läuft der Workflow nach der Anlage der Aufgabe weiter und wertet das Ergebnis der Ausgabe nicht aus. Im Bereich „Outcome Options“ ist es möglich, einen bestimmten Inhaltstyp für die Aufgabe vorzugeben. Weiterhin können aus dem selektierten Inhaltstyp eine Spalte sowie ein Standardwert ausgewählt werden, in dem der Workflow das Ergebnis der Aufgabe schreibt. Für den Beispielworkflow werden die Standardwerte übernommen. Für das Feld „Assigned to“ kommt nun die neu angelegte Workflowvariable „Approver“ zum Einsatz.

Die restlichen Felder werden wie in Abbildung 5 gezeigt gefüllt. Das Enddatum wird dynamisch berechnet, indem zu dem aktuellen Datum fünf Tage addiert werden. Somit sind die wesentlichen Informationen für die Aufgabe gesetzt. Der Workflow Designer hat für das Ergebnis der Aufgabe bereits eine neue Workflowvariable namens outcome_0 angelegt und zugewiesen. Der Variablenname kann bei Bedarf angepasst werden.

Abb. 4: Dialog für die Konfiguration einer Aufgabe

Abb. 4: Dialog für die Konfiguration einer Aufgabe

Abb. 4: Dialog für die Konfiguration einer Aufgabe

Abb. 5: Konfigurierte Werte für die Aufgabe

Entscheidungen

Der Workflow legt nun eine Aufgabe an und wartet auf das Ergebnis. Liegt dieses vor, kann entschieden werden, welcher Wert in das neue Feld „Freigabestatus“ geschrieben werden soll. Das heißt, an dieser Stelle muss der Workflow eine Entscheidung treffen und den Workflowverlauf entsprechend anpassen. Die dazu benötigten Aktivitäten befinden sich in der Gruppe „Control Flow“. Aus dieser Gruppe wird konkret die if-Aktivität benötigt. Diese Aktivität wird direkt unterhalb der letzten „Single Task“-Aktivität der Designeroberfläche hinzugefügt. Als Bedingung wird hier nun abgefragt, ob die zuvor erstellte Aufgabe mit „Approved“ (dies entspricht dem Wert 0) beendet wurde. Ist dies der Fall, wird in die Listenspalte „Freigabestatus“ der Wert „geprüft“ eingetragen. In jedem anderen Fall schreibt der Workflow den Text „abgelehnt“ in die Spalte.

Für das Schreiben eines Werts in eine Listenspalte wird die Aktivität UpdateListItem verwendet. Diese wird ähnlich der Aktivität LookupSPListItem eingestellt. Abbildung 6 zeigt die vollständig konfigurierte Aktivität. Über die Eigenschaft ListItemPropertiesDynamicValue werden die Spalten definiert, die aktualisiert werden sollen. Am Ende des Workflows wird mithilfe der WriteToHistory ein Eintrag in die SharePoint-Protokollliste geschrieben. Somit ist der Workflow vollständig umgesetzt. Abbildung 7 zeigt den gesamten umgesetzten Workflow innerhalb des Designers.

Abb. 6: Aktualisierung eines Listenwerts

Abb. 6: Aktualisierung eines Listenwerts

Abb. 7: Vollständiger Workflow innerhalb der Designeroberfläche

Abb. 7: Vollständiger Workflow innerhalb der Designeroberfläche

Abb. 8: Ablauf des Workflows in Visual Studio

Abb. 8: Ablauf des Workflows in Visual Studio

Test des Workflows

Der umgesetzte SharePoint-Workflow kann nun wie jede andere SharePoint-Lösung auch direkt aus Visual Studio heraus installiert werden. Nach der Bereitstellung der Lösung in SharePoint kann der neue Workflow getestet werden. Dazu einfach die Dokumentenbibliothek aufrufen und zu einem beliebigen Eintrag das Kontextmenü öffnen. Aus dem Kontextmenü dann den Punkt „Workflows“ aufrufen. Auf der Übersichtseite der angehängten Workflows erscheint automatisch der zuvor installierte Beispielworkflow. Bevor der Workflow jedoch gestartet werden kann, sollte sichergestellt werden, dass die beiden neuen Spalten vorhanden sind und die Spalte „Prüfer“ einen Eintrag enthält. Sind diese Vorbedingungen erfüllt, steht dem Starten des Workflows nichts mehr entgegen. Abbildung 8 zeigt den typischen Ablauf des Workflows in SharePoint.

Zusammenfassung

Die heutige Kolumne hat die Realisierung eines Workflows in Visual Studio mit den grundlegenden Aktivitäten gezeigt. Die deklarative Zusammenstellung eines Workflows ähnelt dem Vorgehen, wie es auch innerhalb des SharePoint Designers durchgeführt wurde. In der nächsten Ausgabe geht es unter anderen darum, wie eigene Zuordnungs- und Startformulare umgesetzt werden können.

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -