作者:笑看天下 | 来源:互联网 | 2024-12-17 16:41
本文档不仅介绍XWiki作为一个增强版的wiki引擎,还深入探讨了其数据模型,该模型可在用户界面层面被充分利用。借助其强大的脚本能力,XWiki的数据模型支持从简单的应用到复杂的系统构建,几乎无需直接接触XWiki的核心组件。
XWiki超越了传统wiki引擎的功能,提供了一种在用户界面层级即可利用的数据模型。配合其先进的脚本功能,XWiki的数据模型使得从简易到复杂的应用构建变得轻松,无需深入XWiki的核心代码。这意味着,通过XWiki的Web界面,用户可以构建定制化的应用程序,而无需经历编译、打包和部署等繁琐步骤。
本指南旨在帮助希望在用户界面层级构建应用程序的开发者理解XWiki的数据模型,包括类、属性和对象的概念。这些知识将有助于开发者通过编程方式在用户界面实现所需功能。
关于XWiki底层数据库架构(表和字段)的具体信息,请参考:XWiki数据库架构。
XWiki 类、对象及属性详解
对于熟悉面向对象编程的开发者来说,理解XWiki中的类、属性和对象概念并不困难。这些概念在XWiki的表现层数据模型中有着类似的应用。
类
在XWiki中,类相当于一种模板,定义了一种类别的对象。它规定了对象可能具有的属性。当创建自定义类时,应用程序可能会基于此类创建一个或多个对象实例。可以将类比作制作饼干的模具,而对象则是由该模具制作出的饼干。
每个页面最多只能关联一个类,且此类的名称通常与该页面的名称相同。
属性
属性定义了对象可能具有的特性。在类的定义中,属性设定了每个对象实例可以持有的数据字段。属性还具备展示器,用于控制属性值在查看或编辑模式下的显示方式。某些展示器提供了高级选项,帮助用户更准确地输入有效值。
当前,XWiki支持多种属性类型(数据类型),包括但不限于:
属性类型 | 起始版本 | 描述 | 示例 |
---|
字符串 (String) | - | 存储和显示单行文本 | - |
文本区域 (TextArea) | - | 存储和显示大量文本(普通文本和富文本) | - |
数字 (Number) | - | 存储和显示整数、长整数、浮点数和双精度数 | - |
密码 (Password) | - | 存储密码字段,支持加密或生成密码哈希 | - |
电子邮件 (Email) | 4.2M3 | 存储电子邮件地址,显示时可进行遮掩处理 | - |
布尔值 (Boolean) | - | 存储和显示布尔值(如是/否或1/0),可表现为下拉菜单或复选框 | - |
静态列表 (Static List) | - | 存储和显示单项选择或多选项,可作为下拉菜单、复选框、单选按钮或自动完成字段显示。静态列表的值可在字段定义中设置 | - |
数据库列表 (Database List) | - | 与静态列表类似,但其值来源于其他XWiki数据查询 | - |
数据库树列表 (Database Tree List) | - | 与数据库列表相同,但数据以树状形式展示,使用Yahoo Javascript Tree库 | - |
页面列表 (Page List) | 4.2M3 | 类似于数据库列表,但存储XWiki页面名称 | - |
日期 (Date) | - | 存储和显示日期或日期时间值,使用日期选择器 | |
用户列表 (User List) | - | 存储和显示单个或多个用户,使用用户选择器 | |
组列表 (Group List) | - | 存储和显示单个或多个用户组,使用用户选择器 | |
计算伪字段 (Computed Pseudofield) | 4.2M3 | 允许创建虚拟字段,可通过自定义显示和脚本获取值 | - |
时区 (Time Zone) | 7.3M1 | 允许显示和编辑时区信息 | - |
从4.3M2版本开始,用户可以自定义属性类型。
对象
对象是类的实例,每个对象包含一组特定的属性。对象与特定页面相关联,每个页面可以包含多个对象。
通过使用对象,用户可以在wiki中插入结构化信息,而传统wiki仅能输入非结构化信息(如纯文本)。这是XWiki被称为第二代wiki的原因之一。
总结如下:
- 类定义了对象的类型及其属性。
- 属性指定了对象可以具有的数据类型。属性类型是在类定义时设定的,而具体的属性值则在对象实例化时确定。
- 对象是类的实例,具有类定义的所有属性的具体值。
推荐阅读
- 掌握了类和对象的知识后,可以尝试创建一个简单的应用程序,例如一个FAQ应用。
- 学习如何使用脚本在wiki页面中显示对象属性。
- 还可以尝试使用“一分钟创建App”扩展,它简化了应用程序开发的初期过程。生成应用程序后,若想为其添加更多功能,则需要深入了解类、对象和脚本的相关知识。