Auslastungsdimensionen

Auslastungsdimensionen

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 22.11.2022
Aktualisiert: 09.05.2023 | Schreibfehler korrigiert.

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/OfferiertProduktiv/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).
Siehe dazu auch Abschnitt Eigene Klasse / Gegenseite .

Anzahl Serien

Hier kann eingestellt werden, wie viele Serien (Balkensegmente in der Grafik) angezeigt werden sollen. Es kann gewählt werden zwischen:

  • Alle
  • 3 Serien und Andere
  • 5 Serien und Andere
  • 7 Serien und Andere
  • 9 Serien und Andere

Die entsprechende Anzahl Serien werden dann als einzelne Segmente dargestellt und die restlichen Werte unter Andere summiert angezeigt.

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 Eintrag angezeigt. Hierbei handelt es sich um das aktuell im Baum ausgewählte Objekt.

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 oclIsTypeOf der konkrete Typ geprüft und/oder mit oclAsType gecastet werden.

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 true, dann wird die Ansicht angezeigt.

Berechnungsart

Die Dimensionskriterien können wie folgt berechnet werden:

  • Ordner: Wird diese Berechnungsart gewählt, erscheint ein weiteres Feld, wo ein Stichwort Ordner ausgewählt werden kann. Die Objekte werden dann gemäss ihrer Zuordnung als Balkensegmente angezeigt (z.B. nach Branchen, wenn die Projekte in einer Branchen Ordnerstruktur abgelegt sind).
    • Falls der Stichwort Ordner nicht Exclusive ist, ist das Dimensionsobjekt ungültig. In der Grafik kann diese ungültige Dimension nicht ausgewählt werden.
    • Falls der Stichwort Ordner nicht Inclusive ist, werden die zugehörigen Objekte zusammengefasst in einem Balkensegment "Andere" angezeigt.
  • Expression: Hier kann eine OCL-Expression angegeben werden. Die Expression muss einen String-Wert als Ergebnis liefern. Die Balkensegmente entsprechen den gruppierten Ergebnissen dieser Auswertung. Beispiel: Zusammenfassung von Plandaten auf Projekten nach Projekttyp. Die Expression in diesem Fall wäre dann typ.bezeichnung.
    Passt ein Kriterium nicht auf alle zugrundeliegenden Objekte (z.B. bearbeiterstufe nicht zu den Planungsbearbeitern), dann werden die nicht passenden Objekte in einem Balkensegment Andere zusammengefasst angezeigt. Es erscheint kein Fehler.
  • Pythonklasse: Zur Berechnung kann auch eine Pythonklasse verwendet werden, in welcher die Daten entsprechend aufbereitet werden. Dies ermöglicht es, eine komplett eigene Logik für die Darstellung der Balken zu definieren. Während die anderen Berechnungsmethode bloss eine Gruppierung der vorhandenen Planungsdaten vornehmen (die Summe eines Balkens ist jeweils gleich) können via Python Klasse die Werte komplett unabhängig berechnet werden. Dafür muss ein sogenannter UtilizationProvider angegeben werden, siehe dafür weiter unten .
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.

Eigene Klasse / Gegenseite

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.

Beispiel Auslastungsdimension nach Stichwort Ordner

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.

Berechnung von Auslastungsdimensionen via Python

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 yield Operator geschehen.

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

  • caption
  • orderIdx und
  • color

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.

Mitgelieferte Auslastungsdimensionen

Folgende Auslastungsdimensionen werden von Vertec standardmässig mitgeliefert:

  • Projekte (für Klasse Projekt)
  • Projekttypen (für Klasse Projekt)
  • Bearbeiter (für Klasse Projektbearbeiter)
  • Bearbeiterstufen (für Klasse Projektbearbeiter)
  • Projektphasenstatus (für Klasse Projektphase)
Bitte wählen Sie Ihren Standort