热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XWiki数据模型开发指南

本文档不仅介绍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”扩展,它简化了应用程序开发的初期过程。生成应用程序后,若想为其添加更多功能,则需要深入了解类、对象和脚本的相关知识。

推荐阅读
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
author-avatar
笑看天下
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有