You are browsing the documentation for iTop 3.0 which is not the current version.

Consider browsing to iTop 3.2 documentation

This is a complement to the iTop customization XML reference.
If you are using a tool to customize iTop (e.g. ITSM Designer), then you could encounter another behavior.

Class properties inheritance

This document aims at presenting how various class characteristics inherit from the parent class.

The evaluation is made on how iTop will behave in the end. For instance, the comment on the class has solely an impact on the generated PHP code, while relations will change the way an impact diagram is built (and the inheritance has no visible impact on the compiled PHP code!)

Encountered cases are:

  • No: the characteristic is declared explicitely for each subclass, by default it is considered empty/undefined
  • Inherit: inherited from the parent class, or complete redefinition can be done on subclasses
  • Inherit / additivity : items could be added in the subclasses
  • Inherit / additivity + overload : items could be added or redefined in the subclasses

The nodes given are the smallest entity that is taken into account (granularity), meaning that redefining only a subpart of the node requires a copy of the rest (explicit copy of other subnodes).

Nodes are given as their relative path under <itop_design>/<classes>/<class>. For instance “properties / is_link” refers to…

<itop_design>
  <classes>
    <class id="Server">
      <properties>
        <is_link>
        </is_link>
      </properties>
    </class>
  </classes>
</itop_design>
XML Node Inherited Comments
<parent> n/a
<properties> / <is_link> No Is inheritance compatible with links?
<properties> / <comment> No
<properties> / <category> No
<properties> / <abstract> No Same as in PHP inheritance scheme
<properties> / <key_type> No Should be consistent with a given class tree
<properties> / <db_table> No Non sense!
<properties> / <db_key_field> No
<properties> / <db_final_class_field> No
<properties> / <naming> / <attributes> No
<properties> / <naming> / <complementary_attributes> No
<properties> / <field_semantic> / <image_attribute> Inherit
<properties> / <field_semantic> / <state_attribute> Inherit
<properties> / <order> No
<properties> / <style> / <main_color> Inherit
<properties> / <style> / <complementary_color> Inherit
<properties> / <style> / <icon> Inherit
<properties> / <reconciliation> No
<properties> / <indexes> No n/a, similar the table name definition
<properties> / <archive> / <enabled> n/a Must declared consistently within the whole class tree. Otherwise an error is issued
<properties> / <obsolescence> / <condition> Inherit
<properties> / <uniqueness_rules> Inherit / additivity FIXME Does it allow the redefinition of an inherited rule?
<fields> Inherit / additivity
<lifecycle> No
<methods> Inherit / additivity + overload Based on PHP class methods inheritance
<relations> Inherit / additivity + overload TODO: check the overloading part: done late at runtime!
<presentation> / <details> Inherit
<presentation> / <search> Inherit
<presentation> / <default_search> Inherit
<presentation> / <list> Inherit
When a field is defined on a parent class, you cannot overwrite any of its tags, because the XML logic today does not supports it.

Some of the tags which would be nice to overwrite:

  • Mandatory: because its a database setting, workaround: using GetAttributeFlags() method
  • Default value: its also currently a database setting, workaround: using OnInsert() method
  • Filter: for this one there is no workaround :-( appart from moving and duplicating the field at the child level.

Only one thing can be overwritten on the children classes easily, its the dictionary entries, including the values labels of an Enum.

3_0_0/customization/class_properties_inheritance.txt · Last modified: 2022/01/21 16:52 (external edit)
Back to top
Contact us