Ressourcenplanung mit Vertec

Das Modul Ressourcen & Projektplanung erlaubt die projektorientierte Planung Ihrer Mitarbeiter-Ressourcen und natürlich den Vergleich mit den effektiv erfassten Leistungen.

Die Planung erfolgt tage-, wochen- oder monatsweise pro Mitarbeiter und Projekt bzw. Projektphase. Dank den Sollzeiteinstellungen ist die verfügbare Arbeitszeit von Mitarbeitern pro Planungsintervall genau ersichtlich und kann in die Planung miteinbezogen werden.

Erfassen von Ressourcen

Die Erfassung von Ressourcen-Plandaten erfolgt in der Ressourcenplan-Liste auf einem Mitarbeiter, einem Projekt oder einer Projektphase. Bei den Ressourcenplan-Listen handelt es sich um die gewohnten Vertec Listenansichten mit den Möglichkeiten zur Spaltenkonfiguration und direktem Export in Excel.

Das Planungsintervall (Monat, Woche oder Tag) kann in jeder Ansicht jederzeit dynamisch geändert werden.

Die Ressourcenplanung verfügt über eine Master-Detailansicht. Bei der Selektierung einer Projektzeile (bzw. Phasen- oder Bearbeiterzeile) im oberen Bereich wird unten eine Tabelle angezeigt mit allen für dieses Projekt (bzw. für diese Phase oder diesen Mitarbeitenden) geplanten Ressourcen. Gesteuert wird diese Ansicht über die Systemeinstellung Ressourcenplan für Detailzeile anzeigen.

Stichdatum für die Abgrenzung der Vergangenheit

Auf jeder Liste kann ein Stichdatum angegeben werden. Damit kann dynamisch eine Abgrenzung der Vergangenheit erreicht werden. Dieses Datum bewirkt folgendes:

  • Der geplante Wert (Total-Spalte Geplant) zeigt alle geplanten Werte ab Stichdatum
  • Der geleistete Wert (Total-Spalte Ist) zeigt alle geleisteten Stunden bis zum Stichdatum

Dies ermöglicht nun einen Vergleich zwischen den geplanten und tatsächlich geleisteten Stunden.

Eine manuelle Umstellung des Stichdatums ist temporär für die aktuelle Liste gültig. Der Standard berechnet sich wie folgt:

  • Ist in den Systemeinstellungen ein Sperrdatum gesetzt, so wird als Stichtag dieses Sperrdatum (+1 Tag) genommen.
  • Ist kein Sperrdatum gesetzt, dann gilt als Stichdatum der Erste des aktuellen Monats.

Beispiel

Für den April und den Mai wurden je 50 Stunden geplant. Nun wurden im April aber bereits 70 Stunden geleistet. Bisher sah man das nicht, das heisst, es wurden weiterhin 50 Stunden für den Mai geplant, dabei würde es nur noch 30 Stunden brauchen.

Um das zu korrigieren, kann man nun den Stichtag setzen, in unserem Beispiel auf den 1. Mai. So sieht man, dass 70 Stunden geleistet wurden und noch 50 Stunden geplant sind.

Wenn man das mit dem Budget vergleicht (im Beispiel auf dem entsprechenden Projekt), dann sieht man, dass dieses nur 100 Stunden beträgt, also kann man den Planwert für den Mai manuell auf 30 Stunden verringern.

Hier sieht man auch schön, wie sich der Fertigstellungsgrad (PoC) verändert. Vor der Korrektur (bzw. vor Einführung eines Stichdatums) war man der Meinung, es wären erst 58 Prozent geleistet, tatsächlich sind es aber bereits 70 Prozent.

Berechnung der Werte pro Planungsintervall

Das Planungsintervall (Monat, Woche oder Tag) kann in jeder Ansicht jederzeit dynamisch geändert werden. Auf Detailebene werden nur dann Werte gespeichert, wenn diese durch den Benutzer dort eingegeben wurden. Die restlichen Werte der Detailebene werden dynamisch berechnet von der nächsthöheren Ebene, falls vorhanden.

Für eine einzelne dargestellte Periode (ein Tag, eine Woche, ein Monat) gibt es folgende Möglichkeiten:

  1. Der Wert ist auf der dargestellten Periode eingegeben worden: es gibt nichts zu berechnen, der Wert wird in grüner Schrift dargestellt.
  2. Der Wert wurde auf einer höheren Ebene festgelegt wird. Dann wird er gemäss Sollzeiten auf das niedrigere Planungsintervall umgerechnet und in schwarz dargestellt.
  3. Der Wert ist ausschliesslich auf detaillierteren Perioden eingegeben worden: Der dargestellte Wert wird als Summe berechnet und schwarz dargestellt. Bei der Aufsummierung Tag > Woche oder Tag > Monat kann einfach summiert werden. Bei der Summierung Woche > Monat muss zuerst die Belastung pro Tag berechnet werden, welche dann auf den Monat hochsummiert werden kann (siehe Abschnitt Berechnungen über den Tag weiter unten).
  4. Der Wert ist auf der dargestellten Periode eingegeben worden, aber bei einer oder mehreren darunter liegenden Perioden wurden die berechneten Werte verändert. In diesem Fall wird der auf der dargestellten Periode erfasste Wert korrigiert durch die Werte, die in den darunter liegenden Perioden erfasst wurden. Dabei wird die Differenz zwischen dem berechneten Wert (von der darüber liegenden Periode) und dem erfassten Wert pro Tag berechnet und vom Wert der darüber liegenden Periode addiert oder subtrahiert. So berechnete Werte werden in oranger Schrift dargestellt.

Wird auf einer Periode ein Wert gesetzt, und es sind Plandaten vorhanden auf darunter liegenden Perioden, so werden diese ohne weitere Abfrage gelöscht.

Am Monatsende kann es bei Wochen und Monaten Überschneidungen geben. Wenn ein Monat gesetzt wird und bereits Plandaten für die überschneidende Woche vorhanden sind, werden die Tage der Woche, die den anderen Monat betreffen, in Tages-Plandaten umgewandelt.

Berechnungen über den Tag

Sobald ein Wert von einer darüber liegenden Periode auf darunter liegende Perioden verteilt werden muss, wird immer über die einzelnen Tage gerechnet. Dabei muss die Summe der einzelnen Tage in der Periode wieder dem Wert auf der darüber liegenden Periode (Woche oder Monat) entsprechen. Jeder einzelne Tag in der Periode erhält denjenigen Anteil am eingegeben Wert, der seinem Anteil an der verfügbaren Ressourcenzeit (Sollzeit minus Kompensation) entspricht.

Ausnahme: wenn für das gesamte Intervall, auf dem der Wert eingetragen wurde, die Ressourcenzeit 0 ist (z.B. Ferien), dann wird die Skalierung linear auf Anzahl Tage vorgenommen (weil sonst der geplante Wert verloren wäre).

Ressourcenplanung auf Projektphasen

Plandaten können entweder für Projekte oder für Phasen erfasst werden. In den Systemeinstellungen > Ressourcenplanung kann hinterlegt werden, ob standardmässig auf Projekten oder auf Phasen geplant wird. Die entsprechende Systemeinstellung lautet Planungsebene für neue Projekte. Auf dem einzelnen Projekt kann dieser Wert noch übersteuert werden.

Die Linktypen Phase - Ressourcen sowie Bearbeiter - Ressourcenplanung Phase müssen aktiv sein, um die Ressourcenplanung auf Phasen verwenden zu können.

Die Liste der Phasen wird aufgrund der dem Bearbeiter zugeordneten Projekte bestimmt (bearbProjekte). Es werden nur Phasen von Projekten aufgelistet, auf denen der Bearbeiter erfassen darf. Es wird nur die erste Ebene von Phasen (direkte Phasen des Projekts, keine Subphasen) unterstützt.

Die Darstellung der Phasenliste erfolgt gruppiert nach Projekten, mit jeweils einer Projektzeile oberhalb der Phasenzeilen.

Neue Zeilen können über rechte Maustaste > Zeile hinzufügen erzeugt werden. Es erscheint der Projekt-Auswahldialog mit allen Projekten, welche Phasen haben. Das Hinzufügen einer neuen Zeile ordnet das Projekt dem Bearbeiter zu (gleich wie in der Projekt-Ressourcenliste).

Ressourcenplanwerte setzen

Planwerte können nicht nur von Hand in der Liste, sondern auch über den Dialog Ressourcenplanwerte setzen erfasst werden. Klicken Sie mit der rechten Maustaste in die entsprechende Zeile und wählen Sie Planwerte setzen...

Mitarbeiter und Projekt (bzw. Projektphase) berechnen sich automatisch aus der entsprechenden Ressourcen-Liste. Die Zeitperiode und das Planungsintervall übernehmen die Werte der aktuellen Liste, können jedoch noch angepasst werden.

Verfügbare Zeit einsetzen

Hier können Sie die verfügbare Zeit des Mitarbeiters linear auf die Zeitperiode verteilen. Als verfügbare Zeit gilt die Restverfügbarkeit, also alle noch nicht verplante Zeit des Mitarbeiters. Bei 100% wird die gesamte verfügbare Zeit eingesetzt, sonst der entsprechende Anteil.

Anteil Std-Sollzeit einsetzen

Mit dieser Option können Sie pro Planungsintervall den entsprechenden prozentualen Anteil an der Gruppen-Sollzeit (100% Sollzeit) als Ressourcenzeit einsetzen.

Wert einsetzen

Hier kann manuell ein Wert angegeben werden, der eingetragen wird. Der Wert muss bezogen auf das Planungsintervall angegeben werden, also jeweils pro Tag, Woche oder Monat. Es wird der fixe Wert eingetragen, unabhängig davon, wieviel Sollzeit vorhanden ist. Das kann zu Überbuchungen führen, was bei Sondereinsätzen wie z.B. Wochenenden gewollt sein kann. Ausserdem sind Überbuchungen ein wichtiger Nutzen einer Ressourcenplanung - die Überbuchungen zeigen Engpässe an, die in einem Management-Prozess aufgelöst werden müssen.

Entfernen von Plandaten

Sie können mit diesem Dialog auch Plandaten entfernen, indem Sie im Feld Wert einsetzen einen leeren Wert setzen (Wert aus dem Feld löschen, nicht 0 eingeben).

Dies kann nur auf der Ebene geschehen, auf der die Werte gesetzt wurden (also dort, wo die Werte in grüner Schrift dargestellt werden).

Verfügbarkeit von Bearbeitern bei Ferien

Werden Ferien als Abwesenheit erfasst, wird dies in der Ressoucenplanung bei der Berechnung der verfügbaren Zeit der Bearbeiter berücksichtigt.

Werden Ferien als Leistung erfasst (mit korrekt hinterlegter Ferientätigkeit etc.), wird dies in der Ressoucenplanung bei der verfügbaren Zeit der Bearbeiter nicht berücksichtigt.

Möchte man Ferien nicht als Abwesenheiten eingeben, die Ferien aber trotzdem in der Ressourcenplanung sehen, dann muss man die Ferien-Zeit in der Ressourcenplanung planen wie die anderen Leistungen. Der Grund ist, dass Abwesenheiten PLAN und IST sind, während Leistungen immer nur IST sind.

Script-Methode zum Setzen von Ressourcenplan-Werten

Ab Vertec 5.8 gibt es eine Script-Methode namens setresourceplanvalue zum Setzen von Ressourcenplan-Werten per Script. Diese Methode setzt einen Planwert für eine Zelle in der Ressourcenplanung.

Python

vtcapp.setresourceplanvalue(bearbeiter, projekt, phase, date, intervalType, value)

Visual Basic

IVtcSession.SetResourcePlanValue(bearbeiter, projekt, phase, date, intervalTyp, value)
date

Das Datum sollte dem Anfangsdatum eines Intervalls des gewählten Typs entsprechen.

Sicherheitshalber wird das Datum von der Methode automatisch nach unten auf die nächstliegende Intervall-grenze korrigiert.

intervalType

Art des Planungsintervalls:

0: Tag
1: Woche
2: Monat

value

Planwert in Minuten.

Zum Entfernen eines Wertes kann ein Wert übergeben werden, der logisch "False" ist, also 0, ein Leerstring"", oder None.

Berechtigungsprüfung beim Schreiben via Script

Es werden dieselben Berechtigungsprüfungen gemacht wie beim Schreiben in der Ressourcentabelle:

  • Benutzer darf für sich selbst Ressourcen planen.
  • Projektleiter darf für alle Mitarbeiter auf dem Projekt Ressourcen planen.

Lässt sich global übersteuern durch die Berechtigung auf Resourcespalte.planminuten.

Expression-basierte Berechtigungen, welche auf die Zuordnung der Ressourcenspalte zugreifen, funktionieren nicht, da keine Ressourcenspalte vorhanden ist.

In Abhängigkeit der Einstellung auf Projekt kann nur entweder auf Projekt oder auf Phasen geplant werden.

Listeneinstellungen in der Ressourcenplanung

Die Master-Listen der Ressourcenplanung (oben) können über die Listeneinstellungen angepasst werden.

In den Einstellungen sind die fixen Spalten am Anfang sowie die Intervallspalten für das erste Intervall dargestellt (im Beispiel das Geplant und das Eff zuunterst in der Liste).

Die Intervallspalten werden automatisch für die der Periode entsprechenden Anzahl Intervalle dupliziert. Intervallspalten erkennt man am Ausdruck spalten->at(1) in der Expression.

Die fixen Spalten am Anfang repräsentieren die einzelnen Detail-Zeilen und sind vom Typ ResourceZeile. Sie enthalten folgende Werte:

Expression

Wert

Renderer

planMinuten

Total geplanter Wert

dbmTIM.MinuteRenderer

istMinuten

Total geleisteter Wert

dbmTIM.MinuteRenderer

detailObj

Zugriff auf das entsprechende Objekt, für das die Zeile angezeigt wird (Projekt, Phase, Bearbeiter).

Es handelt sich um eine ObjectReference, muss also auf eine bestimmte Klasse gecastet werden, bsp:

rndResourceList

 

if detailObj->oclIsTypeOf(Projektphase) then detailObj->oclAsType(Projektphase).
planminutenint else 0 endif

Den Intervall-Spalten mit den Planwerten pro Planungsintervall liegt die Expression spalten->at(1) zugrunde. Damit bekommt man Zugriff auf die einzelnen Spalten vom Typ ResourceSpalte. Diese enthalten folgende Werte:

Expression

Wert

Renderer

planMinuten

Planwert in der angezeigten Periode

rndPlanMinuten

effMinuten

Geleisteter Wert in der angezeigten Periode

rndMinuten

effMinutenExt

Geleistete MinutenExt

rndMinuten

effWertExt

Geleisteter WertExt

 

effWertKosten

Geleisteter WertKosten

 

rsrcMinuten

Verfügbare Ressourcenzeit
für Bearbeiter und Intervall.

rndMinuten

planMinutenTotal

Alle geplanten Minuten für
das Zeilen-Detail und Intervall

rndPlanMinuten

planMinutenBearbeiter

Alle geplanten Minuten für den Bearbeiter und Intervall. Sinnvoll, wenn der ParentEintrag des Containers ein Bearbeiter ist. Andernfalls entspricht dieser Wert planMinutenTotal.

rndPlanMinuten

restMinuten

Verfügbare Zeit, entspricht rsrcMinuten – planMinutenTotal

rndMinuten

Spalten grau hinterlegen, falls Ressourcenzeit 0 ist

Möchte man in den Listen Tage mit Ressourcenzeit = 0, also Wochenenden und Ferien, für die bessere Übersichtlichkeit grau hinterlegen, kann das mit folgender Color-Expression auf der Intervallspalte geschehen:

if spalten->at(1).rsrcMinuten=0 then 'clBtnFace' else 'clWindow' endif

Bei Ressourcenlisten auf Mitarbeitern (welche als Detailzeilen Projekt oder Phasen anzeigen), ist die verfügbare Ressourcenzeit (rsrcMinuten) in jeder Zeile die gleiche. Damit dieser Wert nicht für jede Zeile erneut berechnet wird, kann in diesen Spalten der Renderer rndMinuten verwendet werden.

Der rndPlanMinuten Renderer, welcher für Planwerte eingesetzt wird, macht dasselbe mit der Color-Expression.

Bei den standardmässig vorhandenen entsprechenden Spalten sind die Color-Expression und der Renderer bereits so gesetzt. Bei neuen Listeneinstellungen müssen Sie die Farbexpression sowie den Renderer manuell setzen, falls Sie die Tage mit Ressourcenzeit = 0 grau hinterlegen möchten.

OCL Operatoren für Ressourcenplanung

Es gibt eine Reihe von OCL-Operatoren für Abfragen von Ressourcenplan-Daten. Die Abfrage von Ressourcenplan-Daten via OCL wird in 2 Schritten vorgenommen:

1. Laden von Resourcelink-Liste

Die Operatoren getResLinksB, getResLinksP und getResLinksPh operieren auf Projektbearbeiter, Projekt bzw. Projektphase. Die Operatoren können auf einzelne Objekte oder auf Listen angewendet werden.

Die Operatoren unterstützen 2 Argumente zur Angabe des gewünschten Datumsintervalls. Die Datumsargumente werden als Strings übergeben, damit ist auch ein leeres Datum für Anfang oder Ende des Intervalls möglich.

Ergebnis der getResLinks Operatoren ist jeweils eine Liste von Resourcelink Objekten.

2. Summieren einer Liste von Resourcelink Objekten

Der Operator sumResPlanMinuten operiert auf einer Liste von Ressourcelinks und liefert die Summe der Ressourcenplan-Daten für die Liste und das angegebene Intervall.

Die Aufteilung der Ressourcenplan-Abfrage auf 2 Operatoren ermöglicht sehr flexible Abfragen, da die Selektion der gewünschten Resourcelink Objekte von der eigentlichen Summierung getrennt ist. Die eigentliche Schwierigkeit bei Abfragen von Resourcenplan-Daten ist die Summierung von Ressourcelinks. Dabei müssen die unterschiedlichen Intervall-Typen (Tag, Woche, Monat) korrekt berücksichtigt werden.

Beispiele

    • Abfrage von Resourcenplan-Daten für Bearbeiter und Periode:
bearb->getResLinksB('01.05.12','31.05.12')->sumResPlanMinuten('01.05.12','31.05.12')
    • Ressourcenplan-Daten für Bearbeiter und Periode nur für ein bestimmtes Projekt:
bearb->getResLinksB('01.05.12','31.05.12')->select(projekt.code='ABC')->sumResPlanMinuten('01.05.12','31.05.12')

Etwas umständlich wirkt, dass bei beiden Operatoren (getResLinks, sumResPlanMinuten) das Datumsintervall angegeben werden muss. Das ist aber notwendig, denn die Selektion von ResourceLinks mit getResLinks liefert unter Umständen zu viele Resourcelinks, da zum Beispiel bei Intervall-Typen von Woche oder Monat auch ResourceLinks berücksichtigt werden müssen, deren Datum vor dem Von-Datum liegt. Die endgültige Datums-Selektion erfolgt erst während der Summierung mit dem sumResPlanMinuten Operator.

Berechtigungen für das Setzen von Ressourcewerten

Standardmässig sind die Berechtigungen wie folgt vergeben: Der Bearbeiter kann seine eigenen Einträge ändern, der Projektleiter zusätzlich die auf seinen Projekten. Alle Benutzer können alle Einträge lesen.

Sollen die Berechtigungen anders definiert werden, muss das wie folgt geschehen: Grundsätzlich sind die Berechtigungen alle auf der Klasse ResourceSpalte zu setzen. Diese entsprechen den Spalten, wie sie in der Ressourcenansicht dargestellt sind. Von dort aus kommt man via zeile auf die Zeilen der Ressourcenplanung. Von dort aus kommt man via detailObj auf das Objekte, welches aktuell in dieser Zeile dargestellt wird, und via rescontainer auf den Container und von dort via parentEintrag auf das Root-Objekt im Baum (welches die Ressourcenplanung darstellt).

Als Beispiel sollen die Mitarbeitenden keine eigenen Werte erfassen können:

  • Gruppe Standardbenutzer, Rechte verweigern: ResourceSpalte, Schreiben, verweigern.
  • Gruppe Projektleiter, Rechte erteilen auf eigenen Projekten: ResourceSpalte, Schreiben, erteilen mit folgender Bedingung (Expression):
    if zeile.rescontainer.parentEintrag.oclIsTypeOf(Projekt) then 
    zeile.rescontainer.parentEintrag.oclAsType(Projekt).projektleiter=varLogin
    else
    if zeile.rescontainer.parentEintrag.oclIsTypeOf(Projektphase) then
    zeile.rescontainer.parentEintrag.oclAsType(Projektphase).projekt.projektleiter=varLogin
    else
    if zeile.detailobj.oclIsTypeOf(Projekt) then
    zeile.detailobj.oclAsType(Projekt).projektleiter=varLogin
    else
    if zeile.detailobj.oclIsTypeOf(Projektphase) then
    zeile.detailobj.oclAsType(Projektphase).projekt.projektleiter=varLogin
    else
    1=0
    endif
    endif
    endif
    endif

    Anhand dieses Beispiels sieht man, dass die Berechtigung in jeder Ansicht gesetzt werden muss (kann), da sie sich auf die Ressourcespalten beziehen.

  • Gruppe, die alles bearbeiten darf: ResourceSpalte, Schreiben, erteilen.

Umstellung von älteren Vertec Versionen auf Version 5.7 und höher

Die Ressourcenplanung wurde für die Version 5.7 neu entwickelt und unterscheidet sich in wesentlichen Teilen von der bisherigen. Zum Beispiel hängen die Ressourcen-Objekte nicht mehr am Bearbeiter-Link und kennen neu ein Anfangsdatum und eine Periode.

Bestehende Daten und Listeneinstellungen werden korrekt konvertiert. Ebenso werden von den Ressourcen-Reports neue Versionen mitgeliefert. Kundenspezifische Listeneinstellungen, welche nach dem Konvert ungültig wären (zum Beispiel solche, die über die Expression bearbeiterlink auf die Ressourcenlinks zugreifen), werden vom Konvert gelöscht.

Kundenspezifische Skripts, Event-Skripts und Ressourcen-Reports werden aber angepasst werden müssen. Für die Abfrage von Ressourcenplan-Daten steht eine Reihe von neuen OCL-Operatoren zur Verfügung. Wenn Sie Scripts oder Reports verwenden, die mit Ressourcen-Objekten arbeiten, wenden Sie sich bitte an Ihren Vertec-Betreuer.

Der bisherige OCL Operator bearbeiter->getResPlanMinuten steht nach wie vor zur Verfügung und wurde an das neue Ressourcen-System angepasst.

bearb->getResPlanMinuten(encodeDate(2012, 5, 1), encodeDate(2012, 5, 31))

liefert denselben Wert wie das Beispiel oben für sumResPlanMinuten.


16.07.2012 | 11.11.2015: Abschnitt über die Verfügbarkeit von Bearbeitern bei Ferien eingefügt.
Produktlinien: Standard, Expert
Module: Ressourcen & Projektplanung