Utilization dimensions
Product line
Standard
|Expert
Operating mode
CLOUD ABO
|ON-PREMISES
Modules
Services & CRM
Budget & Phases
Purchases
Resource Planning
Business Intelligence
Utilization Graphs are shown broken down according to different dimensions. These are the criteria according to which the bars (or values) are divided.
This can be, for example, by project leader, by industry, by project type, etc. But you can also define any of your own dimensions, such as Verkauft/Offeriert
, Produktiv/Unproduktiv
etc.
Utilization dimensions are defined in the folder Settings > Resource planning > Utilization dimensions:
designation | Name of the dimension. This designation appears as button text on the detail view and can be defined in different interface languages if required. |
Active | Controls whether this utilization dimension is applied. |
Order | Here you can control the order in which the buttons for utilization graphs are displayed on the detail view. These are sorted in ascending order. We recommend choosing larger sort steps (e.g. steps of 10). This will allow you to insert buttons in between. |
Show in same class | Controls whether the load dimension should also be shown on the class of the selected object or only on the opposite side (default). |
Quantity of series | Here you can set how many series (bar segments in the graphic) should be shown. You can choose between:
The corresponding quantity of series are then displayed as individual segments and the remaining values under |
Classes | Controls which classes are available in this load dimension. Possible classes are:
See also section Own Own Class / Opposite Side . |
Condition | Here, a display condition can be specified via OCL expression, which can be used to control whether or when this load dimension is displayed or not. In the OCL editor, If the object is used in the OCL, the administrator must write the code in such a way that it works for all combinations of class / single object / list. The result of this expression must return a Yes/No (Boolean) value. The resource view evaluates this expression. If the expression is empty or the result is |
Calculation method | The dimensional criteria can be calculated as follows:
|
Expression / Keyword folder / Python class reference | Depending on the calculation method set (see previous point), a field is Expression , Ordner or Pythonklassenreferenz at this point and can be filled accordingly. |
Remarks | Free text field for the description of the load dimension. This field is purely informative and has no further functionality. |
The load dimensions are always shown for the opposite side. This means:
A resource planning entry (so-called resource planning entry) ResourceLinks
) always contains on one side a user (project user, PlanningWorker, AbstractWorker) and on the other side a project or a project phase, depending on the Planning Level
.
The other side is always the other side. So if a utilization dimension is defined for the class project, it appears as a utilization graph on the user and vice versa.
By setting the check mark “Show in same class,” the utilization graph is also shown on the own class, which can be useful on lists of objects (e.g. the utilization dimension Bearbeiter
on a team list).
Caution is advised when calculating the dimensions via Python if the option “Show on same class” is activated: a case distinction must be made here, so that a utilization dimension works on both the own and the counterclass.
In Vertec it is possible to define your own categories using keyword folders and to assign entries to these categories. These can be e.g. locations, industries, skills etc.
The resource planning data can be grouped and summarized according to these categories by defining a utilization dimension.
In this example, we would like to evaluate the resource planning data by industry. For this purpose, there is a keyword folder projects by industry:
Now we create a new utilization dimension in the folder Settings > Resource planning > Utilization dimensions:
As calculation method we select Ordner
.
A field keyword folder appears below, where buttons with the three dots can be used to select the desired keyword folder.
As a class we choose Projekt
, because the folder keyword evaluates projects.
If we do not want to show the folder only on users (by default, the load dimension is shown on the opposite side, in our example, users (AbstractWorker)), we put a check mark on Show on same class.
Now the evaluation will appear automatically on users and, because we have checked the box, on projects:
For the absolute numbers, the graph can also be exported to Excel.
The most extensive control over the calculation of a load graph allows the calculation method via Python.
The calculation is carried out by a UtilizationProvider
Class that defines the following methods:
initialize(self, entries, startdate, enddate, subscriber) | Is called at the beginning of the calculation and initializes the provider with the output objects for the evaluation (single object or content of a selected container) and the period to be displayed. |
generate(self, start, end, subscriber) | Called for each bar (interval) of the graph. The return value is the list of segments for the bar as a tuple (caption, value). The generation of the return list can be done (as with Bi generators
) with the Python |
get_series_properties(self) | Optional method. Invoked at the beginning of the calculation and allows to specify the representation of the individual segments even more precisely. For each possible segment caption, a dictionary containing information about
be returned. |
Example of a provider that generates a utilization graph according to productive/unproductive (Planning Level Project ):
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)
The class must be defined in a script module. On the definition of the load dimension, it is then <Modulname>.<Klassenname>
referenced.
The following load dimensions are supplied by Vertec as standard:
Projekt
)Projekt
)Projektbearbeiter
)Projektbearbeiter
)Projektphase
)