IT运维流程库历史主题 · 只读
← 返回目录

二次开发-开发方法-XML数据模型引用

XML数据模型引用
本文档是引用文档,用于iTop模块内部的datamodel.xxxx.xml文件中使用的XML格式。 XML数据模型文件可用于定义:
  • classes-使用安装程序或工具包“编译”时将生成实际的PHP类
  • menus-插入到iTop页面左侧的应用菜单中
  • profiles --管理对iTop对象的权利访问
  • branding
iTop的2.1、2.2、2.3和2.4版本对XML结构进行了许多轻度更改,以简化iTop的自定义。 iTop始终支持较旧的格式(向后兼容)。本章介绍了新格式引入的修改的完整列表。[ :8082/bin/view/5/5.1/5.1.9/#changes_history]变更记录.
为了阐明引用数据模型,在iTop 2.1.0中做了一些更改。有关更多信息,请阅读迁移2.0.3至2.1.0注释
原则
XML数据模型包含其他XML文件中进行的初始声明和声明的更改。
iTop编译器分两个步骤工作:
  • 加载已安装模块的XML数据模型文件。 XML被组合成一个单一的XML定义。对于图片而言,重要的是,从一个空的定义开始,iTop将一个一个地合并每个XML,
  • 解释最终的组合定义。
下文描述的XML格式引用适用于组合定义。因此,XML可能不包含所有强制性节点,而仅包含标识变更路径所需的那些以及(重新)定义项目所需的那些。
默认情况下,给定XML的内容将合并到组合定义中。
更改节点内容
您可以使用属性_delta定义更改。属性指定必须如何考虑给定节点,包括其子节点。
_delta可以采用以下值:
_delta含义
merge (default)如果此节点尚不存在,请创建它。然后检查其子节点中的增量。这与结构节点最相关
must_exist确保此节点已经存在。然后检查其子节点中的增量。
if_exists2.3.0中的新增功能-检查此节点是否已经存在。如果是这样,请检查其子节点中的增量。否则,请忽略此节点。它类似于must_exist,但是它跳过当前节点而不是停止整个流程。
define这是此节点的第一个定义。不应在其子节点中找到任何标志。
define_if_not_exists如果该节点尚不存在,则对其进行定义。否则忽略它。
redefine该节点的内容必须替换为增量节点的内容。
delete删除该节点。该节点不应有子节点(无内容)
force强制定义此节点(无论是否存在)
节点由其标签名称和属性ID标识。如果未给出id,则将该节点标识为具有相同标签名称的找到的第一个节点。
当编译器遇到define/redefine时,它将认为子树是纯内容定义。结果,在该子树中找到的任何属性_delta或_rename_from将被忽略。
重命名节点
另一个属性是_rename_from。使用它来指定该项目(例如类字段)实际上是从_rename_from重命名为id的现有项目。
XML的一般结构
使用项目左侧的三角形箭头展开以折叠其定义。

标签用法描述 <itop_design xmlns:xsi="2001/XMLSchema-instance" version="1.2">强制性的结构节点。由于iTop 2.4.0中轻度的更改,版本已增加到1.4 <classes>强制性的宣告班 <class id="name">零或更多上课声明 <parent>cmdbAbstractObject</parent>强制性的父类 <properties>强制性的 <is_link>1</is_link>可选的用于将其他类链接在一起的区分类。设置为1链接类。 <comment>强制性的在类声明之前,将PHP注释添加到编译文件中 <category>bizmodel,searchable,structure</category>可选的此类的用法。 <abstract>false</abstract>强制性的抽象类无法实例化。 <key_type>autoincrement</key_type>强制性的始终设置为“自动增量” <db_table>name</db_table>强制性的用于此类的MySQL表的名称。此处给出的名称将自动在安装时提供的后缀之前。 <db_key_field>id</db_key_field>强制性的始终将标识符字段设置为“ id”就可以了 <db_final_class_field>finalclass</db_final_class_field>强制性的如果该类在分层类的顶部,则必须定义将使用哪个MySQL列来跟踪对象实例的实际类。将此设置为“ finalclass”就可以了。 <naming>可选的定义用于组成对象友好名称的属性。默认情况下,友好名称将呈现为给定属性的串联,并用空格分隔。您可以通过添加字典条目“ Class:<myClass >> Name”来指定任何其他格式。该格式以类似于prin的格式表达式给出(仅支持$ s,例如'%1 $ s of%2 $ s')。由于此类格式位于词典中,因此可以对其进行翻译,并且友好名称依赖于终端用户的语言。请注意,在iTop 2.0.3中,iTop随附的XML文件中存在标签<format>,但未使用它,这具有误导性。 <attributes>强制性的用于组成友好名称的属性列表。请注意,顺序很重要。 <attribute id="name">最后一个 <order>可选的定义类的默认排序顺序,如果省略,则按友好名称对类进行排序 <columns>强制性的 <column id="name" ascending="true|false">最后一个在此属性上升序或降序。属性的顺序很重要。 <display_template>可选的 <icon>可选的为您的班级指定一个图标 <reconciliation>强制性的定义数据导入的默认对帐方案。 <attributes>强制性的用于对帐的属性列表。 <attribute id="name">最后一个 <indexes>可选的定义表索引 <index id="name">零或更多显式强制使用声明的顺序使用所有指定的属性创建数据库索引。 <attributes>强制性的索引使用的属性列表。顺序很重要。 <attribute id="name">最后一个 <archive>可选的档案配置。 <enabled>true</enabled>强制性的仅适用于根类。设置为true以使此类及其所有后代均可归档(添加两个魔术属性:归档_flag和归档_date)。当任何归档已启用= true时尝试将其设置为false会在运行时导致父 <obsolescence>可选的废弃配置。一旦为类定义了废弃,就添加了两个魔术属性(废弃_flag和废弃_date),分层中的所有类都具有该标志(默认为“否”)。 <condition><![CDATA[status='closed' AND closed_date < DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH),'%Y-%m-%d 00:00:00')]]></condition>强制性的定义对象是否作废的OQL表达式。除非重新定义,否则子类将继承此条件。 <fields>强制性的属性声明(累加从父类继承的属性,如果有的话) <field>最后一个属性的声明。请参阅部分中的各种类型的属性[ :8082/bin/view/5/5.1/5.1.9/#fields]领域 <lifecycle>可选的生命周期:状态和转换 <highlight_scale>可选的定义对象显示的突出显示代码列表(列表中的后台颜色和图标) <item id="warning">最后一个新的高光代码的定义 <rank>1</rank>强制性的此突出显示代码的等级(或权重) <color>HIGHLIGHT_WARNING</color>强制性的此代码的配色方案:HIGHLIGHT_NONE(透明),HIGHLIGHT_WARNING(橙色),HIGHLIGHT_CRITICAL(红色)或HIGHLIGHT_OK(绿色) <icon>强制性的对象的图标在此状态下 <attribute>name</attribute>强制性的用于状态的属性(必须声明为AttributeEnum,可以从父类继承) <stimuli>强制性的对象将敏感的事件列表 <stimulus>最后一个宣布刺激。在本节中查看各种类型的刺激[ :8082/bin/view/5/5.1/5.1.9/#stimuli]刺激物 <states>强制性的可能的状态。状态列表必须是为“状态”属性定义的值的子集。 <state id="name">最后一个状态的完整定义:名称,属性标志和转换为其他状态 <initial_state_path>可选的对象在创建时将经过的状态的有序列表 <state_ref>new</state_ref>强制性的一个状态 <inherit_flags_from>*another_state*</inherit_flags_from>可选的继承标记的状态名称。注意:must_变更和must_prompt标志永远不会被继承 <highlight>可选的突出显示此状态的定义 <code>name</code>强制性的突出显示代码 <flags>强制性的在此定义给定状态下如何在GUI中显示属性 <attribute id="name">最后一个GUI组合的标志组合 <hidden>可选的属性在此状态下处于隐藏状态 <read_only>可选的属性已显示,无法修改 <must_prompt>可选的对象进入状态时,GUI必须提示用户 <must_change>可选的当对象进入状态时,必须由用户更改属性。 <mandatory>可选的进入此状态时必须定义属性。这将覆盖属性的定义(属性“ is_null_allowed”) <transitions>强制性的从此状态到另一状态的可能转换列表 <transition id="name">最后一个对于给定的刺激,定义目标状态和要执行的操作活动。如果省略标识符,将使用刺激的名称。 <stimulus>name</stimulus>强制性的事态触发此转换 <target>name</target>强制性的转换之后达到的状态 <flags>强制性的在此定义该转换的属性如何在GUI中显示 <attribute id="name">最后一个GUI组合的标志组合 <mandatory>可选的必须定义属性才能完成转换。这将覆盖属性的定义(标签“ is_null_allowed”) <must_change>可选的用户必须更改属性才能完成转换 <must_prompt>可选的转换期间属性以编辑模式显示 <read_only>可选的属性已显示,但无法修改 <actions>强制性的操作活动的订购列表,以在转换期间执行 <action>最后一个单个功能 <verb>name</verb>强制性的将被调用的方法的名称(请参阅下文的标签“方法”) <params>强制性的方法参数列表 <parameter xsi:type="string|int|float|reference">零或更多参数的价值 <methods>强制性的其他职能声明。职能将在该类内声明。这是重载DBObject或cmdbAbstractObject的某些功能的意思。小心使用。 <method id="name">零或更多A职能 <comment>可选的PHP注释。将类的声明放到生成的(编译的)PHP代码中。 <static>false</static>强制性的如果需要声明静态职能,则设置为true,否则设置为false。 <access>public</access>强制性的设置为公众,受保护或私有(请参阅PHP文档) <type>Overload-DBObject</type>强制性的使用以下值之一:LifecycleAction,Overload-cmdbAbstractObject,Overload-iDisplay,Overload-DBObject,Overload-ExNihilo,自定义 <arguments>可选的声明生命周期操作活动的参数类型 <argument>current_stimulus_code</argument>零或更多参数的类型。使用以下值之一:attcode,class,current_stimulus_code,int,引用,字符串 <code>强制性的%5