Eine einfache Urlaubsverwaltung für Mitarbeiter oder im Team intern? Um diese Themen mit SharePoint abzubilden muss man nicht viel Geld für Third-Party-Produkte ausgeben. Ich zeige Ihnen Heute wie Sie schnell und ohne große Investitionen zum Ziel kommen. Ganz ohne Programmierkenntnisse können Sie schnell und einfach ein Antragsformular mit Workflow und eine Kalenderansicht für einen Urlaubsantrag mit SharePoint umsetzen.
Für die Schritt für Schritt Anleitung für Microsoft Flow in Office 365 klicken Sie hier.
Vorbereitung: Anlegen von Listen
Zunächst benötigen wir zwei SharePoint Listen. Die Erste ist eine benutzerdefinierte Liste, in der die Urlaubsanträge verwaltet werden. Die zweite Liste ist ein Standard SharePoint Kalender in dem später alle genehmigten Urlaube für ein Team angezeigt werden.
Zu der benutzerdefinierten Liste werden folgende Spalten hinzugefügt:
Über einen Eintrag in dieser Liste kann ein Mitarbeiter einen Urlaubsantrag einreichen, welcher dem Vorgesetzten zur Genehmigung vorgelegt wird.
Die zweite Liste ist ein Standard SharePoint Kalender an dem keine weiteren Änderungen vorgenommen werden.
Der Workflow
Achtung: Für eine Schritt für Schritt Anleitung für SharePoint Foundation 2013 mit Workflow Engine 2010 bitte hier klicken!
Wir erstellen einen einfachen Urlaubs-Workflow, welcher als Hauptaufgabe eine Genehmigung durchführt.
Ein Mitarbeiter legt nun einen neuen Antrag in der von uns erstellen Liste an:
Als nächstes startet der Workflow automatisch und versendet eine E-Mail an den Vorgesetzten.
Wenn der Vorgesetzte den Urlaub genehmigt wird automatisch im Teamkalender ein neuer Eintrag für den genehmigten Urlaub gemacht. Nun können alle Mitglieder des Teams sehen wer wann Urlaub hat.
Fazit
Mit ein wenig Know-How kann man sehr schnell und mit Bordmitteln bereits einfache Workflows entwickeln. In weniger als 35 Minuten habe ich erfolgreich einen Urlaubsworkflow erstellt und getestet. Selbstverständlich kann man diesen Workflow noch sehr viel weiter ausbauen. Als Startpunkt für individuelle Erweiterungen ist er jedoch gut nutzbar.
Kategorien: Erklärt, SharePoint, Technical
Schlagwörter: SharePoint, SharePoint 2013, Workflow
Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?
Nehmen Sie mit uns Kontakt auf!
Wir unterstützen Sie gerne bei Ihren SharePoint-Vorhaben!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielen Dank für die Anleitung. Leider habe ich ein Problem, den Code in SPD umzusetzen. Kann es daran liegen, dass ich SharePoint Foundation habe?
Hallo Natalie,
könntest du dein Problem näher beschreiben? Aber ich vermute du findest einige Aktionen nicht ? Das Beispiel wurde hier mit dem Workflow Manager 1.0 umgesetzt. Dieser wird mit dem .NET Framework 4.5 zur Verfügung gestellt. Der Workflow Manager 1.0 wird NICHT automatisch mit der SharePoint 2013 Installation installiert, sondern steht extra zum Download bereit. Wird der Workflow Manager 1.0 nicht installiert, dann stehen die Funktionalitäten der SharePoint 2010 Workflow Engine zur Verfügung. Nach der Installation hat man beim Anlegen eines Workflows die Wahlmöglichkeit, welchen der beiden Workflow-Engines man nutzen möchte. Wie hier im Bild: http://i.technet.microsoft.com/dynimg/IC599071.png
Um die SharePoint 2013 Workflow Engine nachträglich zu installieren, folge bitte der Anleitung von Microsoft.
Hier wird empfohlen:
Mind. Hotfix Version vom 12 März 2013 eingespielt zu haben und dann das Update „Workflow Manager 1.0 Cumulative (KB2799754)“ zu installieren. ( http://support.microsoft.com/kb/2799754/en-us ). Alternativ kann Dieses auch mit dem Web Platform Installer für Windows durchgeführt werden.
Dieses gilt für: SharePoint Foundation 2013 | SharePoint Online | SharePoint Server 2013
Somit sollte es auch mit Ihrer Foundation-Version funktionieren – bedauerlicherweise kann ich es gerade nicht testen, da ich keine Foundation Version zur Hand habe.
Solltest du keine Möglichkeit haben deine SharePoint Umgebung auf den neusten Stand zu bringen, dann müsstest du auf die SharePoint 2010 Workflow Engine zurückgreifen. Hier werden nahezu alle oben benutzen Funktionen unter anderem Namen vereinfacht dargestellt und können genutzt werden.
Viele Grüße
Jörg
Sehr dürftiger Artikel. Ich hätte mir gerade bezüglich des Workflows mehr Informationen gewünscht. Vor allem habe ich Probleme dies mit der deutschen Version Workflow Engine 2010 umzusetzen. Die 2013 ist leider nur für den kostenpflichtigen Server verfügbar.
Hallo Juli,
schade, dass dir dieser Artikel nicht gefallen hat. Dieser Artikel sollte nicht als Lösung verstanden werden, sondern eher als ein Ansatz was im SharePoint out-of-the-box möglich ist.
Wie auch immer: Da sich die Anfragen häufen, wie man einen Urlaubsworkflow für SharePoint 2013 mit der Workflow Engine 2010 umsetzen kann, haben wir aktuell darüber gebloggt!
Hier findest du eine Schritt für Schritt Anleitung für SharePoint Foundation 2013 (Workflow Engine 2010)
https://gate4.com/blog/umsetzung-urlaubsworkflow-fuer-sharepoint-foundation-2013-workflow-engine-2010/
Viele Grüße
Jörg
Hallo Jörg,
an für sich ein guter Artikel. Leider fehlen die genaueren Erklärungen zum Einrichten der einzelnen Schritte.
Was verbirgt sich zum Beispiel hinter „then Delete Item in Zuordnung: Aufgabenliste“?
Viele Grüße,
Andreas
Hallo Andreas,
zu deiner Frage wo für die Aktion da ist:
„then Delete Item in Zuordnung: Aufgabenliste“: Fünf Zeilen höher erstellen wir eine Aufagbe (Assign a task to …) für den Vorgesetzten. Diese Aufgabe führt sozusagen die Genehmigung durch. Wir bekommen als Ergebnis von dieser Aktion zwei Variablen wieder: Variable: Outcome und Variable TaskID. In der Variable Outcome steht später das Ergebnis Abgelehnt oder Genehmigt. Über die TaskID können wir die Aufgabe in der Aufgabenliste identifizieren und auch löschen. Löschen aus dem Grund, weil eine Genehmigung oder eine Ablehnung immer nur dazu führt, dass die Aufgabe abgeschlossen wird. Diese Aufgabe wird aber niemals aus der Aufgabenliste entfernt. Für die Übersicht habe ich an dieser Stelle eine Löschung eingefügt, damit die Aufgabenliste nicht irgendwann tausende abgeschlossene Aufgaben enthält, welche eigentlich nicht mehr Relevant sind.
Gerne erkläre ich an dieser Stelle nochmal die einzelnen Schritte:
Zeile 1 Set Workflow Status to Warte auf Genehmigung: Dieser Schritt hat zur Folge, dass später in der Liste in der Workflowspalte der Status „Warte auf Genehmigung steht“. Vorteil davon ist, dass man auf einen Blick erkennt, welche Urlaubsanträge gestartet, aber noch nicht abgearbeitet sind.
Zeile 2 und 3 If Aktuelles Element:Bis… und Set Workflow Status…: An dieser Stelle wird eine Fehleingabe überprüft. Falls Jemand seinen Wunschtermin verkehrt eingibt – also das Bis-Datum vor dem Von-Datum liegt. Ist das der Fall, dann setzt der Workflow den Status dieses Antrages auf „Fehler in der Eingabe“ und bricht den Workflow ab.
Zeile 5 Assign a task to…: An dieser Stelle wird der eigentliche Genehmigungsprozess initiiert. Es wird eine Aufgabe erstellt auf welche mit Genehmigt oder Abgelehnt geantwortet werden kann. Diese Aufgabe wird dem Vorgesetzten zugewiesen.
Zeile 6 If Variable: Outcome …: An dieser Stelle wird das Ergebnis aus der in Zeile 5 angelegte Aufgabe ausgewertet. Die Aufgabe erstellt zwei Variablen wie oben erwähnt. In der Variable Outcome steht später Genehmigt oder Abgelehnt.
Zeile 7 Set Workflow Status to Urlaub genehmigt: An dieser Stelle wird der Status auf Urlaub genehmigt gesetzt, damit in der Liste später sofort erkennbar ist, dass dieser Antrag genehmigt wurde.
Zeile 8 then Log…: Hier wird zusätzlich in den Workflowverlauf ein Eintrag erzeugt in dem der Vorgesetzte nochmal namentlich erwähnt wird. Wenn man den Workflowverlauf betrachtet sieht man, dass der Urlaub genehmigt wurde durch die Person X.
Zeile 9 then Delete item in…: siehe Oben.
Zeile 10 then Create item in…: An dieser Stelle wird ein Eintrag im Kalender erzeugt, damit man später eine Gesamtübersicht erhält über alle genehmigten Urlaube.
Zeile 12 Set Workflow Status to Urlaub abgelehnt: An dieser Stelle wird äquivalent zu Urlaub genehmigt der aktuelle Status auf abgelehnt gesetzt, damit man in der Liste sofort sieht, dass dieser Urlaub abgelehnt wurde.
Zeile 13 then Log …: Hier wird ein Eintrag im Workflowverlauf erstellt, damit man sieht wer den Urlaub abgelehnt hat.
Zeile 14 then Delete item …: siehe Oben.
Ich hoffe diese kurze Erklärung hilft weiter. Gerne erstelle ich, wenn erwünscht, auch noch mal zu diesem Workflow eine Schritt für Schritt Anleitung wie bei der Anleitung SharePoint Foundation 2013 mit Workflow Engine 2010
Viele Grüße
Jörg
Hallo Jörg,
Vielen Dank für Deine ausführliche Antwort.
Eigentlich zielte meine Frage auf die Schritt für Schritt Anleitung ab. Denn ich weiß nicht so recht, wie ich die Löschen Aktion konfigurieren muss. Momentan führt die Aktion dazu, dass der Workflow mit Fehler angehalten wird. Ich bekomme an dieser Stelle eine invalid Format exception. Ich denke es liegt daran, das die Variable Aufgaben-Id eine Zeichenfolge ist und ich diese momentan falsch verwende.
Viele Grüße,
Andreas
Hallo Andreas,
gerne erstelle ich für diesen Workflow auch zeitnah eine Schritt für Schritt Anleitung. Da ich dich solange selbstverständlich nicht warten lassen möchte vorab schon mal die Konfiguration der Delete Item -Aktion.
Nach dem du die Aktion „Delete Item“ in deinen Workflow eingefügt hast klickst du auf die Textmarke this list.
Als Nächstes erscheint ein kleiner Dialog.
Bei der Auswahl-Liste musst du die Liste der Aufgaben auswählen. Diese ist gekennzeichnet als Wert Zuordnung: Aufgabenliste. Das ist die Aufgabenliste, welche dem Workflow zugeordnet ist. Diese kannst du in den Workfloweinstellungen ändern, falls du eine Andere haben möchtest. Da du jetzt auf eine Liste verweist und wir ja nur ein Element löschen wollen, müssen wir dem Workflow jetzt sagen wie er das richtige Element findet. Dazu sagen wir, dass wir das Listenelement über das Feld „ID“ suchen wollen. In dem Feld ID speichert der SharePoint in jeder Liste einen internen Zähler. Dort wird einfach von 1 – x hochgezählt. Aus der Aktion Assign a task to… bekommen wir die Variable TaskID, welche die ID der Aufgabe beinhaltet. Um die Variable einzufügen klicken wir auf das fx-Symbol und wählen dann als Datenquelle Workflowvariablen und – parameter aus. Das Quellenfeld ist unsere Variable: TaskID und der Wert soll als Integer zurückgegebenen werden.
Beispiel:
SharePointliste:
ID Aufgabe Name
1 Aufgabe 1 Urlaubsantrag XY
2 Aufgabe 2 Urlaubsantrag ZY
3 Aufgabe 3 Urlaubsantrag YY
Rückgabe von der TaskID-Variable: 2
Nun suchen wir in der SharePointliste nach der Zeile mit der ID 2.
SharePoint geht also alle Zeilen durch und schaut wo die ID 2 == TaskID 2 ist und gibt dann das Element (Urlaubsantrag ZY) zurück.
Hier könnte es zu einer Format Exception gekommen sein, wenn nicht der Typ Integer ausgewählt ist, da SharePoint weiß, dass die ID nur Zahlen enthält und auch eine solche erwartet, wenn man ein Element sucht.
Viele Grüße,
Jörg
Guten Tag,
ich habe gerade ein sehr ähnliches Vorhaben. Ich habe ein Datum „von“ und ein Datum „bis“. Wenn ich allerdings z.B. 11.11.2014 – 13.11.2014 als Zeitspanne angebe wird der Balken im Kalender nur vom 11.11. bis zum 12.11.2014 dargestellt. Ich gehe davon aus, dass es daran liegt, dass bei der Erstellung immer automatisch eine Uhrzeit von 00:00 Uhr angezogen wird und somit keine Belegung des letzten Tages stattfindet.
Wie kann ich dieses Problem umgehen ohne die Uhrzeiteinstellung durch den User im Formular erforderlich zu machen?
Viele Grüße
Martin Wölzmüller
Hallo Martin,
du kannst beim Erstellen des Kalender-Eintrags in der Liste ein Feld namens ‚All Day Event‘ setzen und mit den Werten Ja oder Nein befüllen. Wenn du das tust, dann sollte die Uhrzeit keine Rolle mehr spielen und alle 3 Tage sollten erscheinen.
Schau mal ob dir das hilft.
Viele Grüße
Jörg
Sehr geehrter Herr Sager,
im Rahmen eines Lehrprojekts versuche ich gerade einen Worlflow für die Urlaubsverwaltung zu schreiben (Workflow Engine 2010). Dabei hat mir Ihre „Anleitung“ sehr geholfen. Leider funktioniert der Workflow nicht so wie gewünscht. Beispielsweise erscheint in der Übersicht mit den Anträgen die Spalte mit dem aktuellen Status nicht. Kann diese nur der jeweilige Admin sehen? ich habe das so verstanden, dass diese Spalte jeder sehen kann. Und ich kann den Fehler nicht finden, habe alles so gemacht wie Sie es in der Anleitung geschrieben haben.
Vielleicht wissen Sie ja woran es liegt oder was man noch einmal überprüfen könnte.
Mit freundlichen Grüßen
Jannis
Hallo Jannis,
die Spalte sollte erscheinen, sobald der Workflow zum ersten Mal läuft. Hast du unter Umständen die Startoptionen vergessen oder nicht veröffentlicht?
Falls der Workflow durchläuft und nur die Spalte fehlt, dann bitte mal in der Ribbon-Leiste der Liste auf „Ansicht ändern“ klicken. Hier solltest du die Spalte zur Ansicht hinzufügen können.
Viele Grüße
Jörg
Hallo Herr Sager,
vielen Dank erstmal für die schnelle Antwort.
Beide Tipps von Ihnen beheben den Fehler leider nicht. Startoptionen wurden eingestellt, der Workflow veröffentlicht. Ich habe jetzt noch einmal eine neue Liste und einen neuer Workflow geschrieben, um zu überprüfen ob ich etwas falsch eingegeben habe. Ich bin erstmal nur bis zu diesem Schritt gegangen :
„Würde der Workflow jetzt gestartet werden und das Datum korrekt angegeben, dann würde der Workflow starten und eine Aufgabe erstellen, welche der ausgewählte Vorgesetzte erledigen muss.“
Danach habe ich den Workflow gespeichert, die Startoptionen wie angegeben geändert und den Workflow veröffentlicht. Wenn ich jetzt ein neues Element in der Liste erstelle, erscheint nur ein „grüner Stern“ hinter dem Namen des Antrages, die Felder „Von, Bis & Vorgesetzter“ werden auch angezeigt, aber der Status leider nicht.
Da ich Ihre Liste 1:1 befolgt habe, kann ich mir nicht erklären, wie der Fehler zustande kommt. Ich dwürde nur vermuten, dass der Fehler darin liegt, dass der Workflow gar nicht erst startet.
Muss ich außer der Liste mit den 3 Spalten und dem Workflow vielleicht noch etwas einstellen oder erstellen? Vielleicht die Aufgabenliste?
Mit freundlichen Grüßen
Jannis
Hallo Jannis,
es klingt weiterhin so, als wenn der Workflow nicht korrekt auf die Liste publiziert wurde.
Bitte prüfe Folgendes:
Wenn du im Context-Menü eines Listitems auf Workflow klickst, dann muss dein Workflow dort erscheinen.
Unterhalb der Überschrift „Start a New Workflow“ muss sich, dann dein Workflow befinden. Wenn du ihn anklickst startest du ihn manuell.
Sollte dein Workflow dort zu sehen sein, dann bitte noch mal die Startoptionen kontrollieren.
Diese findest du in der Ribbonleiste auf Workfloweinstellungen:
Diese sollten wie folgt aussehen:
Bitte unbedingt nach dem Umstellen den Workflow neu veröffentlichen. Erst dann werden die Änderungen aktiv.
Wenn dein Workflow nicht zu sehen, dann prüfe bitte noch mal, ob der Workflow korrekt zugeordnet ist. Wenn du im SharePoint Desiger auf der linken Seite “Listen und Bibliotheken” anklickst und dann die Liste auswählst siehst du eine Übersicht für die Liste. In der Übersicht sollte nun die Box mit Workflows deinen Workflow anzeigen.
Ist eines von den Beiden der Fall? Ansonsten fehlen keine Schritte und die Aufgaben-Liste ist automatisch vorhanden.
Viele Grüße
Jörg
Einfach klasse – vielen Dank!!!!!!! Weiter so – hat mir mega geholfen.
Toller Artikel. Klappt alles bis auf das Eintragen des Urlaubs in den Kalender. Es scheint als gäbe es ein Problem mit dem Datumsformat. Zumindest kommt mir das bei nachfolgender Fehlermeldung so vor:
An unhandled exception occurred during the execution of the workflow instance. Exception details: System.FormatException: Input string was not in a correct format.
Muss bzw. kann man an dem Datumsformat an irgendeiner Stelle etwas anpassen?
Viele Grüße
Andreas
Hallo Andreas,
hast du die Von und Bis – Spalten als Datumsspalte angelegt? Dieses kann eigentlich nur passieren, wenn er das Datumsformat nicht lesen kann. Ein Datumsformat kann man nicht explizit angeben. Es gibt nur die Möglichkeit beim Anlegen der Spalte zu wählen zwischen:
Anzeigeformat: Standard oder Benutzerfreundlich
Du könntest im Workflow mal den Wert vorher ausgeben als „Protokollierung in die Workflow Historie“, um zu prüfen, ob dieses ein gültiges Datum ist.
VG Jörg