XML 数据模型参考

XML 数据模型参考。

本文档是 iTop 模块中 datamodel.xxxx.xml 文件所使用的 XML 格式的参考文档。更多详细内容请参考 iTop 官方文档

概述

XML 数据模型文件可用于定义:

  • - 使用安装程序或工具包"编译"时将生成实际 PHP 类
  • 菜单 - 插入 iTop 页面左侧的应用程序菜单中
  • 角色 - 管理对 iTop 对象的访问权限
  • 品牌标识

要定制用户门户,请参阅门户 XML 参考

基本原则

XML 数据模型包含初始声明和/或对在其他 XML 文件中做出的声明的更改

iTop 编译器分两步工作:

  1. 加载已安装模块的 XML 数据模型文件。XML 被合并为一个单一的 XML 定义。重要的是要理解,从一个空定义开始,iTop 将逐个合并每个 XML
  2. 解释最终的合并定义

默认情况下,给定 XML 的内容被合并到合并定义中。

更改节点内容

您可以使用 _delta 属性定义更改。此属性指定给定节点(包括其子节点)应如何处理。

_delta 可以取以下值:

_delta含义
merge(默认)如果此节点尚不存在,则创建它。然后检查其子节点中的 delta。这主要与结构节点相关
must_exist确保此节点已存在。然后检查其子节点中的 delta
if_exists2.3.0 新增 - 检查此节点是否已存在。如果是,检查其子节点中的 delta。否则忽略此节点。类似于 must_exist,但跳过当前节点而不是停止整个过程
define这是此节点的首次定义。其子节点中不应包含任何标志
define_if_not_exists如果节点尚不存在则定义它。否则忽略它
redefine此节点的内容必须被 delta 节点的内容替换
delete删除此节点。如果节点不存在则停止处理。不要在此节点下提供任何子节点
delete_if_exists删除此节点。不要在此节点下提供任何子节点
force2.4.0 新增 - 强制定义此节点,无论它是否存在

节点通过其标签名和 id 属性来标识。如果没有给出 id,则节点被标识为找到的第一个具有相同标签名的节点。

当编译器遇到 define/redefine 时,它认为子树是纯内容定义。因此,该子树中找到的任何 _delta_rename_from 属性都将被忽略。

当单个节点下可以有多个相同标签的节点时,我们称之为集合。

重命名节点

另一个属性是 _rename_from。使用它来指定项目(例如类字段)实际上是从 _rename_from 重命名为 id 的现有项目。

XML 通用结构

标签用法说明
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0">必需结构节点。此标签前不允许有注释。与先前版本相比的变化,请参阅 Version_30 的详细信息
<classes>必需声明的类
<class id="name">零个或多个类声明
<parent>cmdbAbstractObject</parent>必需父类。参见类属性继承
<properties>必需属性
<is_link>1</is_link>可选区分用于链接其他类的类。对于链接类设置为 1
<comment>必需添加到编译文件中的 PHP 注释,位于类声明之前
<category>bizmodel,searchable</category>可选此类的用途。参见类类别
<abstract>false</abstract>必需抽象类不能被实例化
<key_type>autoincrement</key_type>必需始终设置为 “autoincrement”
<db_table>name</db_table>必需此类使用的 MySQL 表名。此处给出的名称将自动添加安装时提供的后缀
<db_key_field>id</db_key_field>必需将标识符字段始终设置为 “id” 即可
<db_final_class_field>必需如果类位于类层次结构的顶部,则必须定义哪个 MySQL 列将用于跟踪对象实例的实际类。将其设置为 “finalclass” 即可
<naming>可选定义用于组成对象友好名称的属性。默认情况下,友好名称将渲染为给定属性的连接,以空格分隔。您可以通过添加字典条目 Class:<myClass>/Name 指定任何其他格式。此格式以类 printf 格式表达式给出(仅支持 $s。例如 '%1$s of %2$s')。由于此格式位于字典中,它可能被翻译,友好名称将取决于最终用户的语言
<attributes>必需用于组成友好名称的属性列表。注意顺序很重要
<attribute id="name">至少一个属性
<complementary_attributes>可选定义用于补充对象友好名称以区分重复项的属性列表。默认情况下,补充为空。您可以通过添加字典条目 Class:<myClass>/ComplementaryName 指定格式
<fields_semantic>可选定义承载类某些方面的属性(例如图像、状态等)
<image_attribute>可选承载应代表对象的图像的属性代码(必须声明为 AttributeImage)。如果未定义,则在必要时使用类图标
<state_attribute>可选承载对象状态的属性代码,如果有生命周期则必需,属性必须是当前类的枚举。如果此处未定义但在父类中定义,则继承
<order>可选定义类的默认排序顺序,如果省略则按友好名称排序
<columns>必需
`<column id=“name” ascending=“truefalse”>`至少一个
<style>可选指定类的样式(颜色和图标)。自 iTop 3.0 起支持
<icon>../../images/user-request.png</icon>可选为类指定图标(相对于模块根目录的路径)
<main_color>#4E79A5</main_color>可选类的主色,可以是任何有效的 CSS 颜色(hexa、rgba、hsla,但不能是变量)或 SCSS 变量
<complementary_color>#FFFFFF</complementary_color>可选类的互补色,可以是任何有效的 CSS 颜色或 SCSS 变量
<reconciliation>必需定义数据导入的默认协调方案
<indexes>可选定义表索引
<index id="name">零个或多个显式强制创建数据库索引,包含所有指定属性,按声明的顺序
<archive>可选归档配置
<enabled>true</enabled>必需仅适用于根类。设置为 true 以使此类及其后代可归档(添加两个魔法属性:archive_flag 和 archive_date)
<obsolescence>可选过时配置。一旦为类定义了过时,就会添加两个魔法属性(obsolescence_flag 和 obsolescence_date),层次结构中的所有类都有该标志(默认为 “No”)
<condition><![CDATA[status='closed']]></condition>必需定义对象是否过时的 OQL 表达式。此条件将由子类继承,除非被重新定义
<uniqueness_rules>可选保存对象时用于检查其唯一性的规则
<fields>必需属性声明(与从父类继承的属性累积)
<lifecycle>可选生命周期:状态和转换。在 3.0 中,“lifecycle/attribute” 标签被替换为 “fields_semantic/attribute_state”
<highlight_scale>可选定义对象显示(列表中的背景颜色和图标)的高亮代码列表
<presentation>必需展示
<details>必需定义对象的可视化和编辑表单的展示。可以被生命周期标志 “hidden” 覆盖
<search>必需搜索屏幕的 “Add new criteria” 菜单的 “Most popular” 部分中显示的属性有序列表
<default_search>可选搜索屏幕中显示的默认搜索条件有序列表。如果留空或不存在,则继承自父类
<list>必需默认在结果列表中显示的属性有序列表
<summary>可选在外部键弹出概述中显示的属性有序列表。自 iTop 3.1 起
<custom_presentations>可选扩展带来的自定义属性列表。自 iTop 3.1 起
<menus>必需主 GUI 中显示的菜单声明(左窗格)
<user_rights>必需用户权限策略的实现:用户将拥有一个或多个角色,授予他们访问权限
<groups>必需组是类的集合。授权基于此分组 - 参见 “profiles”
<profiles>必需将在应用程序中列出的角色。用户可拥有一个或多个角色。“administrator” 角色始终存在且不可重新定义
<files>可选用于在 XML 中嵌入二进制文件(如图标)。自 iTop 2.0.1 起支持
<dictionaries>可选用于在 XML 中添加本地化。自 iTop 2.0.1 起支持
<branding>可选GUI 的外观。Logo 定义为 PNG 文件(相对于模块根目录的路径 = env-production),或 fileref 标签
<main_logo>可选主 GUI 的 Logo(菜单展开时左上角)。尺寸:最大宽度 310px,最大高度 70px
<main_logo_compact>可选控制台菜单折叠时左上角的 Logo。尺寸:宽度 37px,高度 37px
<login_logo>可选登录页面的 Logo。尺寸:最大宽度 300px,最大高度 54px
<portal_logo>可选客户门户的 Logo。尺寸:最大宽度 192px,最大高度 50px
<main_favicon>可选主 GUI 和默认其他 GUI 使用的 Favicon(浏览器标签中的图标)。自 iTop 3.2.0 起
<portal_favicon>可选最终用户门户使用的 Favicon。自 iTop 3.2.0 起
<login_favicon>可选登录页面使用的 Favicon。自 iTop 3.2.0 起
<themes>必需主题主节点,用于自定义 iTop 外观。自 iTop 2.7.0 起
<themes_common>必需3.1 新增 全局主题规则,与 themes 节点中声明的每个主题一起编译。可以包含与 theme 节点相同的内容
<constants>可选要编译为 PHP defines 的常量
<portals>可选用户界面入口点的定义。自 iTop 2.2.0 起支持
<module_parameters>可选模块特定参数的定义。自 iTop 2.2.0 起支持
<module_designs>可选模块特定设计数据。自 iTop 2.3.0 起支持
<snippets>可选要注入 PHP 模型文件中的 PHP 代码片段。自 iTop 2.2.0 起支持
<meta>可选存储有关 XML 定义的元信息的根节点,编译器忽略
<events>可选3.1 新增 事件定义列表
<event_listeners>可选3.1 新增 全局事件监听器

字段类型

字段(也称为属性)是对象的实际数据成员。一个字段通常对应数据库中一个(或多个)表列。不同类型的字段如下:

类型说明
AttributeBlob二进制大对象(最大 4GB)
AttributeCaseLog案例日志,讨论线程。每条消息标有说话者姓名和当前时间
AttributeCustomFields自定义模块处理的自定义字段。自 iTop 2.3.0 起支持
AttributeDashboard仅用于显示信息的仪表板字段。自 iTop 2.6.0 起支持
AttributeDate日期(无时间)
AttributeDateTime日期和时间
AttributeDecimal十进制值
AttributeDuration持续时间,以秒存储,以天/小时/分钟/秒显示
AttributeEmailAddress电子邮件地址
AttributeEncryptedPassword加密存储的密码字符串(最大 65535 字符),在 UI 中不可读。自 3.2.1 起
AttributeEncryptedString加密存储的字符串(最大 255 字符),在 UI 中可读
AttributeEnum固定值集合中的字符串
AttributeEnumSet固定值集合中的字符串集合
AttributeExternalField另一个对象持有的属性的别名(参见 “ExternalKey”)
AttributeExternalKey指向给定类对象的外部键
AttributeHierarchicalKey指向同一类的外部键,用于构建对象层次结构
AttributeHTMLHTML 文本(最大 4GB)
AttributeImage图像(最大 4GB)
AttributeInteger正整数值
AttributeIPAddressIP 地址
AttributeLinkedSet指向当前对象的对象集合
AttributeLinkedSetIndirect通过"链接类"与当前对象相关的对象集合
AttributeMetaEnum在其他枚举字段之后计算的字符串,可在子类中定义。自 iTop 2.3.0 起支持
AttributeObjectKey灵活的外部键:指向任何类对象的指针。自 iTop 2.2.0 起实验性支持
AttributePercentage百分比(0 到 100 之间的整数),以条形显示
AttributePhoneNumber电话号码
AttributeRedundancySettings关系冗余设置。自 iTop 2.2.0 起支持
AttributeStopWatch累计在某些状态中花费的时间
AttributeString字符串(限制为 255 字符的一行)
AttributeSubitem秒表中存在的某个状态信息。两者必须在同一类中定义!
AttributeTagSet要与对象关联的标签列表。存储在 255 长度字符串上
AttributeText多行文本(最大 64KB)
AttributeLongText大文本(最大 4GB)
AttributeURLURL(http…)

生命周期

刺激(Stimuli)

每个从一个状态到另一个状态的转换(对于有生命周期的对象)在对象收到刺激时触发。不同类型的刺激如下:

类型说明
StimulusUserAction最终用户决定的操作。刺激显示在 Actions 菜单中(如果对象处于考虑此刺激的状态)
StimulusInternal可以以编程方式触发的操作

转换上的操作

有关可在 XML 中作为操作调用的现有方法,请参阅转换可用方法

菜单类型

不同类型的菜单如下:

类型说明
MenuGroup顶级菜单。此菜单将始终保持可见。它是其他菜单的容器
DashboardMenuNode仪表板。内容可以通过 “export” 功能生成。内容可以在文件(definition_file)中或直接在此处(definition)
NewObjectMenuNode创建新对象的快捷方式
SearchMenuNode搜索对象的快捷方式
TemplateMenuNode用于二级菜单组
OQLMenuNode显示搜索结果的快捷方式,给定 OQL 查询

原文:https://www.itophub.io/wiki/page?id=3_2_0:customization:xml_reference

2026/01/23 14:22 by127.0.0.1

版本:3_2_0/customization/xml_reference.txt · Last modified: 2026/01/23 14:22 by 127.0.0.1