扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:陈 原 来源:论坛整理 2008年1月10日
关键字: lotus Lotus Notes
在 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 描述出来。然后实现组件属性的发布,以及其他组件如何接收属性并执行对应的操作。开发好组件之后,用户可以把这些组件加入到一个复合应用中去,并通过连接(wire)将类型匹配的属性和操作相关联。这样在复合应用运行时,以上图为例,当新闻列表发出了一篇新闻的 News ID 作为属性时,property broker 将通过连接查找到与之相关的组件和操作,并把该 News ID 值传递给相应组件(上例中为缩略图展现组件),由该组件执行缩略图展现操作。
熟悉 IBM WebSphere Portal 开发的人会意识到,这和 Portal 中的点击即动(Click To Action 以下简称 C2A)的功能非常类似。事实上,不只是形似,Notes 8 中的复合应用在实现上与 Portal 的 C2A 也有非常紧密的关系。举个例子,为了描述每个组件的属性和操作,需要有一个 WSDL 描述文件,而 Notes 8 中这个文件的格式几乎完全照搬了 C2A。
如果探循的再深一些你会发现,整个复合应用的概念最早正是来自于 IBM WebSphere Portal。所以我们强调一点:复合应用并不是绑定到 Notes 8 的一种应用模式。复合应用有很多种实现载体(Portal,Lotus Expeditor 等等),Notes 8 上的复合应用只是其中一种。
但无论那种模式,复合应用体现了用户前端组件化,标准化的趋势。谁说 SOA 只做企业系统后端的集成?复合应用是对 SOA 前端的一次非常好的诠释。
复合应用的创建
用 Notes 8 可以打开两种形式的复合应用,基于 Portal 的和基于 NSF 的,二者的差别主要在于存放应用文件(XML 格式)的方式不同。这里主要介绍基于 NSF 的复合应用。在 Notes 8 中创建一个复合应用是非常简单的一件事情,因为基于 NSF 的复合应用就是一个 NSF 数据库,在创建时,和一个传统的 NSF 数据库没有什么区别。所不同的是选择模板时必须选择空白组合应用程序模板。
图 3. 在 Notes 8 中创建复合应用
创建之后,你将得到一个空白的复合应用页面。接下来点击 操作 中的 编辑复合应用,Notes 8 会启动 CAE(Composite Application Editor)。通过这个工具,你可以把 NSF 组件或者 Eclipse 组件拖拽到这个复合应用的页面上。此外,通过这个工具,你也可以创建多页面的复合应用。
图 4. 复合应用编辑器
创建空白复合应用 NSF,然后填充组件,这就是创建一个复合应用的过程。这个过程本身并不复杂。不过随之而来一个非常关键的问题:这些 NSF 组件和 Eclipse 组件是如何开发的?
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者