Out of office Zeiten planen

K2 bietet tolle Funktionen was die Steuerung von Aufgaben angeht, z.B.:

  • Aufgaben delegieren / weiterleiten
  • Aufgaben teilen
  • Aufgaben sperren / freigeben
  • Aufgaben zurückstellen und auf Wiedervorlage setzen
  • “Out of office” Funktion zur automatischen Weiterleitung von Aufgaben bei Abwesenheit

Aber gerade bei der “Out of office” Funktion vermisse ich etwas Flexibilität bei der Steuerung der “Out of office”-Definition.

Meines Wissens ist es OOTB nicht möglich seine Abwesenheiten mit Angaben des Zeitraums zu steuern – man muss aktiv z.B. in der Worklist seinen Status setzen. Damit meine ich, dass es schön wäre, wenn ich bereits im Vorfeld meine Abwesenheit planen könnte. Dazu müsste ich einen Zeitraum definieren können (Startdatum und Enddatum) in dem das System meinen Status automatisch auf “out of office” setzt und die Aufgaben in diesem Zeitraum an einen zuvor definierten Vertreter delegiert.

Nachfolgend beschreibe ich eine kleine Anwendung mit der genau dies möglich ist.

Die Anwendung setzt sich wie folgt zusammen:

  1. Ein Smartboxobjekt zur Speicherung der geplanten Abwesenheitszeiten
  2. Ein Smartboxobjekt zur Speicherung von Logdaten
  3. Eine Form mit den entsprechenden Views zur Verwaltung der Abwesenheitsdaten und Ansicht der Logdaten
  4. Ein Workflow, der mit Hilfe des K2-Schedulers täglich aufgerufen wird und alle in Frage kommenden Abwesenheiten in einer Schleife durchläuft
  5. Ein Subworkflow, der den “out of office” Status setzt und warten bis das Rückkehrdatum erreicht ist um den “out of office” Status wieder zu löschen
  6. Ein Workflow, mit dessen Hilfe eine geplante und gestartete “out of Office”-Zeit storniert werden kann

Im Detail – Smartboxobjekt “CW.OOF.SCHEDULEITEM”:

  • UserFQN / UserDisplayName / RecipientFQN / RecipientDisplayName: Informationen über den OOF-Benutzer und den Empfänger der Aufgaben diesen Benutzers
  • StartAt / EndAt: Beginn und Ende der Abwesenheit (Zeitraum in dem der OOF-Status für den Benutzer gesetzt werden soll)
  • State: Status des geplanten OOF (Start / Running / Finished / Draft)
  • IsActive: Es werden nur DAtensätze berücksichtigt die IsActive=true sind
  • ProcessId: Die aktuelle ProcessID der Prozessinstanz, die den OOF-Status gesetzt hat und nach Erreichen des Enddatums auch wieder entfernen soll

Smartboxobjekt “CW.OOF.Log”:

  • dient lediglich dazu, Informationen aus den Workflows zu speichern um gewissen Dinge nachvollziehen zu können

Workflow “CW.OOF.Schedule.WF”:

  • Regelmäßige Ausführung des Workflows mit Hilfe der geplanten Ausführung (Workflow Server –> Schedules)
  • Es werden für jeden Datensatz des Smartboxobjektes “CW.OOF.ScheduleItem”, der die erforderlichen Kriterien erfüllt ein Workflow zur Anlage des OOF-Status anzulegen bzw. zu starten

Workflow “CW.OOF.Set.WF”:

  • Dieser Workflow wird gestartet mit der Ausführung des Workflows”CW.OOF.Schedule.WF”. Für jeden Datensatz, der den Kriterien entspricht (Startdatum <= heute UND State=Start UND IsActive=true) wird eine neue Workflowinstanz gestartet.
  • Die Instanz legt für den definierten Benutzer den Status “out of Office” an und definiert den festgelegten Vertreter.
  • Danach wartet der Workflow auf das Erreichen des “Enddatums” – dann wir der “out of Office”-Status wieder zurückgesetzt und der definierte Vertreter wird entfernt.

Workflow “CW.OOF.Stop.WF”:

  • wurde bereits ein OOF-Status angelegt, kann mit diesem Workflow die Anlage zurückgenommen werden. D.h. der Vertreter wird gelöscht und der Status “out of Office” wird ebenfalls gelöscht – d.h. für den betroffenen Benutzer ist kein Vertreter mehr hinterlegt.

Natürlich könnte man diese Funktion den Mitarbeitern/Benutzern zu Verfügung stellen (mit einer eigenen kleinen View oder Form), oder einer zentralen Stelle zur Pflege (z.B. Sekretariat etc.).

In unserer Firma steht allerdings noch eine andere Möglichkeit im Raum. Und zwar haben wir die Idee, dass längere Abwesenheitszeiten (z.B. Urlaub, Krankheit) von der Zeiterfassung erkannt werden und automatisch einen Eintrag in der Tabelle des Smartboxobjektes CW.OOF.Schedule.WF vornimmt.

Sofern in der Zeiterfassung auch ein Vertreter hinterlegt sein sollte, könnten die OOF-Statis vollautomatisch gesetzt werden.

Innerhalb des Workflows wird der “out of Office”-Status gesetzt und ein Vertreter definiert. Dies wird über ein Smartobjekt realisiert, was ich mit Hilfe eines ServiceBrokers aus dem K2-Market gelöst habe. Bei dem ServiceBroker handelt es sich um folgende Lösung: https://community.k2.com/t5/K2-blackpearl/Denallix-Out-of-Office-Service-Broker/ba-p/94146

In meiner Lösung habe ich dafür zwei Smartobjekte generiert:

  • CW.OOF.DestinationUser
  • CW.OOF.UserStatus

Diese Smartobjekte müsstest Du ebenfalls generieren, um diese Anwendung verwenden zu können. Der ServiceBroker kann unter der o.a. Url heruntergeladen werden.

Ich hoffe die Informationen sind ausreichend, um mein kleines Beispiel an den Start zu bringen. Natürlich sehe ich keinerlei Probleme darin, den Lösungsansatz zu verwenden, abzuändern, zu erweitern  oder was auch immer.

Es würde mich sehr freuen, wenn die kleine Anwendung inspiriert oder in anderer Art und Weise helfen kann!

Die Anwendung ist nicht bis ins letzte Details ausgetestet worden etc., Unwegsamkeiten oder der ein oder andere Fehler könnte sich durchaus eingeschlichen haben. Sollte dies der Fall sein, oder sollte jemand einen Vorschlag haben wie das ein oder andere besser gelöst werden könnte, könnt ihr mich gerne kontaktieren. Ich bin für konstruktives Feedback immer offen.

Viel Spaß

 

Serviceinstanz des Servicebrokers “Denallix Out-of-Office Service Broker”: https://community.k2.com/t5/K2-blackpearl/Denallix-Out-of-Office-Service-Broker/ba-p/94146

Scheduler (K2-Management) – mit dem Scheduler wird der Workflow CW.OOF.Schedule.WF 1x täglich aufgerufen und setzt somit ggf. entsprechende Abwesenheiten.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Nach oben