




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入介绍 Lotus Quickr Domino 架构殷 智勇, 高级工程师, IBM殷智勇,IBM 中国软件开发实验室 Lotus Quickr 开发工程师,对 Quickr 的定制化开发有较深入的研究。对社交协作类软件领域比较感兴趣。李 臣, 高级工程师, IBM李臣,来自 IBM 中国软件开发中心,高级软件工程师,Lotus Qucikr 系统测试工程师,在 Quickr 的集成、调优、问题诊断和解决,以及客户支持方面有丰富的经验。郭 正非, 软件工程师, IBM郭正非,来自 IBM 中国软件开发中心,目前从事 Lotus Quickr 产品开发工作,热衷于 Web 2.0 相关技术。简介:IBM Lotus Quickr Domino 是一款基于 Web2.0 技术的团队协作和内容管理平台。Lotus Quickr 提供了丰富的团队协作组件其中包括团队文档库,维基,博客,论坛,团队日历,团队任务,联系人,新闻组件,Feeds 阅读器等。除了这些功能外,Quickr Domino 还提供了强大的定制能力。对于开发人员要快速掌握基于 Quickr Domino 的定制开发,首先需要了解 Quickr Domino 的架构。本文深入地介绍了 Quickr Domino 的架构,为开发人员开始着手提供第一手的参考。标记本文!发布日期:2011 年 6 月 21 日 级别:初级 访问情况 :1847 次浏览 评论:0(查看|添加评论 - 登录) 平均分 (1个评分)为本文评分概述Lotus Quickr Domino 提供了丰富的扩展机制来帮助客户定制丰富的应用,例如: 使用 Notes Designer 修改现有 Quickr 场所对象,如为博客添加新的重要性字段 ; 定制 Quickr 的主题和皮肤,根据客户需求调整界面,如根据客户企业文化修改界面风格 ; 使用 Lotus Quickr Java API 来扩展 Lotus Quickr,如在 Portlet 里面调用 XML Java API 创建场所 ; 使用 Quickr 命令 hook 机制扩展 Lotus Quickr 功能,如记录文件修改日志以便审查; 开发 PlaceBot 代理程序,比如按照文档标题讲文档归档某个文件夹 ; 使用 Quickr 的 Web Service 和 REST Service 定制开发,如在 WebSphere Portal 中开发 Portlet 集成 Lotus Quickr 文档功能 ; 创建场所模板,如创建客户关系管理场所模板。更多的 Quickr 定制参考,请参考 Quickr 官方维基以及在 OpenNTF中搜索 Quickr 关键字。对于开发人员,在开始 Quickr Domino 的定制之前,对 Quickr Domino 的架构的了解是其中的必要条件。本文旨在深入地介绍 Quickr Domino 的产品架构,开发人员通过阅读本文,能够更好地理解 Quickr Domino 定制的基本原理。回页首Domino 架构Lotus Quickr Domino 是一款基于 Domino 服务器开发的协同应用,因此了解 Lotus Quickr Domino 的基本前提是对 Lotus Domino 架构有最基本的认识。下图是 Domino 服务器的一个最基本的架构图。图 1. Lotus Domino 服务器架构从图中可以看出,Domino 服务器主要包括任务 (Tasks),Notes 对象服务(NOS)以及 Domino 数据库三部分。下面具体介绍这三部分:任务(Domino Server Tasks)用以实现 Domino 服务器要执行的所有功能,我们可以将这些任务分为五类: 维护 Notes 应用的任务(Agent Manager, Cataloger, Designer, Replicator,Domain Indexer, Database Compactor, Directory Cataloger, Update and Updall等); 监视服务器和管理服务器活动的任务(Administration Process, Cluster Replicator,Cluster Database Directory Manager, Map Generator等); 管理邮件、日历和日程的任务(Calendar Connector and Schedule Manager, IMAP, POP3, SMTP Listener, Router 等); 管理协议的任务(HTTP 服务,DIIOP,LDAP,DECS, NNTP等); 监视服务器活动的任务(Activity Trends Collector, iSPY, Statistics, DDM 等)。Notes Object Services(NOS)涵盖了 Notes 所有的基本功能,Notes 客户机和服务器均在使用这些功能,程序员可使用 Notes 应用程序编程接口(API)来调用,它们是可移植且线程安全的。如包括跨平台的创建和访问数据及文件、 Domino 公式和脚本 (Notes Formula,LotusScript,Java 及 JavaScript) 的编译和解释等等。所有的 Domino 服务器任务都必须与 NOS 进行交互,NOS 同时还负责调用操作系统接口。NOS 能够通过 C 语言的回调函数进行定制。如果想了解更多关于 C/C+ API 工具集的知识,请参阅 developerWorks Lotus Document。共享数据库和本地文件由数据库文件、模板、静态 HTML 文件、JavaScript 文件、Servlets 和其他元素组成。一个 Notes 数据库是文档的集合,而文档又是域 (Field) 的集合,我们将这些元素统称为记录 (notes),每个记录 (note) 代表一个 Notes 数据库中的一个元素。上面我们介绍了 Domino 的基本架构,而 Quickr Domino 是基于 Domino 的核心技术实现的。Quickr Domino 服务引擎是基于 Domino HTTP 进程的扩展,当启动 Domino HTTP 任务时,Quickr Domino 服务被自动调起并加载 JVM,同时 HTTP 任务将这些操作的状态信息写入服务器控制台和日志文件(请参照图 2)。从图中可以看出,Quickr 的服务是对于 Domino 核心 HTTP 服务的一个扩展。图 2. Quickr Domino 与 Domino 服务器关系图回页首从界面后看 Quickr Domino 的后台实现机制在介绍了 Domino 相关基本知识后,现在我们从最终用户角度来看,Quickr Domino 提供了非常好的用户体验和可定制的界面来为最终用户提供基于文档的协作内容管理平台,通过对 Domino 的扩展提供了与其他应用(Windows 资源管理器,Lotus Notes 等)以及其他内容管理平台(IBM Filenet)的交互。Quickr Domino 使用了 Domino 数据库、视图、代理等 Domino 基础技术,基于 Domino 的扩展,提供了 qptool 命令,Quickr Java API, Servlets, Web Service 等其他技术和接口。下图(图 3)为 Quickr 架构图。图 3. Lotus Quickr Domino 架构图因为 Quickr Domino 对象模型是基于 Domino 对象实现,Quickr Domino 场所所有的对象数据都存储在 Domino 数据库中。因此我们能够使用 Notes 客户端和 Domino Designer 来查看、定制或创建 Quickr Domino 场所的对象。从图中可以看出,当使用浏览器、连接器等去访问和操作 Quickr Domino 内容时,其数据访问首先调用了 Domino HTTP 服务器,然后通过 Quickr Domino 服务器去操作后台的场所数据库。而当使用 PlaceBot 去操作后台 Quickr Domino 对象,其使用的是 Domino 的代理机制来实现。除此之外,我们可以通过以下三种方式使用 Quickr Java API 与 Quickr 服务器交互: 创建 XML 作为输入文件并使用 Quickr Domino 命令行或者在 Domino 服务器控制台上运行它; 编写 Java 程序创建 XML 作为输入参数,并调用 QPAPI 类来执行; 使用 QPTool 执行命令。在对 Quickr Domino 数据模型进行具体介绍前,我们需要对 Quickr Domino 在服务器的目录结构有一个基本的了解。下表(表 1)介绍了 Quickr Domino 服务器的目录结构以及在各个目录中存储的相关资源信息。表 1.Quickr Domino 服务器目录结构子目录 内容 domino_data_rootLotusQuickrAreaTypes 该目录存储用以创建场所和容器的模板 domino_data_rootLotusQuickrlotusquickr 该目录存储 Quickr 主场所文件,用户可以在此场所中查看自己的场所,创建新场所,链接到管理场所 domino_data_rootLotusQuickrPlaceName 该目录存储某一场所的文件,包括 main.nsf、contacts1.nsf、search.nsf 和容器文件 domino_data_rootdominohtml 该目录存储所有的静态 HTML 文件、Quickr 连接器安装包以及 Quickr 离线应用安装包等 domino_data_rootdominohtmlqphtml 该目录存储大部分Qucikr所有场所公用文件,包括 Quickr 使用的Dojo,JavaScript文件等 domino_data_rootdominohtmlqphtmlskins 该目录存储皮肤相关的CSS资源、图片资源、HTML资源和JavaScript文件 domino_data_rootdatadominohtmlqphtmlskinsquickrx 该目录存储默认主题 从以 Domino 的角度来看 Quickr Domino,我们可以发现其与其他 Domino 应用的共通性,如基于 Domino 的安全机制和授权模型,利用 Notes 数据库、视图、文档与 Ajax 技术来展示页面等。下表(表 2)描述了 Quickr 对象与 Domino 对象的关联性。表 2.Quickr Domino 对象与 Domino 对象的关联性Quickr 对象 Domino 对象 描述 场所 文件系统目录 根据模板创建,每个场所都在 Domino 的 data 目录都有一个子目录,且包括至少 3 个数据库(main.nsf、contacts1.nsf 和 Search.nsf) 模板 数据库模板 用以创建场所的结构和设计,例如,场所的默认 main.nsf 是通过 MeetingRoom.ntf 模板创建的,MeetingRoom.ntf 就是一个模板 容器 Domino 数据库 容器可以认为是场所内的一个子场所。容器和场所一样能包含文件夹、表单和其他容器,其权限控制能够从场所继承或自定义 文件夹 Domino 文件夹或者视图 用来以定义好的结构来收集和显示相关页面以及页面属性 页面 Domino 表单 + 子表单 + 数据记录 Quickr Domino 内容的基本载体,基于页面能够使用浏览器、Quickr 连接器和 Quickr 内容服务创建内容 成员 Domino 数据记录 一条成员记录包含场所成员的信息,此外,该成员必须存在于 main.nsf 的权限列表及 Domino 地址本的一个群组中以便通过认证。 表单 h_Form 型数据记录 负责 85 theme 之前的数据显示,表单可包含数据域和处理数据的相关代码 域 h_Field 型数据记录 存储用户输入数据的数据记录 PlaceBot Domino 代理 使用 Java 或者 LotusScript 编写,可以基于时间或者事件触发的代理程序 回页首Quickr Domino 界面生成过程对于很多用户来说,常常都是通过 http:/host/myplace(这里 myplace 泛指用户创建并所用的场所 ) 访问自己所在的场所,而这个界面的呈现过程中,有多个不同的组件,代码片段,主题皮肤代码以及场所数据被调用。所有的这些数据元素被聚合在一起,最终构成了最终呈现出来的界面。因此,了解 Quickr Domino 的界面是如何被表现出来,对开发人员开始 Quickr Domino 界面定制非常有帮助。2010 年 Lotus Quickr Domino 发布了 8.5 版本,在 8.5 版本对 UI 框架做了全新的设计与优化,应用了大量的 web2.0 技术,全面提升了用户体验,并同时增强了软件性能。鉴于 QD 8.5 与 QD 8.2 都有界面定制化的需要,我们将对两种框架的界面生成方式都做相应介绍,并做简单对比。下面以 URL: /myplace被调用的界面展示为例,介绍整个页面呈现过程。首先我们看 QD 8.5 的接下来的页面生成方式:1. 浏览器发出 HTTP 请求:/myplace2. Domino HTTP Task 接收到这个 URL 请求,并在 URL 发现了 LotusQuickr 标志。之后,该请求被 HTTP 服务器转发到 Quickr 服务器 , Quickr 服务器根据 URL 查找相应场所,找到相应场所后将请求重定向到:/LotusQuickr/myplace/Main.nsf?OpenDatabase3. Quickr 服务器接着处理 /main.nsf?OpenDatabase 请求,会打开场所的 Main.nsf, 查找 h_Toc 视图里面的第一个文档,然后将自动请请求重定向到:/LotusQuickr/myplace/Main.nsf/h_Toc/4df38292d748069d0525670800167212/?OpenDocument, 这里“4df38292d748069d0525670800167212”即 h_Toc 视图里第一个文档的 unid,即为场所的首页。4. Quickr 服务器获得指定命令 ?OpenDocument,根据所访问的文档的 form 字段的值(此处访问的文档的 form 值即为 h_PageUI),使用相应的 form 展现文档。5. Quickr 服务器从 HaikuCommonForms.ntf 中打开标记为 h_PageUI 的表单。6. Quickr 将解释表单 h_PageUI 中相应元素。在 QD 8.5 中,我们不再使用之前相应的例如 skincomponent 等相关标签,而仅仅使用 标签来加载 skin 组件。7. Quickr 解析 标签,根据 URL 中的命令 ?OpenDocument,将加载 page.htm。page.htm 相当于 QD 页面的框架结构,定位各个组件的放置位置。8. Quickr 服务器将 h_PageUI 解析后的内容(内容来自 page.htm)发回到浏览器并由浏览器解析。至此服务器端对于页面生成的工作完成了,剩下的具体细节交于客户端浏览器展现。9. 浏览器解析 page.htm,执行相应的 JavaScript 脚本加载 Widget, stylesheets,语言包等资源。10. Widget 将发送 Ajax 请求(调用 Quickr Domino 的 Rest/SOAP web services)获取数据。下面的图展现了 QD 8.5 页面的组成结构,可以看到页面将由不同的 Widget 相互结合而组成 , 而 page.htm 定义了相应 Widget 的摆放位置。至此一个完整的页面就展现出来了。图 4. QD 8.5 页面组成结构图查看大图1. 在 QD 8.5 的页面中,当用户点击页面上的组件时,触发的事件将完全由 Dojo 的 event subscribe/unsubscribe 机制处理,监听该事件的 Widget 将根据 event 的参数做相应操作并刷新其界面。接着我们看 QD 8.2 的页面生成方式:1 到 5 步骤相同。1. Quickr 将解释表单 h_PageUI 中相应元素。依次对 skincomponet、subform、QuickPlaceSkin 等各种标签做解析,加载各种页面元素,并把它们组合起来。2. 当所有的标签被解释后,Quickr 服务器将这些信息回传给 Domino HTTP 服务器,Domino HTTP 服务器将最终页面生成出来并由浏览器最终展示。我们可以看到虽然页面有多个子元素组成,但整个页面是由服务器生成,这也就意味着页面是一个整体,不是分块的,也就很难实现局部刷新。3. 浏览器接收返回数据后,再相应地请求页面所包含的 JavaScript,stylesheets 等资源。综上所述,QD 8.5 的界面展现仍然基于 form 及 skin 的机制,但与 8.2 不同的是不再依赖于 skincomponent 等相关标签机制。QD 8.5 服务器端仅负责对 skin 的加载,而具体细节页面内容由客户端展现。而 8.2 页面的基本内容都是由服务器生成。再者就是 QD 8.5 大量应用 Ajax 技术,数据交互依赖于 web service。以上介绍的就是 Quickr Domino 中生成界面的机制,当其他资源如文件夹,任务,日历被请求,Quickr Domino 也是使用相同的页面展现方式。如果开发人员需要对 Quickr Domino 页面访问方式有更清楚的了解,推荐大家使用 Paros 工具。通过设置代理,Paros 能够帮助研发人员分析 URL 请求的所有资源信息。 图 5 是作者在访问 /lotusquickr是 Paros 代理分析出的相关资源调用情况。更多信息,请参考 Paros 官方网站。图 5. 使用 Paros 分析 Quickr Domino 界面生成资源调用回页首Quickr Domino 后台数据 当用户创建一个场所后,实际在后台 Domino 服务器 data 目录下创建了多个 Notes 数据库(NSF 文件),数据库创建子对应场所的 Notes 模板(NTF 文件)。当一个新的场所被创建后,如下数据库文件被创建: Main.nsf 用来保存用户文档,文件夹设计,表单设计,域设计,页面元素以及其他代码 ; Contacts1.nsf 用来保存能够访问该场所的用户列表,对于每个场所成员在该数据库中都有一个文档记录 ; Search.nsf 用来保存默认的搜索表单对于某些模板创建的场所,还有可能包括一些数据库被命名为 PageLibraryxxxx.nsf,这些数据库是作为该场所的容器(Room)被创建,容器相当于是该场所的一个子场所,容器的访问权限可以继承场所的权限,也可以限定在该场所的某些成员内。下图(图 6)展示了在 Domino 服务器中一个场所实例的文件结构。该场所包括 3 个容器。图 6. 实例场所文件结构图而下图(图 7)中显示了构成该实例场所的所有元素。图 7. 实例场所元素结构图如果同时使用浏览器和 Notes 打开该场所实例,我们可以在 Notes 视图中看出该场所的结构信息 (Home, Discussion, Library, Calendar, Tasks, Index, Members 等 )。在图中我们可以看出 Quickr 的表单并不等同于 Domino 表单。从下面两个图中(图 8 和图 9)分别在浏览器和 Notes 两种视图下查看 Quickr 场所实例。图 8. 浏览器中查看 Quickr 场所实例查看大图图 9.Notes 客户端中查看 Quickr 场所实例 Main.nsf现在让我们比较一下浏览器中看到的场所左侧的导航栏与 Notes 客户端中看到的 TOC 视图之间的对应关系。图 10. 实例场所导航栏 vs. 数据库中 TOC 视图用 Notes 客户端打开上面选中的标题为 Home 的文档,应该能够看到一些用于构建整个 Home 页面所需的字段。那么试想一下,如果我们通过使用 LotusScript 去创建类似的文档,我们应该能创建出整个场所来。但是请注意,当你计划使用脚本去直接修改这些文档的时候,你必须留意将什么样的值填到文档的字段中,一个错误的数值填写到诸如 h_Type 字段,将会破坏页面上各元素之间的关系,从而导致 Quickr 的场所对用户不可用。图 11.Home 文档中基本字段信息查看大图Quickr 中的每一篇数据文档都包含了用户输入的实际数据(它存在于 PageBody 字段中),会在页面中显示出来。同时还有一些系统字段(以“h_”开头,类似于 h_Item 格式),它们有不同的用途,比如说: 使用哪一种场景对数据进行展现 该文档存在于哪一个文件夹下面 该文档的版本信息 该文档是否在导航栏(TOC)中显示,如果是,它在导航栏中的位置图 12. 含有用户数据的文档中字段信息查看大图Quickr 中还有一些文档只是用来表示一个文件夹或者是另外一个数据库,比如上面用到的 Home 文档,它表示了 Quickr 场所中的 Home 文件夹。这些文档中含有多个系统字段(以“h_”开头,类似于 h_Item 格式),用于指明 Quickr 中的文件夹或者空间与实际对应的文件夹(即数据库中的文件夹元素)或着数据库(一个 Quickr 的空间就是一个数据库)之间的对应关系。你可以通过 LotusScript 来手动地创建或者修改这样一个文档,但是最好将它与一个原有的文档进行比较,看看有哪些字段被修改了,以防错误的修改使场所不可用。为了验证你的修改,你可以用 Domino Designer 打开 Quickr 场所数据库中的 QDK 这个视图,然后双击打开你修改过的文档进行验证。也可直接用 Notes 客户端及 QDK 试图来修改数据。这里我们推荐一个很好的文档比较工具 - CompareDocuments,它由 openNTF 网站提供,你可以从这里找到它: /internal/home.nsf。当然你也可以自己写代码来对两篇文档进行逐个字段的比较。下面我们所使用的截图都是基于 Client Relationship 这个场所的,我们对这个场所进行了一定的定制,更改了它的主题。本篇文章并不涉及有关如何定制 Quickr 场所的内容,你可以从 Quickr Wiki 上了解相关信息。下面我们通过一个例子来了解一下如何使用 Compare Documents工具来对同一篇文档在草稿状态以及发布状态进行比较。图 13.”Base Proposal Document”目前在草稿状态查看大图使用 Notes 客户端打开这个场所数据库,然后打开 QDK 视图,找到“Base Proposal Document”文档,查看一下它的修改时间。图 14. 在 QDK 视图中查看该文档在草稿状态下的修改时间把当前在草稿状态下的文档粘贴到 Compare 数据库中。我们首先通过 Quickr 页面把“Base Proposal Document”检入,然后再使用 QDK 视图比较这篇文档在两种状态下修改时间的改变。图 15. 在 QDK 视图中查看该文档在发布状态下的修改时间把检入后的文档也粘贴到 Compare 数据库中,然后让我们看一下它与草稿状态下的文档都有哪些不同。图 16. 在 Compare 数据库中比较同一文档在两种不同状态差别第一个文档是“Base Proposal Document”在草稿状态下的文档,而第二个文档是它在发布状态下的文档。图 17. 在 Compare 数据库中比较同一文档不同状态结果查看大图通过比较我们可以看
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天体运动考试试题及答案
- 冀教版数学五年级上册第一单元第二课时 认识简单线路图 同步练习(含解析)
- 2025年公需科目考试试题及答案
- 保护心脏常识试题及答案
- 营运车运营管理办法
- 中彩项目资金管理办法
- 草莓假植地管理办法
- 装修功能需求管理办法
- 2025年环氧丙烷项目合作计划书
- 电玩城损耗管理办法
- 红色反对家庭暴力培训课件
- 2025至2030中国航空客运销售代理行业市场运行发展分析及前景趋势与投资报告
- 肾功能衰竭患者的麻醉管理要点
- 食品公司研发部管理制度
- 不等齿宽永磁同步电动机电磁力波特性与振动抑制策略研究
- 首诊负责制试题及答案
- 2024浙江遂昌农商银行新员工招聘笔试历年典型考题及考点剖析附带答案详解
- 学校篮球共建协议书
- 挂名法人股东协议书
- 文件销毁保密协议书
- 高考英语必背688个高频词汇清单
评论
0/150
提交评论