XWiki不只是一般的wiki引擎;它暴露了可以在表现层加以利用的数据模型。结合其强大的脚本功能,XWiki数据模型可以帮助你构建简单到复杂的应用程序而几乎不需访问XWiki核心部分。换句话说,你可以通过XWiki的Web界面构建自定义应用程序而无需编译,打包和部署软件组件。
本次教程为想要在表现层构建应用程序的用户解释XWiki数据模型:类,属性和对象。这将帮助你了解如何在表现层通过编程来实现功能。
有关XWiki底层数据库schema(表和字段)的信息,请参阅:XWiki数据库schema。
XWiki 类, 对象, 和属性
如果你熟悉面向对象编程,那么就能理解类,属性和对象的概念。XWiki表现层数据模型与之是大同小异。
类
一个XWiki类就像一个模板定义了一个独特类型的对象。它定义了对象可以有什么属性。当你定义一个自定义类,那么你的应用程序可能需要创建该类的一个或多个对象(实例)。类本身就像是一个cookie cutter(做饼干的模板),而对象是类的唯一实例。所以,在这个比喻中,如果类是做饼干的模板,那么对象就是饼干。
一个类是附加在一个页面上。每一页面最多只能有一个类。类是名称是附加在这个文档的名称。
属性
属性是一个对象可以拥有的特性。在一个类定义,属性定义了类的每个唯一实例可以具有值的数据字段。属性拥有displayers,用于在视图或者编辑模式下控制属性值的显示方式。一些displayers采用高级的选择器帮助你输入一个有效的属性值。
XWiki目前支持以下几种属性(数据类型):
字段类型 | 从哪个版本开始 | 描述 | 截图 |
---|---|---|---|
String | 允许存储和显示一行文本 | ||
TextArea | 允许存储和显示大文本字段(text和wysiwyg) | ||
Number | 允许存储和显示integer,long,float,double | ||
Password | 允许存储密码字段,可加密或者创建密码散列 | ||
4.2M3引入 | 允许存储电子邮件字段,可以在显示时进行模糊处理 | ||
Boolean | 允许存储和显示布尔值((yes/no或1/0),它可以显示为下拉选择或复选框字段 | ||
Static List | 允许存储和显示单选或多选字段,可以显示为下拉选择,复选框,单选或自动提示字段。Static List字段的值可以在字段定义里配置 | ||
Database List | 允许存储和显示单选或多选字段,可以显示为下拉选择,复选框,单选或自动提示字段。static list字段的值是来自其他XWiki数据查询 | ||
Database Tree List | 和Database List字段一样,但是数据可以作为树显示,使用的是Yahoo Javascript Tree库 | ||
Page List | 4.2M3引入 | 和Database List字段一样,但存储XWiki页面名称 | |
Date | 允许存储和显示日期或日期时间值。日期选择器是如下图所示 | | |
User List | 允许存储和显示单选或多选用户。该字段使用用户选择器,如下所示 | | |
Group List | 允许存储和显示单选或多选组。该字段使用用户选择器,如下所示 | | |
Computed Pseudofield | 4.2M3引入 | 允许创建一个虚拟的字段,可以使用自定义显示以及通过使用脚本来获得值 | |
Time Zone | 7.3M1引入 | 允许显示和编辑时区 |
从4.3M2开始你可以定义自己的属性类型。
对象
对象是类的唯一实例,而类是由每个属性组成。
一个对象附加到特定页面。每个页面可以有多个对象。
使用对象,你在wiki插入结构化信息,而在传统的wiki只能输入非结构化信息(纯文本)。这就是为什么XWiki是第二代wiki的原因之一。
综上所述:
- 类定义一个对象类型以及对象具有的属性。
- 属性定义了对象可以拥有的数据类型。属性类型(数据类型)是为类定义的,但对于属性的实际值在当对象从类实例化时定义。
- 对象是类的唯一实例,具有类定义的所有属性的值。
推荐阅读
- 武装你的类和对象的知识,你可以尝试创建一个小的应用程序,如FAQ应用程序。
- 你也可以开始了解如何使用脚本来显示wiki页面对象的属性。
- 你也可以尝试使用一分钟创建App扩展,它简化了如何开始开发应用程序所需的小知识。生成你的应用程序后,如果你想进一步为你的应用程序去开发新的功能,那么你需要用有关类,对象和脚本的知识。