Consolidated status
Prerequisite: You must be familiar with the
Syntax used in Tutorials and
have already created an
extension.
We also assume that you are familiar with dashboard design within
iTop and OQL.
Within the Ticket class you have an aggregated status, using a
special type of Attribute, called
AttributeMetaEnum.
It is automatically computed based on sub-ticket class field
values, with a mapping logic.
You can mirror that logic and created a new AttributeMetaEnum field on the FunctionalCI class, which is computed based on fields defined below on one or multiple sub-classes.
If you have added some values to the enum status of some
sub-classes of FunctionalCI, such as for example
in_stock
, you may want to either
-
add a new value on the meta enum
operational_status
-
or just a new mapping as otherwise, by default, status='in_stock' will appear with a operation_status value of production instead of maybe implementation
Add a computed status
- itop-design / classes
-
<class id="FunctionalCI" _created_in="itop-config-mgmt" _delta="must_exist"> <fields> <field id="operational_status" xsi:type="AttributeMetaEnum" _delta="define"> <values> <value id="production">production</value> <value id="implementation">implementation</value> <value id="obsolete">obsolete</value> </values> <sql>operational_status</sql> <default_value>production</default_value> <!--If no mapping applies, this value is used--> <mappings> <!--define how to compute on the fly the AttributeMetaEnum based on values of other field defined below on child class--> <mapping id="FunctionalCI"> <!--ID must be the current class or a child class--> <attcode>status</attcode> <!--this is expected to be a attribute code of at least one child class--> <metavalues> <metavalue id="implementation"> <values> <value id="implementation"/> </values> </metavalue> <metavalue id="obsolete"> <!--This is the value of the AttributeMetaEnum--> <values> <value id="obsolete"/> <!--This are the values of the <attcode> defined in the mapping--> <value id="inactive"/> </values> </metavalue> </metavalues> </mapping> <!--You can define multiple mappings, first matching one is used to define the AttributeMetaEnum value--> </mappings> </field> </fields> </class>
Modify a computed status
In this example, we would like
-
to define a new
escalated
value for the Ticket Operational status, with its mapping -
change the mapping for a different logic
-
the
rejected
status of a UserRequest should be reported as anon-going
Ticket, -
while the
rejected
status of a Change should remained as aclosed
Ticket
-
- itop-design / classes / class@Ticket / fields
-
<field id="operational_status" xsi:type="AttributeMetaEnum"> <values _delta="must_exist"> <value id="escalated" _delta="define"> <code>escalated</ code> //Remove the blank on the closing tag after copy-paste !!!! It's due to dokuwiki tag collision </value> </values> <mappings> <mapping id="Ticket" _delta="must_exist"> <metavalues> <metavalue id="escalated" _delta="define"> <values> <value id="escalated_tto"/> <value id="escalated_ttr"/> </values> </metavalue> <metavalue id="closed" _delta="must_exist"> <values> <value id="rejected" _delta="delete"/> // remove the global mapping for the 'rejected' value </values> </metavalue> </metavalues> </mapping> <mapping id="Change" _delta="define"> // Define a mapping rule only for the Change <attcode>status</attcode> <metavalues> <metavalue id="closed"> <values> <value id="closed"/> // Not sure that this is needed as the Ticket mapping should apply <value id="rejected"/> // Only the Change 'rejected' value is mapped to 'closed' MetaEnum value </values> </metavalue> </metavalues> </mapping> // There is no need to create a mapping with id="UserRequest" </mappings> // for mapping the 'rejected' value with 'ongoing' MetaEnum value as it's the default </field>
Original 3.1
This is how it's defined by default
- 3.1 itop-design / classes / class@Ticket / fields
-
<field id="operational_status" xsi:type="AttributeMetaEnum"> <values> <value id="ongoing"> <code>ongoing</ code> </value> <value id="resolved"> <code>resolved</ code> <style> <main_color>$ibo-lifecycle-success-state-primary-color</main_color> <complementary_color>$ibo-lifecycle-success-state-secondary-color</complementary_color> <decoration_classes>fas fa-check</decoration_classes> </style> </value> <value id="closed"> <code>closed</ code> <style> <main_color>$ibo-lifecycle-frozen-state-primary-color</main_color> <complementary_color>$ibo-lifecycle-frozen-state-secondary-color</complementary_color> <decoration_classes/> </style> </value> </values> <default_style> <main_color>$ibo-lifecycle-neutral-state-primary-color</main_color> <complementary_color>$ibo-lifecycle-neutral-state-secondary-color</complementary_color> <decoration_classes/> </default_style> <sql>operational_status</sql> <default_value>ongoing</default_value> <mappings> <mapping id="Ticket"> <attcode>status</attcode> <metavalues> <metavalue id="resolved"> <values> <value id="resolved"/> </values> </metavalue> <metavalue id="closed"> <values> <value id="closed"/> <value id="rejected"/> </values> </metavalue> </metavalues> </mapping> </mappings> </field>