在 Lotus Notes 8 中开发复合应用
2008-01-11 09:11:25 来源:论坛整理 作者:陈 原 点击:
在 Lotus Notes/Domino 8 众多新特性中,复合应用(Composite Application)是最具有革命性的一次突破,业界普遍认为,这种应用模式代表了 IBM 软件在企业前端整合上的新思路。
在 Lotus Notes/Domino 8 众多新特性中,复合应用(Composite Application)是最具有革命性的一次突破,业界普遍认为,这种应用模式代表了 IBM 软件在企业前端整合上的新思路。本文结合实例,系统而详细地介绍了如何基于 Notes 8 创建复合应用,并给出了开发 NSF 组件以及 Eclipse 组件的方法和要点。读者可以通过本文了解到复合应用开发的整个流程。
在 Notes 8 中开发复合应用
作为 Lotus 的售前工程师,回顾整个 2007 年,我最经常被客户和合作伙伴问到的问题是:你认为 Domino/Notes 8( 以下简称 ND 8) 中最大的技术突破是什么?是生产力工具?还是对 DB2 的正式支持 ?
毫无疑问,上述这些功能都是 ND 8 非常出彩的地方,即使放在整个 ND 的发展史上看也将会占有一席之地。但最终我的答案只有一个:ND8 中最大的突破当然是复合应用(Composite Application)。因为这的确是一种非常有“内涵”和革命性的新型应用模式。
很难简单的说明复合应用究竟意味着什么?从企业 Web 2.0 的观点,你可以说它代表着混搭 Mashup 的思想;站在企业集成的角度,它是 SOA 在用户前端的具体实现;对用户而言,它是一种全新的界面体验;而对传统的 Lotus 开发者来说,复合应用带给了他们新的挑战和机遇。
所以无论你出于什么原因打开了 Notes 8 客户端,复合应用都是你绝对无法视而不见的亮点,因为它代表的是 ND 的未来——也许还不仅仅是代表 ND 的未来,而是整个 IBM 软件在企业前端上的未来。
复合应用的基本定义与 Property Broker 编程模式
那么什么是复合应用(Composite Application)?一个标准的定义如下:复合应用是 为了满足特定的业务目的而被放在一起的一套组件。如果觉得这个定义太抽象,那么下面这个例子可以给大家一个感性认识。
图 1. 复合应用范例

这是一个用 Notes 8 打开的应用(ComAppTest.NSF),你一眼能看出它和过去你所见到 Notes 的帧结构、视图、表单等等这些元素全不相同但又似曾相识。在这个应用中,你看到了左上方展示新闻列表的 Notes 视图,看到了右下方展示每篇新闻内容的 Notes 表单。此外,你还会看到左下方的图片缩略表,和右上方的图片大图展示,但它们都不是 Notes 元素,而是两个 Eclipse 插件。所有这些东西(当然,它们有个正式的名称——组件),为了一个业务目的(展现新闻内容和图片)而组装在一起,这就构成了一个复合应用。
不只是组装,组件之间还可以传递消息。还是看上面这个例子,当我们点击左上方新闻列表中的某篇新闻时,会把该新闻的新闻编号传递给其他组件,这样右下方的 Notes 表单组件会根据该编号显示新闻的详细信息,右上方的 Eclipse 组件会根据该编号显示新闻的图片内容。这里我们把所传递这个信息叫做“属性”(Property),把各个组件根据外来属性所做的动作称为“操作”(Action 或 Operation)。通过 Notes 8 环境中提供的 Property Broker 机制,复合应用可以在不同的组件之间传递属性,执行操作。这种编程模式,我们也称之为 Property Broker 的编程模式。
图 2. Property Broker 编程模型

Property Broker 编程模式的基本设计理念总结如下:
- 属性是类型化的可交换数据
- 操作是消费属性的行为
- 组件定义自身的属性和操作
- 连接(Wire)将属性和操作相关联
在这种编程模式下,程序的开发很大程度上就是组件的开发。而开发组件首先要定义组件的属性和操作,并把这种定义通过 WSDL 描述出来。然后实现组件属性的发布,以及其他组件如何接收属性并执行对应的操作。开发好组件之后,用户可以把这些组件加入到一个复合应