IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
skip to main content

developerWorks 中国  >  Lotus  >

基于 IBM Workplace SDK 为 IBM Workplace Collaboration Services 2.6 开发应用程序

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 中级

王立, Staff Software Engineer, IBM China Software Development Lab

2006 年 4 月 13 日

IBM Workplace Collaboration Services 是功能强大的企业级协作应用平台,是构建在 IBM 中间件产品之上的协作特性和服务的集合,可大大提高用户的工作效率。IBM Workplace SDK 允许开发人员基于 J2EE 编程模型,开发定制的 IBM Workplace 应用程序,以扩展 IBM Workplace 平台功能。本文介绍了 IBM WCS 和 IBM Workplace SDK,从设计、开发、部署和测试等方面给出了使用 IBM Workplace SDK 2.6 为 IBM Workplace Collaboration Services 2.6 开发应用程序的全部过程。

IBM Workplace Collaboration Services 是构建在 WebSphere Portal 之上的协作特性和服务的集合,其集成了全范围的随时可用的通信与协作工具,可大大提高用户的工作效率。Workplace Collaboration Services 2.6 的基本安装版本提供了一些最常用的协作特性,比如电子邮件、文档管理、日历、在线学习和网络会议。有关 IBM Workplace Collaboration Services 的更多信息,请访问 IBM Workplace Collaboration Services 主页。

IBM Workplace Software Development Kit(以前称为 IBM Workplace Collaboration Services API Toolkit)允许开发人员基于 J2EE 编程模型,通过开发新的业务组件、portlets 和其它组件来扩展 IBM Workplace Collaboration Services 平台,也可通过用户定制的客户端程序来扩展 IBM Workplace Managed Client 平台。IBM Workplace SDK 提供了公共的 APIs(Application Programming Interfaces)和 SPIs(Service Provider Interfaces)以供开发人员使用。有关 IBM Workplace SDK 的更多信息,请访问 IBM Workplace SDK 主页。

本文介绍如何使用 IBM Workplace SDK 2.6 为 IBM Workplace Collaboration Services 2.6 开发应用程序。为快速有效的开发 IBM WCS 应用程序,我们使用 IBM Rational Application Developer 作为开发工具,并采用可应用于 IBM RAD 的免费插件 Collaborative Component Wizard 来创建组件的不同层,该插件已被包含在 IBM Workplace SDK 2.6 中。

本文在介绍 IBM Workplace SDK 2.6 的基础上,讨论 IBM Workplace Collaboration Services 的业务组件开发模式,之后详细介绍了一个例子程序的配置、开发、测试与部署的全过程,用户参照本文即可为 IBM Workplace Collaboration Services 2.6 开发自己的应用程序,以满足相应的业务需求。

本文假定您是一位应用程序开发人员,并熟悉 IBM Workplace 产品。

IBM Workplace SDK

首先,我们给出 IBM Workplace Collaboration Services 的体系结构图(如图1所示),


图1 IBM Workplace Collaboration Services 体系结构图
图1 IBM Workplace Collaboration Services 体系结构图

由图1可知,IBM WCS 构建在中间件产品 IBM WebShpere Application Server 和 IBM WebSphere Portal Server 之上,是一个易于扩展和重用的基于组件的体系结构。IBM WCS 提供了两类组件,即基础架构组件和应用组件,其中应用组件作为 IBM Workplace 的业务组件,是重用基础架构组件提供的服务而构成。用户可通过 IBM Workplace SDK 提供的 Component Services APIs 访问业务组件提供的服务和内容,如创建讨论主题、发送邮件、安排 Web 会议的日程,也可通过 IBM Workplace SDK 提供的 Application Infrastructure Services APIs 访问基础架构组件提供的服务和内容,如按模板创建一个新的应用程序,修改一个已有应用程序的成员等等。

IBM Workplace SDK 2.6 为那些试图使用和扩展 IBM Workplace Collaboration Services 平台的开发人员而设计,例如开发新的 portlets 或者业务组件等。IBM Workplace SDK 2.6 支持 IBM Workplace Collaboration Services 2.6 和 IBM Workplace Managed Client 2.6。

IBM Workplace SDK 包含以下 APIs 和 SPIs :

Collaborative Application Component Interfaces

CACIs 可以帮助开发人员构建和 IBM Workplace Collaboration Services 协作环境和基础架构相集成的商业和应用组件。IBM Workplace Collaboration Services 使用这些接口将用户的组件合并到 IBM Workplace 应用程序和应用程序模板中。

Component and Application Infrastructure Services APIs

Component Services APIs 用来访问现有的 IBM Workplace 业务组件提供的服务和内容。Application Infrastructure Services APIs 用来管理 IBM Workplace 应用程序和模板。客户业务组件和外部应用程序可通过 Java 或 Web Services 方式使用这些 APIs。

IBM Workplace Mail Messaging SPI

用户可使用该 SPI 构建 email 信息处理程序,即先截获邮件,进行病毒检测、主动内容过滤、垃圾邮件过滤或者其它过滤操作之后再转发邮件。

IBM Workplace Instant Messaging SPI

用户可使用该 SPI 构建即时消息处理程序,即先截获即时消息,进行诸如日志、存储或翻译之类的操作之后再转发。

IBM Workplace JSP tags

使用这些 JSP 标签可在 portlet JSPs 中引入 people 和 presence awareness 功能。

IBM Workplace Managed Client APIs

用户可使用该组 APIs 提供的接口和工厂类来构建可定制和可扩展的客户端应用程序,这些应用程序基于 IBM Workplace Managed Client 平台并提供 Workplace Client 的服务和内容。这些客户端 APIs 还包含适合于 IBM Workplace Managed Client 平台的 IBM Workplace 服务器端 APIs 以及其它特定于 IBM Workplace Managed Client 平台的 APIs。





回页首


开发模式

IBM Workplace Collaboration Services 的所有应用程序组件和基础架构组件都是基于业务组件体系结构(参见图2)进行开发的,该结构整合了众所周知的基于 J2EE 开发的方法和最佳实践,业务组件体系结构描述了 Workplace 组件的组织、架构和行为模式。IBM Workplace 中的所有组件均按此体系结构实现,从可扩展性和灵活性角度考虑,建议为 IBM Workplace 服务器端开发客户组件时也采用该体系结构。业务组件体系结构是一个四层模型,即 User 层、Workspace 层、Service 层和 Resource 层,每层的功能和使用方式均有明确定义。


图2 业务组件体系结构
图2 业务组件体系结构

图2中四层模式的具体功能为:

User 层:包含用户界面使用的代码和组件,如 portlets、JSP 标签库、IBM Workplace Client Technology 平台视图等。

Workspace 层:包含业务代理。业务代理提供对 Service 层及其它非 Service 层的业务逻辑的访问。

Service 层:包含大部分(或全部)的应用业务逻辑。

Resource 层:控制对共享资源的访问,如数据库、目录服务等,并且提供对这些资源的存储和访问这些存储的结构。

在 IBM Workplace 平台上,Service 层的业务逻辑通常以无状态会话 Bean 方式实现。在 IBM Workplace 服务器端平台上,User 和 Workspace 层处于同一台服务器上,而 Service 和 Resource 层可分布于不同的服务器上。在 IBM Workplace Client Technology 平台上,所有层都处于同一客户端机器上。处于不同服务器上的组件可基于标准协议,如 Web Services 或 RMI/IIOP 进行通信。

按图2所示的四层模式可以开发出标准的业务组件,可供 IBM Workplace 服务器上的所有用户随时无限制的使用。在 IBM Workplace 协作环境中,这些业务组件通常需要加入到特定的应用程序实例中,只有具有特定权限的用户才可访问或进行其它操作。为达到这样的目的,用户需要开发一个以无状态会话 Bean 方式实现了 CACIs 的协作应用组件,该组件可将业务组件和 IBM Workplace 应用程序基础架构集成,从而成为 IBM WCS 应用程序或模板的一部分。当然,无须协作应用组件的支持,标准业务组件也可直接加入到 IBM Workpalce 的应用程序或模板中,但协作应用组件可为业务组件在协作环境下的应用提供支持。本文约定,本文所指的协作应用组件包含标准的业务组件。

有关 IBM Workplace SDK 开发模式、业务组件体系结构和协作应用组件的更多内容,请参见 IBM Workplace SDK 附带的《IBM Workplace Software Development Kit 用户指南》。





回页首


开发实例

快速有效的为 IBM Workplace Collaboration Services 2.6 开发应用程序,需要 IBM Workplace 开发环境的支持,包括系统环境、开发工具、SDK、开发插件和参数设置等。

开发环境

系统环境:开发人员应具备以下操作系统之一

  • Microsoft Windows 2000
  • Microsoft Windows XP
  • RedHat Enterprise AS for Linux
  • SuSe Linux 8.1

用来部署和测试组件的 IBM Workplace Collaboration Services 2.6 服务器,开发人员应拥有管理员权限。

同时还应配置有 Java 开发环境。

开发工具:建议采用安装了 portal 工具的 IBM Rational Application Developer 6.0 或以上版本(可使用组件开发向导插件),也可采用 IBM WebSphere Studio Application Developer 等(但不能使用组件开发向导插件)。开发人员可下载 IBM Rational Application Developer 试用版

SDK:下载IBM Workplace Software Development Kit 工具包。

开发插件:用于 IBM Workplace 应用程序开发的协作组件向导插件,该插件目前以随 IBM Workplace SDK 2.6 一起发布。

参数设置:IBM Workplace 应用程序开发的参数设置请参见 IBM Workplace SDK 附带的《IBM Workplace Software Development Kit 用户指南》,其中最主要的是 LWPAPI_HOME 和 WAS_HOME 参数。

开发实例

本文以 IBM Workplace SDK 的 Noteboard 实例为基础,介绍如何使用协作组件向导插件来实现了一个 IBM Workplace 协作应用组件,并分析实例代码的主要功能。Noteboard 组件允许用户发布 note,管理员可删除 note,每个 noteboard 实例维护自己的私有数据,所有数据以 in-memory 方式存储,在实际开发中,用户可将数据存储在实际的物理数据库中。有关 Noteboard 实例的详细信息请参见 IBM Workplace SDK 附带的《IBM Workplace Software Development Kit 用户指南》,或 IBM developerWorks 文章:IBM Workplace 应用程序开发: 在通知板应用程序上汇总讨论

Noteboard 组件包含以下部分:

  • Noteboard EJB:实现 CACIs 的 Lifecycle、Membership、Templatable、Sensor 和 Transactional 五个接口。
  • Noteboard Resource:实现 Noteboard 组件的 Resource 层,采用 in-memory 方式存储数据。
  • Noteboard Service EJB:实现 Noteboard 组件的 Service层,提供 Noteboard portlet 使用的业务逻辑。
  • Noteboard portlet:实现 Noteboard 组件的 User 和 Workspace 层,提供 Noteboard 组件的用户接口。

创建协作组件层项目

使用 IBM Workplace SDK 的协作组件向导插件创建 Noteboard 层项目。

1. 在 IBM Rational Application Developer 中,选择 File - New - Project。

2. 展开 IBM Workplace,选择 Workplace Collaboration Services Component (Tech Preview)。

3. 在向导的第一页(参见图3),输入组件名,向导将自动命名各层项目,单击 Next。


图3 命名组件
图3  命名组件

4. 在向导的第二页(参见图4),可修改类名和包名。


图4 修改类名、包名
图4 修改类名、包名

协作组件向导插件以 IBM Workplace SDK 附带的 CollabComponent 例子为基础生成新的协作组件代码框架,如图5所示。


图5 NoteboardComponent 实例框架图
图5 NoteboardComponent 实例框架图

按照业务组件体系结构的四层模式,各层说明如下:

User 层

存在于 NoteboardComponentPortlet 项目中,User 层以 portlet 方式呈现。

Workspace 层

存在于 NoteboardComponentPortlet 项目中,可直接调用 Noteboard 的 Service 层代码。

Service 层

存在于 NoteboardComponentServiceEJB 项目中,以无状态会话 Bean 方式实现 Noteboard 组件的业务逻辑,其代码框架如图 6 所示。


图6 Service 层代码框架
package …;
importpublic class NoteboardServiceBean implements javax.ejb.SessionBean {
    /**
     * 此处为实现会话Bean所需方法的默认实现,如 getSessionContext, setSessionContext,
     *  ejbCreate, ejbRemove, ejbActivate, ejbPassivated 等,可视实际情况修改。
     */
    public Notice updateNotice(Notice notice) //Service logic method
        throws … {
            // 业务逻辑代码
    }
    /**
     * 还可添加其它业务逻辑方法
     */
}

Resource层

CollabComponent 实例中的 Resource 层划分不是很清晰。实际开发中,建议对以协作组件向导插件生成的项目框架进行修改,将 Resource 层独立出来,参见 IBM developerWorks 文章:IBM Workplace 应用程序开发: 在通知板应用程序上汇总讨论

协作组件

存在于 NoteboardComponentEJB 项目中,以无状态会话 Bean 方式,实现一个(Lifecycle)或多个 CACIs,之后创建用户界面的 portlet,并通过 portlet.xml 中的 JNDI 定义将该 EJB 和 portlet 关联起来。其代码框架如图7所示。


图7 协作组件代码框架
package …;
import …
/**
 * 协作组件以无状态会话 Bean 实现,框架自动生成 CACIs 中方法的实现,开发时需视情况修改。此 Bean
 * 扩展 CollaborativeApplicationComponentBean 类,该类实现会话 Bean 所需方法的默认实现,
 * 如 getSessionContext, ejbCreate, ejbRemove, ejbActivate 等,可视实际情况修改。
 */
public class NoteboardComponentBean extends CollaborativeApplicationComponentBean {
    // Lifecycle 接口的实现,要实现其它接口,必须先实现 Lifecycle 接口
    /**
     * createInstance 方法,在创建组件实例的时候调用,组件实例在以下情况时创建:
     * 1. 协作组件 EJB 关联的 portlet 加入到模板或应用程序中
     * 2. 用 IBM Workplace 模板编辑器打开包含这样的 portlet 的模板
     * 3. 从包含这样的 portlet 的模板创建一个应用程序
     */
    public String createInstance( InstanceDescription description ) throws WorkplaceException { … }
    /**
     * removeInstance 方法,在释放组件实例的时候调用,组件实例在以下情况时释放
     * 1. 用 IBM Workplace 模板编辑器关闭包含这样的 portlet 的模板
     * 2. 用 IBM Workplace 模板编辑器从模板中删除这样的 portlet
     * 3. 删除包含这样的 portlet 的模板或应用程序
     */
    public void removeInstance( String id ) throws WorkplaceException { … }

    /**
     * Membership 接口的实现,该接口完成以下功能:
     * 1. 允许协作组件定义其自己的角色
     * 2. 当往角色中加入成员或从角色中删除成员时通知协作组件实例
     */
    public void addMembers( String id, DataObjectList members )  throws WorkplaceException { … }
    public void removeMembers( String id, DataObjectList members ) throws WorkplaceException { … }
    public DataObjectList getRoles( String id )throws WorkplaceException { … }

    /**
     * Sensor 接口的实现,该接口的 getSensorValues 方法用来获取由协作组件管理的资源信息,
     * 包括组件创建日期、最近修改日期、最近访问日期、资源大小(bytes)
     */
    public DataObjectList getSensorValues(String id) throws WorkplaceException{ … }

    /** 
     * Templatable接口的实现,该接口允许协作组件在 IBM Workplace 模板中存储信息。
     * describeInstance方法,当使用 IBM Workplace 模板和应用程序编辑器编辑模板(该模板
     * 中包含与协作组件相关联的portlet)和保存更改时调用该方法
     */
    public InstanceDescription describeInstance( String id ) throws WorkplaceException { … }

    /**
     * Transactional接口的实现。如果Lifecycle和Membership接口的方法支持全局事务,则
     * isTransactional方法应返回true。
     */
    public boolean isTransactional() { return false; }
}

导出组件

导出的 EAR 文件包含协作组件和业务组件需要的其它代码,WAR 文件包含 portlet(s)。

安装组件

安装 EAR 文件,步骤如下:

1. 以管理员身份登陆 WAS Admin Console,http://servername:port/admin,默认端口为9091;

2. 左侧面板,Applications - Install New Application,Local path 中选择 EAR 文件,单击Next;

3. Step 1 和 2 保留默认设置,Step 3 中,选择 WebSphere_Portal,点击 Module 复选框,选中所列的两个 jar 文件,单击 Next,如图8所示;


图8 安装 EAR 文件的 Step 3
图8 安装 EAR 文件的 Step 3

4. Step 4 中,选择 lwpUser 复选框,单击 Next,如图9所示;


图9 安装 EAR 文件的 Step 4
图9 安装 EAR 文件的 Step 4

5. 完成安装并保存配置,之后在左侧面板,Applications - Enterprise Applications,确保刚才安装的 EAR 处于运行状态。

安装 WAR 文件,步骤如下:

1. 以管理员身份登陆 IBM WCS Server,http://servername:port/lwp/workplace, 默认端口为 9081,如果配置了外部 HTTP Server,可省略端口;

2. 顶部菜单 Administration - Portlets - Install,选择 WAR 文件,单击 Next,安装,如图10;


图10 安装 WAR 文件
图10 安装 WAR 文件

3. 更改安装的 portlet 的访问权限,Access - Resource Permissions,选择 portlet,找出刚安装的 portlet,单击其 Assign Access 按钮(钥匙图形),如图11所示;


图11 更改 portlet 访问权限
图11 更改 portlet 访问权限

4. 在 Roles 的 User 栏,单击 Edit Role 按钮(铅笔图形),如图12所示;


图12 编辑用户角色
图12 编辑用户角色

5. 确定 all authenticated portal users 和 all portal user groups 在 Members in the Role 列中,如果没有,通过单击 Add 添加,完成后,单击 Done。

测试组件

1. 以管理员身份登陆 IBM WCS Server,顶部菜单 Templates - Application Template Library,单击 New,命名模板,Category 选择 Workplace Application,单击 OK;

2. 在模板编辑器中,左侧面板选择 Pages and Layout,选择 Page2(也可选择自定义的 Page),单击 Add portlets,选择刚才安装的 portlet,如图13所示;如果默认设置符合要求,可以保留,单击模板编辑器顶部 Save and Close 按钮保存退出;


图13 创建模板
图13 创建模板

3. IBM WCS 顶部菜单 My Work - Team Collaboration - Applications,单击 New,命名应用程序名,Template 选择刚才创建的模板,单击 OK,之后在 Applications 列表中出现新创建的应用程序,如图14所示,运行结果如图15所示。


图14 创建应用程序
图14 创建应用程序

图15 Noteboard Component 运行结果
图15 Noteboard Component 运行结果




回页首


小结

IBM Workplace Collaboration Services是功能强大的企业级协作应用平台,可大大提高用户的工作效率,IBM Workplace SDK 为用户开发定制的 IBM Workplace 应用程序提供了支持。本文介绍使用 IBM Workplace SDK 2.6 为 IBM Workplace Collaboration Services 2.6 开发应用程序的全部过程,有关 IBM Workplace 和 SDK 的更多信息请参考本文的参考资料。





回页首


参考资料





回页首


关于作者

王立是一名 Staff Software Engineer,于 2005 年 7 月加入 IBM 中国软件开发中心,从事 IBM Workplace for i5/OS 方面的工作。他拥有西安交通大学计算机科学博士学位。他发表了 30 余篇学术论文,合著高校教材一部。您可以通过 edwardw@cn.ibm.com 和他联系。






回页首


对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


其他公司、产品或服务的名称可能是其他公司的商标或服务标志。


    关于 IBM隐私条约联系 IBM