回到本节一开始介绍的 ImageView 组件,该组件接收 NewsIDChanged 属性(该属性值为新闻号),执行 ShowImage 操作:显示该新闻号对应的新闻的图片。以它为例,接下来我们看看 Eclipse 组件中操作是如何实现的。
前文提到,在定义 ImageView 的属性和操作时,我们在 Plugin.xml 中指定了 WSDL 操作的实现类 com.ibm.xna.actions.ImageViewAction。该类继承自 org.eclipse.core.commands.AbstractHandler,实现了该类的 excute()方法。
该方法的代码如下:
清单 7. 接收属性并操作的 Eclipse 代码
| public Object execute(ExecutionEvent ee) throwsExecutionException { Object event = ee.getTrigger(); if (event instanceof PropertyChangeEvent) { // 判断是否是属性更改事件 PropertyChangeEvent e = (PropertyChangeEvent)event; PropertyValue propValue = e.getPropertyValue(); // 获取属性值 finalString Val = propValue.getValue().toString(); Wire wire = e.getWireDefinition(); String targetName = wire.getTargetName(); // 获取目标操作名 if (targetName.equalsIgnoreCase("ShowImage")) { // 判断操作名是否匹配 …… IViewPart part = SWTHelper.locateView (SAMPLE_VIEW); ImageView view = ( ImageView ) part; view.setVal(Val ); // 把属性值传递给对应的新闻展示视图,展示图片。 …… } } returnevent; } |
简而言之,只要我们对复合应用的 Property Broker 编程模式有了一个比较清晰的认识,那么实现 Eclipse 组件中的操作将会是非常轻松的一件事。
总的来说,开发 Eclipse 组件对传统的 Notes 开发者是一个全新的挑战,不过作为 Notes 开发者,他们已经习惯于接收种种新鲜事物。举个例子,现在 Notes 开发中常用的 HTML,javascript,Java,Servlet 等技术,在一开始也是和 eclipse 一样,作为一种新技术加入到 Lotus 开发中来的。所以对 Lotus 自身和 Lotus 开发者而言,ND 8 会给他们带来一片新的天地。
复合应用的组装
创建好了复合应用,开发好了组件,接下来就可以将这些组件加入到复合应用中,并进行组装了。
回到复合应用的编辑界面 CAE(Composite Application Editor)中,右边的 sidebar 是组件选用板。PIM 栏中列举出了 Notes 8 中提供的开箱即用的组件,主要是邮件,日历,待办等内容,常规栏中则是用户自定义的组件。右键菜单中点击 添加组件,可以选择 添加 NSF 组件 还是 Eclipse 组件。其中 Eclipse 组件又分为了 来自更新站点的,或者是 来自于本地的 两种。后者在 Eclipse 组件的开发调试过程中使用的比较多,正式使用时,一般会将 Eclipse 组件打包放到一个更新站点上,客户端可以自动下载安装。
图 18. 组件选用板

添加 NSF 组件时需要指定组件的名称,描述,以及 Notes URL。如果不熟悉 Notes URL 的写法,可以通过浏览的方式获取对象的 Notes URL。
图 19. 加入 NSF 组件
添加来自更新站点的 Eclipse 组件时需要指定站点描述文件 site.xml 的位置,然后从该站点的可用组件中选择自己想要添加的组件。至于如何将 Eclipse 组件打包并放到更新站点上,请参考相应文档,此处不再赘述。
图 20. 加入 Eclipse 组件(从更新站点)
现在我们就可以通过拖拽的方式将组件选用板上的组件添加到复合应用中去了。各个组件的位置也可以通过拖拽的方式进行调整。
图 21. 调整组件位置
在确定好组件的布局之后,接下来的工作是非常关键的一步:连接。前文我们说到了 Property Broker 编程模式,其中一个基本的设计理念是:组件之间需要进行连接(Wiring)以匹配属性和操作。而 CAE 中提供了可视化的界面帮助开发者快速进行组件之间的连接。
图 22. 连接(Wiring)
在复合应用的组件名称处右键点击菜单进入连接界面。在这个图形界面中,用户可以直接在类型匹配(属性名称可以不一致)的属性和操作之间连线,从而将各个组件有机的联系在一起,实现应用的复合。复合,但绝不复杂,大部分的时候,它就是这么简单!
结束语
现在你就可以感受一下你刚刚组装完成的这个图片新闻复合应用了。你会感受到,来自于不同系统,由不同技术实现的一组组件,为了某个业务目的被组装到一起,既充分利用了现有资源,又满足了实际需求,既改进了用户的界面体验,又颠覆了传统的前端整合模式。这,就是复合应用。它带给你的震撼将不仅仅是 Notes 应用的扩展,更确切的说,它是一次企业前端的革命;它所承担的也不仅仅是 Lotus 的未来,更确切的说,它是 IT 前端整合的未来。所以无论你现在是否是 Notes 用户,复合应用都是值得你关注的一门技术。
组件独立开发,以服务的形式定义接口,在不同的应用中扮演不同的角色;应用以松耦合的方式对组件进行组装,应用开发者不用再关心各个组件的底层实现——复合应用的构建模式体现了 SOA 中模块化,标准化的思想。从这个层面上说,复合应用的开发让“SOA”这个对许多开发者而言有些雾里看花的概念变得非常具体。还在等什么?赶紧打开你的 Notes 8 开始你自己的复合应用之旅吧!