搜索文章:

首页  |  Java技术  |  Asp.net  |  Asp编程  |  VC/C++  |  Delphi  |  VB编程

向 IBM Workplace portlet …

级别: 中级

Bryan Daniel
软件工程师, IBM
2005 年 7 月

了解如何使用 IBM Workplace Collaboration Services API Toolkit,来向 IBM Workplace portlet 添加到场提醒并帮助回答那个古老的问题:有人在吗?

IBM Workplace Collaboration Services 是一个提供了立即可用的通信和协作服务的集成环境,这些服务使人们可以更有效地工作。Workplace Collaboration Services 提供了诸如电子邮件、日程表和工作安排、在线培训、即时消息传递、Web 会议和文档管理等功能。这些开箱即用的功能提供了一个完全协作的解决方案,该解决方案在许多情况下为您的用户提供了完成工作所需的一切。

此外,Workplace Collaboration Services 还提供了 IBM Workplace Collaboration Services API Toolkit。该工具箱允许您使用新的协作 portlet、服务,或者二者都使用,来扩展 Workplace Collaboration Services。您可以通过访问 工具箱页面 来下载 IBM Workplace Collaboration Services API Toolkit。

本文是 Workplace 应用程序开发系列文章的第一篇。本文介绍了如何使用 IBM Workplace Collaboration Services API Toolkit 来向 Workplace portlet 添加到场提醒。我们将以对该工具箱的简短概述开始,然后讨论向 portlet 添加到场提醒所涉及的步骤。本文假定您是一个有经验的 Java 开发人员,并熟悉 IBM Workplace Collaboration Services。要了解更多信息,请访问 developerWorks 上的 IBM Workplace 资源中心。

IBM Workplace Collaboration Services API Toolkit
IBM Workplace Collaboration Services API Toolkit 使开发人员可以使用 J2EE 编程模型来构建业务组件和 portlet。Workplace Collaboration Services 2.5 中的该工具箱提供了下面的公共应用程序编程接口 (API) 和服务提供者接口 (SPI)。

IBM Workplace Collaboration Services JSP 标签
Workplace JSP 标签使 portlet 开发人员能快速结合由 Workplace 产品为 portlet 提供的丰富的协作功能。这次提供的两个标签是人员标签(person tag)和在线中心标签(on-line center tag)。人员标签提供了命名出现在 portlet 中的人员的即时协作功能。这提供了动态地表明一个人是否在线的方法,并提供了一个协作功能菜单,如电子邮件和聊天。在线中心标签已经被组合到了 Workplace 页面的页眉当中,但是您可以把它添加到任何由 portlet 生成的新窗口中。该标签允许您能够让用户控制他们的在线状态(活动、离开、请勿打扰)。

Workplace Instant Messaging SPI
Workplace Instant Messaging SPI 使您能够在即时消息交付之前截获它们。您可以执行诸如文件过滤、阻塞和 即时消息内容翻译 等功能。您也可以通过该 SPI 存档或记录即时消息。您可以把该接口作为服务器上的 servlet 执行。每次 Workplace 即时消息传递服务器交付一个消息时它就会执行。

Workplace Mail Messaging SPI
通过提供邮件处理程序和交付扩展,Workplace Mail Messaging SPI 扩展了 Workplace 消息传递服务。这两个接口都是作为可以从服务器上执行的类文件实现的。处理程序接口提供了到所有经过消息系统传递的邮件的低级访问。您可以使用多个处理程序来执行诸如病毒扫描和垃圾邮件过滤之类的功能。交付接口使您能够控制将消息交付到哪个文件夹,还可以使用它来更改消息的目的文件夹(如果它违反了一些预定义的业务规则)。

Collaborative Application Component Interfaces
Collaborative Application Component Interfaces 使开发人员能够构建与现有的 IBM Workplace 基础设施集成的业务组件。这些业务组件是作为无状态会话 Enterprise JavaBean (EJB) 实现的,并用作表示业务概念、过程和服务的方法。诸如小组日程表、小组任务表、联系人列表和搜索等开箱即用的功能,都是作为业务组件实现的。在构建一个业务组件后,您可以使用 Workplace Builder 把该组件组合到 Workplace 应用程序中去。

Component and Application Infrastructure Services APIs
该工具箱中新增的 Component and Application Infrastructure Services APIs 是由两组截然不同的 API 组成的:组件服务和应用程序基础设施。组件服务 API 允许您访问由现有的 Workplace 业务组件提供的服务。该 API 允许您执行诸如修改日程表条目、访问讨论主题、创建文档、发送邮件和安排 Web 会议等功能。这允许您将这些协作行为更深入地集成到自己的解决方案中。

应用程序基础设施 API 允许您管理 Workplace 应用程序和应用程序模板。包括创建应用程序和模板、访问应用程序和模板目录以及管理应用程序实例的能力。

IBM Workplace Client Technology platform APIs
该工具箱的另一个新增功能就是 IBM Workplace Client Technology platform APIs,它允许您使用自己定制的应用程序来扩展 IBM Workplace 客户机平台。您可以使用 Web 浏览器所不能提供的功能,包括访问操作系统特定用户控制权、使用脱机执行机制和与基于服务器的组件通信。

添加到场提醒
本文的其余部分将演示如何把 IBM Workplace Collaboration Services JSP 标签结合到现有的 portlet 中去。我们的目标是要说明可以多快地将一个现有的 portlet 立即部署在 WebSphere 应用程序服务器上,并使它在 Workplace Collaboration Services 内运行。在我们的例子中,启用了一个带有上下文相关的菜单的 Purchase Order portlet,这些菜单向工作场所内的用户提供协作功能。用户不仅能看到谁在进行订购,还可以看到这个人是否在线,通过即时消息传递、电子邮件或二者都用来联系此人,并从公司名录中检索相关信息。这个过程与其他 portlet 开发人员启动自己的 portlet 所需的步骤类似。

首先,在一个 IDE(如 IBM Rational Application Developer)中打开您的 portlet 项目。(本文的演示中使用的是 Rational Application Developer。您可以从 developerWorks: Rational 上下载 Rational Application Developer for WebSphere Software V6.0 的测试版。) 当前 Portal Toolkit (V5.0.2.2) 中包含的提醒类和标签库不包含与 Workplace Collaboration Services 中提供的同等级别的功能。(注意:IBM Workplace Collaboration Services 使用了 WebSphere Portal V5.0.2.2。)通过打开项目属性并选择 Java - Build Path Libraries - Add External JARs,从 Workplace Collaboration Services 服务器添加 <install_dir>\WorkplaceServer\lwp_lib\lwp.peoplePersonTagTaglib.jar 文件到类路径。重复相同的步骤,添加下列 JAR 文件:

  • <install_dir>\WorkplaceServer\lwp_ext\lwp.peopleProtoAPI.jar
  • <install_dir>\WorkplaceServer\lwp_ext\lwp.commoninfrautil.jar
  • <install_dir>\AppServer\lib\wmm.jar

 

还要从 Workplace Collaboration Services 服务器上导入 <WPS_ROOT>\shared\app\WEB-INF\tld\people.tld 文件到项目中的 WebContent/WEB-INF/tld 文件夹。

要向每个用户名添加一个能显示在 portlet 中的上下文相关的协作功能菜单,请找到 portlet 项目中显示用户名的 JSP,并打开进行编辑。您可能需要编辑多个 JSP 文件,这取决于您的门户应用程序的复杂性。

为了使标签库能找到所需的类文件,必须导入正确的程序包。为此,向 JSP 文件中的导入指令添加 com.lotus.cs.*(参见图 1)。注意:该程序包已经包含在 IBM Workplace Java 运行时的类路径中了。

图 1. 导入指令

到场提醒功能(如确定用户的在线状态)是由 Workplace Collaboration Services 中的 JSP 标签提供的。在使用人员标签之前,向正确的标签库添加一个引用(参见图 2)。在 JSP 中找到引用 portlet 标签库 (portlet.tld) 的行,并紧随其后添加下面的行:

<%@ taglib uri="/WEB-INF/tld/people.tld" prefix="pa" %>

图 2. 标签库

接下来,设置协作环境。这涉及到设置环境属性(如服务器的位置)、登录用户的凭证和适当语言的资源字符串。通过使用 CSEnvironment 类对象,这些任务很容易完成。在先前输入的标签库引用后面添加下面的 scriptlet:

<% CSEnvironment environ = CSEnvironment.getEnvironment(request);
CSCredentials cred = environ.getCredentials(request); %>

在 JSP 文件中找到显示用户名的代码。在大多数情况下,用户名要么是从字符串变量得到,要么是从会话对象中得到。例如,在我们的例子中所使用的 PORequest portlet,其联系人姓名是从 POItemBean 对象得到的,并作为表格中的值显示:

<!-- Display purchase order contact name --> <TD nowrap align="left"> <%=POItemBean.getContactPerson()%> </TD>

要对每个用户名添加协作功能菜单,请使用人员标签。人员标签语法如下:

<pa:person valueType="type" value="type_name" displayName="name"
skin="skin_JSP_name"></pa:person>

valueType 和 value 参数指定了用户被设置为如何确定其在线状态。valueType 参数可以被设置为 LDAPDN (LDAP Distinguished Name)、EMAIL、WMMID 或 MEMBERDN (Member Distinguished Name)。value 参数则必须根据指定的类型设置。例如,如果 valueType 被设为 EMAIL,value 参数就会包含此人的电子邮件地址(例如,user@ibm.com)。displayName 参数指定了哪个名字会被人员标签显示在 portlet 中。skin 参数是可选的,它允许您定制由人员标签呈现的人员链接菜单的外观。

注意:仍然支持 <pa:person>John Doe</pa:person> 格式(也即不带属性),但是建议以后不要使用。

使用人员标签来代替用来显示用户名的语句。确保为每个参数指定适当的值。例如,把上一步中所示的代码调整为如下:

<!-- Display purchase order contact name (with awareness) --> <TD nowrap align="left"> <pa:person valueType="EMAIL" value="<%=POItemBean.getContactPersonEmail()%>" displayName="<%=POItemBean.getContactPerson()%>"> </pa:person> </TD>

<pa:person> 标签是单独的一行,这很重要。在中间添加一个回车符号或换行符将导致运行时 JavaScript 出错。(前面代码中的 <pa:person> 标签语句显示为两行,这只是为了清晰可读。)

在保存更改后,把门户项目作为 WAR 文件导出。在 Rational Application Developer 中,这是通过在项目上右击并选择 Export 实现的。选择 WAR 文件,然后单击 Next。在输入文件名后,单击 Finish 完成导出。

图 3. 导出界面

门户应用程序的 WAR 文件可以与部署到 WebSphere Portal 上相同的方式,部署到 Workplace Collaboration Services 服务器上。以管理员的身份登录 Workplace Collaboration Services 并选择页面顶部的 Administration 链接。选择 Portlets - Install,并按照提示安装门户应用程序 WAR 文件。

安装完门户应用程序之后,把它放在要使用的页面上。在管理员页面上,选择 Portal - User Interface - Manage Pages。导航到 My Portal - My Work 并向一个已有页面添加 portlet。(也可以选择创建新的标签和页面以放置 portlet。)

在把 portlet 添加到页面之后,导航到包含 portlet 的页面。注意目前在线的用户旁边都有一个人形图标。当工作场所中的人的状态改变时,portlet 随之更新状态。

图 4. 带有到场提醒的 Portlet

除了显示此人的状态,还将会弹出一个提供协作功能(如电子邮件和聊天)的菜单。还可以查看某人的个人记录和把某人添加到您的地址簿中。

结束语
在本文中,我们演示了如何使用 Workplace JSP 标签,来把 Workplace 功能(在本文中是到场提醒)结合到门户应用程序中。此外,由于协作服务是在单一的基于 J2EE 的基础设施中管理的,所以您可以向 portlet 添加到场提醒,而无需管理用户到即时消息传递服务器的连接。

我们展示了向 portlet 添加到场提醒,然后部署 portlet 到 IBM Workplace Collaboration Services 环境中所需的步骤。我们首先找到显示用户名的 JSP 文件。然后使用引用到场提醒标签库和在 portlet 中设置协作环境的语句,更新每个 JSP 文件。最后的更新涉及到显示用户名的人员标签的使用。该标签提供了在每个人的名字旁边显示一个上下文相关的协作功能菜单和一个说明其在线状态的指示器的业务逻辑。虽然本文没有讨论,但菜单标签库也支持使用自己定制的行为来扩展菜单。

向门户应用程序添加到场提醒功能只是把解决方案与 IBM Workplace Collaboration Services 集成的众多可能方式之一。在该系列文章的下一部分,我们将讨论使用 Instant Messaging Service Provider Interface (SPI) 来增强 Purchase Order portlet 的聊天功能。

相关文章:
© 2006   www.java-asp.net