了解 Lotus Notes 中 Lotus Symphony 的可编程性

本文介绍 Lotus Symphony 在 Lotus Notes V8 中对 Notes 可编程性做出的增强,其中包括对基于 Lotus Expeditor 的 Rich Client 编程模式的支持,对 Notes 复合应用的支持,对 LotusScript. 的支持。

基于 Eclipse 的 Lotus Notes V8 对传统的 Notes 应用做出了一系列重大的增强,例如用户界面和用户体验,协同和消息机制,最时髦的编程模型等。Lotus Symphony(Notes V8.0 中称为 IBM Lotus Productivity Tools,Notes V8.0.1 中称为 Lotus Symphony,本文均以 Lotus Symphony 统一描述)就是其中的一个重大创举,通过集成 Lotus Symphony,Notes 客户端首次具备了办公文档应用功能。通过对 Notes 编程模型的支持,开发人员可以方便地将 Lotus Symphony 进一步在 Notes 平台基础上作扩展,定制和集成。

Lotus Notes 客户端和 Lotus Symphony

Lotus Notes V8 将所有传统的 Notes 代码转移到 Eclipse 环境中,这得益于 Eclipse 的基于插件的开放技术。Notes V8 是建立在 Lotus Expeditor 的基础之上的,Lotus Expeditor 是 IBM 统一的富客户端平台,同样也是基于 Eclipse 的。了解最新 Lotus 产品系列的读者一定已经注意到了,最新推出的一系列客户端软件,很多都是基于 Lotus Expeditor 的,例如 Lotus Sametime V7.5 和刚刚推出的 Lotus Symphony。正因为基于同样的平台,众多客户端应用将很容易的进行集成。Lotus Sametime 和 Lotus Symphony 都作为其中一个模块的方式出现在了 Notes 产品中。

Lotus Symphony 提供了一套基于开放源代码,开放技术和开放文档标准的办公文档应用,其中包括 Lotus Document,Lotus Spreadsheet,Lotus Presentation。Lotus Symphony 是对开放源代码的 OpenOffice.org 的一种定制和扩展,在 OpenOffice.org 的基础上,进一步引入了开放的 Eclipse 的插件机制,两者的结合完美的将 OpenOffice.org 的办公文档应用和 Eclipse 的集成能力融合在了一起。正因为如此,Notes V8 才得以将传统的 Notes 应用和 Lotus Symphony 应用集成为同一个产品。更多关于 Lotus Symphony 的技术细节,请参阅“了解 Lotus Symphony 的可编程性”。

可编程性历来都是 Notes 的一个非常重要而且强大的功能,作为其中一个模块,毫无例外,Lotus Symphony 也针对 Notes 的可编程性特性做了相关支持。Notes V8 在传统的可编程性功能的基础上,采用业界最新的思想,进行了进一步的增强。了解关于 Notes V8 的可编程性,请参阅“Lotus Notes 8 Programmability”,该文完整的描述了 Notes 可编程性的功能。

基于 Lotus Symphony 自身的技术特性,Lotus Symphony 对 Notes 编程模型做了如下支持:

  • Composite Application 编程模型:Notes V8 中全新引入的编程模型,可以看作是 SOA 在客户端的体现。简而言之,复合应用可以通过界面操作的方式,方便的将各种组件集成在同一个用户界面上展现给最终用户。这一模式代表了整个客户端可编程性的未来。Lotus Symphony 提供了一个预定义的复合应用组件,开发人员同样可以通过 Eclipse 编程来订制自己的 Lotus Symphony 组件。
  • Rich Client 编程模型:这一模式使得 Java 开发人员可以通过标准的 Eclipse 接口定义自己的富客户端应用。更确切说,这是 Lotus Expeditor 定义的编程模型,Notes V8 完整继承了这一能力。Lotus Symphony 提供了一系列的 Java API,透过这些 API 可以高度定制属于自己的 Symphony 应用。
  • LotusScript. 编程:LotusScript. 是 Notes 开发人员中最受欢迎的开发语言。基于 OpenOffice.org 的自动化技术,Lotus Symphony 使得开发人员可以通过 LotusScript. 完全控制 Lotus Symphony,例如打开或关闭文档,获取或操纵文档里的内容。

下面的内容将对这些特性做进一步阐述。


复合应用编程模型支持

复合应用是 SOA 框架中的一个重要的方面,其展现方式从 Portal 端延伸到客户端。Lotus Notes V8 和 Lotus Expeditor 均有其相应的实现载体。Louts Notes V8 客户端还为最终用户提供了一个可选安装的复合应用编辑器,用户可以通过该编辑器用可视化的方式创建自己的复合应用。Notes V8 中提供了诸多预定义的复合应用组件,每个组件对外暴露其支持的属性(Property)和操作(Action),用户根据业务需要通过复合应用编辑器将所需组件进行界面集成,并用托拽的方式在各组建的属性和操作之间建立连接(Wire)。

在 Notes V8 中,这一模式的几个主要概念总结如下:

  • 组件(Component):一个提供特定功能的模块,包含基于 NSF 的 Notes 组件和基于 Plug-in 的 Eclipse 的组件;
  • 属性(Property):内部数据发生变化是组件所能发出的类型化数据;
  • 操作(Action):组件所能响应的操作,用于消费属性;
  • 连接(Wire):连接属性和操作,用于定义数据交换;
  • 复合应用编辑器:提供图形化的方式来定义复合应用,包括界面布局,组件间的连接;

Lotus Symphony 可以看作是基于 Eclipse 的一系列插件。针对 Notes V8 的复合应用编程模型,开发人员或最终用户有两种方式去使用 Lotus Symphony:

  • 使用预定义的 Lotus Symphony 组件;
  • 通过 Java API 定制自己的 Eclipse 组件;

预定义的 Lotus Symphony 组件

从 Notes V8.0.1 开始,Lotus Symphony 提供了一个名为“Symphony view”的预定义复合应用组件。当打开复合应用编辑器时,在组件面板上即可看到这一组件:


图 1. 组件面板
图 1. 组件面板

该组件提供了一组预定义的属性和操作:

  • 属性

    属性数据类型命名空间描述
    SelectionChangedxsd:stringhttp://www.w3.org/2001/XMLSchema当前选择的内容,当选择发生变化时触发
    FileSavedidt:urlhttp://www.ibm.com/xmlns/prod/datatype 文档的地址,保存时触发,格式:“file:///c:/temp/1.odt”


  • 操作

    属性数据类型命名空间描述
    LoadFileidt:urlhttp://www.ibm.com/
    xmlns/prod/datatype
    载入指定地址的文件,格式:“file:///c:/temp/1.odt”
    Insertxsd:stringhttp://www.w3.org/2001/XMLSchema在文档的当前鼠标位置插入指定内容


  • 实例

    以下是基于这一组件所生成的一个复合应用示例。在这一应用中包含两个复合应用组件。左边的组件提供了一个文件列表和待插入的示例内容,以及用来显示文档保存地址和选择内容的区域。右边的组建就是预定义的 Symphony 组件。当用户双击文件列表中的文件时,文档被自动载入 Symphony 组件,当某示例内容被选择时,该内容将被插入至文档当前鼠标位置;当用户通过菜单或快捷键保存文档时,文档的地址被自动显示在左边,当选择发生变化时,选择的内容将被自动显示在左边。



    图 2. 复合应用示例
    图 2. 复合应用示例


通过 Java API 定制自己的 Eclipse 组件

除了使用预定义的 Lotus Symphony 组件,开发人员同样可以基于 Java API 来定义自己的复合应用组件。通过这一方式,开发人员可以灵活的定义特定的属性和方法。这一过程实际上和创建基于 Eclipse 的插件完全一致,开发人员只需要了解 Symphony Java API,这一部分将在下一章节介绍。关于如何开发基于 Eclipse 的复合应用组件,请参阅 Notes 复合应用网站。

这里我们简单列举一个基于这一方式开发的实例。在这一实例中,上面的两个组件既是大家熟悉的 Notes 联系人视图,下面两个组件中,左边的是一个虚拟的文档库,右边的是一个定制的 Lotus Symphony 组件。该组件可以响应文档库中模版文件选择的变化,以及将 Notes 联系人视图中当前选择的联系人的信息自动写入打开的模版文件中。值得注意的是,该 Lotus Symphony 组件还定义两个自定义的按钮,用于将该文档保存和作为附件创建新的邮件。


图 3. 复合应用示例
图 3. 复合应用示例 

Rich Client 编程模型支持

Rich Client 编程模型为 Eclipse 开发人员定义了一套完整的框架和API来建立富客户端应用。Lotus Symphony 和 Lotus Notes 本身即为典型的通过这一模型建立的应用。在富客户端平台的基础上,Lotus Symphony 定义了一系列的 Java API,方便开发人员通过 Java 来扩展和定制 Lotus Symphony。这些 Java API 主要可以归为以下几类:

  • 将 Lotus Symphony 用作标准的 SWT 控件

    这一 API 集合将 Lotus Symphony 视作一个标准的 SWT 控件。这一方式为开发人员提供了一个最小粒度的开发对象。开发人员可以随意建立自己的用户界面来集成该控件。需要注意的是,使用这一控件时,Lotus Symphony 自带的缺省菜单和工具栏等将无法访问和使用,开发人员如需要可自行己定义。

  • 将 Lotus Symphony 用作 Eclipse 的 ViewPart

    这一 API 集合提供了一个包含 Lotus Symphony 的 ViewPart,这一 ViewPart 自带缺省的菜单,工具条等。

  • 基于 W3C DOM API 方式访问文档内容

    理论上,通过 UNO API 可以访问任何 Lotus Symphony 文档中的内容,但这一方式通常过于复杂。学习 UNO API 的使用需要一个较长的学习曲线。基于简化的考虑,针对 Lotus Document 应用中的典型对象,提供了一个基于 W3C DOM API 方式的访问。

LotusScript. 编程支持

从 Lotus Notes V8.0.1 开始,Lotus Symphony 对 LotusScript. 开发人员提供了有限的支持来从 LotusScript. 环境中控制 Lotus Symphony。事实上,这一支持主要基于 OpenOffice.org 所提供的到 OLE 自动化对象的桥梁。每一个 UNO 对象均被包装成 OLE 对象,可以通过标准的自动化 API 进行访问。这意味着可以通过 OLE API 访问几乎所有的 Symphony 功能。同时,LotusScript. 同样支持对 OLE 对象的访问,所以在 LotusScript. 环境中,当直接调用 StarBasic 编写的脚本语言的时候,所有的功能都能够被正常执行。

这一特性在一定程度上解决了 LotusScript. 环境中访问和控制 Lotus Symphony 的问题。开发人员可以得到几乎所有的 Lotus Symphony 提供的功能,这对那些具备 OpenOffice.org 开发经验的人来说几乎没有任何障碍,但对于不具备这些知识的开发人员来讲,即使支持这样的使用方式,仍然需要学习 OpenOffice.org 相关的知识。

以下为一段典型代码和运行效果。这一实例打开了一个文档,并在文档中插入特定的文字。

Sub Initialize
Dim objservicemanager As Variant
Dim objText As Variant
Dim args()

Set bjServiceManager = CreateObject("com.sun.star.ServiceManager")
Set bjCoreReflection= objServiceManager.
    createInstance("com.sun.star.reflection.CoreReflection") 
Set bjDesktop = objServiceManager.
    createInstance("com.sun.star.frame.Desktop")
‘the sample create a blank document, it is also possible to load from URL
Set bjDocument = objDesktop.
    loadComponentFromURL("private:factory/swriter", "_blank", 0, args)
Set bjText = objDocument.getText()
Set bjCursor = objText.createTextCursor()
objText.insertString objCursor, "JMP204", False
'more other calls to operate on the document model
‘dispose the document
 ‘objDocument.dispose
End Sub


图 4. 运行效果
图 4. 运行效果 

Notes 中的 Lotus Symphony SDK

在 Notes V8 安装包之外,专门为 Lotus Symphony SDK 提供了一个可供下载的 WebKit。该软件开发包可以被独立地使用。开发包提供了完整的文档,API 参考信息和实例。内容涵盖从背景知识到开发部署等各个环节。

注意:为 Notes 提供的 Lotus Symphony SDK 和为 Lotus Symphony 产品提供的 Lotus Symphony SDK 并非完全一致。在 Notes 产品中,更强调和 Notes 应用的集成性。虽然大部分的核心代码一致,但由于版本上时间差的关系,两者提供的 API 集合并不完全一致。

结束语

Lotus Notes V8 为 Notes 应用和办公文档应用打开了一扇全新的门。Lotus Symphony 可编程性功能丰富了 Notes 的应用程序开发模型,包括对复合应用的支持,对富客户端编程的支持,以及对 LotusScript. 编程的支持。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14751907/viewspace-404333/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14751907/viewspace-404333/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值