Hallo, hier ist wieder einmal Peter Pallierer, diesmal mit einer Anforderung die im Rahmen eines Workshops entstanden ist. Wir haben die Aufgabe bekommen einen Urlaubsantrag abzubilden, allerdings nicht nur ein simples Antragformular, mit einem Freigabe Workflow, sondern einen Prozess der folgendermaßen aussieht. 
Das sieht zwar einfach aus, in der Praxis sind aber einige Details zu beachten:
- Abwesenheitsarten
Im Antragsformular kann der Benutzer entscheiden, ob er auf Urlaub geht (dann werden die Tage vom Urlaubsbudget abgezogen), oder ob das ein Pflegeurlaub o.ä. ist, dafür werden keine Tage abgebucht
- Fristenprüfung
Pro Abwesenheitssart muss eine Frist eingehalten werden – z.B. Urlaube müssen mind. 1 Woche vorher, Pflegeurlaub kann auch 1 Tag vor Antritt eingemeldet werden.
- Urlaubsrestbudget
Dieses liegt im seltensten Fall im SPS direkt vor, sondern meist in einer DB oder in SAP HR. In unserem Beispiel verwenden wir eine externe SQL Datenbank in der der Benutzer, der initiale Urlaubsanspruch, und die verbleibenden Tage gespeichert sind.
- Berechnung der Abwesenheitstage
Klingt so einfach, aber man muß, abseits der Wochenenden (die natürlich nicht in die Urlaubs/Abwesenheitstage eingerechnet werden) auch Dinge wie Feiertage (die für unterschiedliche User auch verschieden sein könnten – z.B. abhängig vom Religionsbekenntnis) beachtet werden.
Ok, soviel einmal zu den Anforderungen, kommen wir zur geplanten Umsatzung:
- Abwesenheitsmeldung
Dabei handelt es sich um ein InfoPath Forms Service 2010 Formular, das direkt auf eine SharePoint Custom List gebunden wird. Eines der neuen Features in SPS 2010 ist es, dass man jedes Listen Form (Display, Edit) mit einem IP Form anpassen kann. Aus dem IP Form wird dann, anders als in MOSS 2007 wo immer ein XML File erzeugt wurde, dierkt die Daten einer Liste modifizieren.
Ausserdem können wir damit sehr enfach Reports über alle Abwesenheiten erstellen .
- Freigabe Workflow
Das wird ein einfacher Prozess, den wir in Visio entwerfen werden (ist ja eines der bekanntesten neuen Faetures von SPS 2010). Darin werden wir zuerst das Urlaubs Restbudget ermitteln und falls noch ausreichend Tage vorhanden sind, eine Freigabe Aufgabe für den (dynamisch ermittelten) Vorgesetzten erzeugen. Im Falle einer Freigabe, werden die Urlaubstage aus der externen Datenbank abgebucht und in einen Abwesenheitskalender (ein Standard SharePoint Kalender) eingetragen.
- Urlaubsbudget Datenbank
Dabei handelt es sich um eine SQL Server Datenbank, die mittels BCS in den SharePoint Server eingebunden wird. Dadurch das BCS ja ab SPS 2010 Read/Write unterstützt, können wir die verbleibenden Urlaubstage via Workflow ganz einfach zurückschreiben, ohne eine Zeile SQL oder sonstigen Code zu schreiben.
- Abwesenheitsarten
Das ist eine Benutzerdefinierte SharePoint Liste, die neben der Bezeichnung der Abwesenheit, auch noch ein Flag hat, ob die gewählte Abwesenheit im Urlaubsbudget verbucht werden muss. Krankheit, Pflegeurlaub usw. führen ja zu keine Abbuchung.
- Feiertagskalender
Das ist der Clou – hier werden alle “Nicht Werktage” vermerkt – also gesetzl. Feiertage, Wochenenden, usw. Das Infopath Form kann dann durch einfaches zählen der Tage in diesem Kalender (mit Filter auf den Abwenheitsbegin und Ende) die Anzahl der Abwseneheitstage richtig berechen. Mehr dazu beim Design des Formulars
Das Gesamtbild sieht daher so aus

Im nächsten Teil werden wir uns an das Design der Basisstrukturen und des Formulars machen.
Bis dahin – “Stay tuned”