Auslastungsdimensionen
Product line
Standard
|Expert
Operating mode
CLOUD ABO
|ON-PREMISES
Modules
Services & CRM
Budget & Phases
Purchases
Resource Planning
Business Intelligence
Auslastungsgrafiken werden nach verschiedenen Dimensionen aufgeteilt angezeigt. Das sind die Kriterien, nach welchen die Balken (bzw. Werte) aufgeteilt werden.
Das kann zum Beispiel nach Projektleitern, nach Branchen, nach Projekttypen etc. sein. Sie können aber auch beliebige eigene Dimensionen definieren wie zum Beispiel Verkauft/Offeriert
, Produktiv/Unproduktiv
etc.
Auslastungsdimensionen werden im Ordner Einstellungen > Ressourcenplanung > Auslastungsdimensionen definiert:
Bezeichnung | Name der Dimension. Diese Bezeichnung erscheint als Button-Text auf der Detail-Ansicht und kann bei Bedarf in verschiedenen Oberflächensprachen hinterlegt werden. |
Aktiv | Steuert, ob diese Auslastungsdimension zur Anwendung kommt. |
Reihenfolge |
Hier kann die Reihenfolge der Darstellung der Buttons für Auslastungsgrafiken auf der Detail-Ansicht gesteuert werden. Diese werden aufsteigend sortiert. Wir empfehlen, grössere Sortierschritte (z.B. 10er Schritte) zu wählen. Das ermöglicht es später, auch noch Buttons dazwischen einzufügen. |
Auf gleicher Klasse anzeigen |
Steuert, ob die Auslastungsdimension auch auf der Klasse des angewählten Objekts angezeigt werden soll oder nur auf der Gegenseite (Standard). |
Anzahl Serien |
Hier kann eingestellt werden, wie viele Serien (Balkensegmente in der Grafik) angezeigt werden sollen. Es kann gewählt werden zwischen:
Die entsprechende Anzahl Serien werden dann als einzelne Segmente dargestellt und die restlichen Werte unter |
Klasse |
Steuert, welche Klassen in dieser Auslastungsdimension zur Verfügung stehen. Mögliche Klassen sind:
Siehe dazu auch Abschnitt Eigene Klasse / Gegenseite . |
Bedingung |
Hier kann via OCL Expression eine Anzeigebedingung angegeben werden, mit welcher gesteuert werden kann, ob bzw. wann diese Auslastungsdimension angezeigt wird oder nicht. Im OCL-Editor wird als Basis Wird das Objekt im OCL verwendet, muss der Administrator den Code so schreiben, dass er für alle Kombinationen von Klasse / Einzelobjekt / Liste funktioniert. Dafür muss allenfalls mit Das Resultat dieser Expression muss einen Ja-/Nein Wert (Boolean) zurückliefern. In der Ressourcenansicht wird diese Expression ausgewertet. Ist die Expression leer oder das Ergebnis |
Berechnungsart |
Die Dimensionskriterien können wie folgt berechnet werden:
|
Expression / Stichwort Ordner / Pythonklassenreferenz | Je nach eingestellter Berechnungsart (siehe vorheriger Punkt) wird ein Feld Expression , Ordner oder Pythonklassenreferenz an dieser Stelle eingeblendet und kann entsprechend befüllt werden. |
Bemerkungen | Freies Textfeld für die Beschreibung der Auslastungsdimension. Dieses Feld hat rein informativen Charakter und keine weitere Funktionalität. |
Die Auslastungsdimensionen werden immer für die Gegenseite angezeigt. Das bedeutet folgendes:
Ein Ressourcenplanungseintrag (sog. ResourceLinks
) enthält immer auf der einen Seite einen Bearbeiter (Projektbearbeiter, PlanningWorker, AbstractWorker) und auf der anderen Seite ein Projekt oder eine Projektphase, je nach Planungsebene
.
Die Gegenseite ist immer das jeweils andere. Ist also eine Auslastungsdimension für die Klasse Projekt definiert, erscheint sie als Auslastungsgrafik auf dem Bearbeiter und umgekehrt.
Durch Setzen des Häkchens "Auf gleicher Klasse anzeigen" wird die Auslastungsgrafik zusätzlich auf der eigenen Klasse angezeigt, was auf Listen von Objekten sinnvoll sein kann (zum Beispiel die Auslastungsdimension Bearbeiter
auf einer Teamliste).
Vorsicht ist geboten bei der Berechnung der Dimensionen via Python, wenn die Option "Auf gleicher Klasse anzeigen" aktiviert ist: Hier muss dann eine Fallunterscheidung gemacht werden, damit eine Auslastungsdimension sowohl auf der eigenen als auch auf der Gegenklasse funktioniert.
In Vertec ist es möglich, mittels Stichwort Ordnern eigene Kategorien zu definieren und Einträge diesen Kategorien zuzuordnen. Das können z.B. Standorte, Branchen, Skills etc. sein.
Die Ressourcenplanungsdaten können nach diesen Kategorien gruppiert und summiert ausgewertet werden, indem dafür eine Auslastungsdimension definiert wird.
Hier im Beispiel möchten wir die Ressourcenplanungsdaten nach Branchen auswerten. Dafür gibt es einen Stichwort Ordner Projekte nach Branchen:
Nun erstellen wir im Ordner Einstellungen > Ressourcenplanung > Auslastungsdimensionen eine neue Auslastungsdimension:
Als Berechnungsart wählen wir Ordner
.
Daraufhin erscheint ein Feld Stichwort Ordner unterhalb, wo mittels Buttons mit den drei Punkten der gewünschte Stichwort Ordner ausgewählt werden kann.
Als Klasse wählen wir Projekt
, da der Stichwort Ordner Projekte auswertet.
Möchten wir den Ordner nicht nur auf Bearbeitern anzeigen (Standardmässig wird die Auslastungsdimension auf der Gegenseite angezeigt, in unserem Beispiel also Bearbeiter (AbstractWorker)), setzen wir noch ein Häkchen bei Auf gleicher Klasse anzeigen.
Nun erscheint die Auswertung automatisch auf Bearbeitern sowie, weil wir das Häkchen gesetzt haben, auf Projekten:
Für die absoluten Zahlen kann die Grafik dann zusätzlich nach Excel exportiert werden.
Die weitgehendste Kontrolle über die Berechnung einer Auslastungsgrafik erlaubt die Berechnungsmethode via Python.
Die Berechnung erfolgt durch eine UtilizationProvider
Klasse, welche folgende Methoden definiert:
initialize(self, entries, startdate, enddate, subscriber) | Wird zu Beginn der Berechnung aufgerufen und initialisiert den Provider mit den Ausgangsobjekten für die Auswertung (einzelnes Objekt oder Inhalt eines selektierten Containers) und der darzustellenden Periode. |
generate(self, start, end, subscriber) |
Wird für jeden Balken (Intervall) der Grafik aufgerufen. Als Rückgabewert wird die Liste der Segmente für den Balken als Tuple (caption, value) zurückgeliefert. Die Generierung der Rückgabeliste kann (wie bei BI Generatoren
) mit dem Python |
get_series_properties(self) |
Optionale Methode. Wird zu Beginn der Berechnung aufgerufen und erlaubt es, die Darstellung der einzelnen Segemente noch genauer zu spezifizieren. Pro mögliche Segement-Caption kann ein Dictionary mit Angaben zu
zurückgegeben werden. |
Beispiel eines Providers, welcher eine Auslastungsgrafik nach Produktiv/Unproduktiv generiert (Planungsebene Projekt ):
class ProdInternalUtilizationProvider(object): productive_label_text = vtcapp.translate('label_productive') internal_label_text = vtcapp.translate('label_internal') def initialize(self, entries, start, end, subscriber): self.provider = vtcplanningcore.ResourcePlanningProvider( entries, start, end) self.entries_are_workers = vtcplanning.is_abstractworker(entries) if self.entries_are_workers: self.projects = self.provider.get_otherside_entries(subscriber) else: self.projects = entries def get_series_properties(self): prod_series = { 'caption': self.productive_label_text, 'orderIdx': 1, 'color': 'clDarkRed', } internal_series = { 'caption': self.internal_label_text, 'orderIdx': 2, 'color': 'clLightRed', } return [internal_series, prod_series] def generate(self, startdate, enddate, subscriber): """ Generates a list of series. Each series is identified by its name in the return value """ for project in self.projects: if self.entries_are_workers: planned_minutes = self.provider.get_planned_minutes_aggregated( None, project, startdate, None, subscriber) else: planned_minutes = self.provider.get_planned_minutes_aggregated( project, None, startdate, None, subscriber) # self.evalocl subscribes implicitly if self.evalocl("typ.produktiv", project): yield (self.productive_label_text, planned_minutes) else: yield (self.internal_label_text, planned_minutes)
Die Klasse muss in einem Scriptmodul definiert werden. Auf der Definition der Auslastungsdimension wird sie dann als <Modulname>.<Klassenname>
referenziert.
Folgende Auslastungsdimensionen werden von Vertec standardmässig mitgeliefert:
Projekt
)Projekt
)Projektbearbeiter
)Projektbearbeiter
)Projektphase
)