开发 WebSphere Application Server Communication Enabled Application (CEA) 小部件

Communication Enabled Application (CEA) Dojo 小部件首次发布于 IBM® WebSphere® Application Server V7 Feature Pack for Communication Enabled Applications 和 IBM WebSphere Application Server V8之中,现在可以以源代码形式获取它,将它用作您创建自己的 CEA 小部件的样例。这为您提供了自由和灵活性,使您能够为您所需的任何 Dojo 版本重构小部件,并自定义它们来满足您的应用程序需求。本文描述了一些通用的 CEA 概念,并解释了如何使用这些小部件作为进行您自己的小部件开发的起点。

Brian Pulito, WebSphere 架构师 - SIP, IBM

Brian Pulito 的 IBM 职业生涯最初是从 Lotus 团队开始的,当时他从事 Sametime 产品方面的工作,专攻实时协作领域。为了促进 Sametime对标准协议的使用,他开始使用 SIP 协议,这最终以 JSR 289 SIP Servlet Container 的形式融入了 WebSphere。Brian 领导着 JSR 289 容器/代理以及 Communications Enable Application Feature Pack 的开发工作,Communications Enable Application Feature Pack 为希望将通信集成于其 Web 应用程序之中的开发人员提供了一种简化的编程模型。



Andrew Ivory, 软件工程师,杰出发明人, IBM

Andy Ivory 的照片Andy Ivory 是一名 IBM 咨询软件工程师和 Communications Enabled Applications Feature Pack 架构师。他于 2002 年 12 月获得了宾夕法尼亚州立大学的计算机工程专业的理学学士学位,并于 2003 年 1 月加入 IBM。



2012 年 7 月 05 日

免费下载:IBM® WebSphere® Application Server 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

Communication Enabled Application (CEA) Dojo 小部件发布于 IBM WebSphere Application Server V7 Feature Pack for Communication Enabled Applications 和 IBM WebSphere Application Server V8 之中,IBM WebSphere Application Server V8.5 中已经弃用它。这意味着特定于 CEA 的小部件(以及包含小部件的 Dojo 的自定义构建)已经脱离了 WebSphere Application Server 产品。揭示 CEA REST 接口的基础 CEA 系统应用程序仍然属于 WebSphere Application Server,但通过发布小部件源代码并使您可在此处使用它,您现在就拥有了重建您所需的任何 Dojo 版本的自由和灵活性,从而可以与您的 Java™ EE 应用程序进行交互操作。此外,这也支持供应商修改小部件源,获得他们可能需要的任何定制。

本文在较高的层面上通过一些通用的 CEA 概念描述了CEA 小部件,然后提供了您构建 CEA 小部件所需的详细信息,其中包括如何在本文包含的 下载材料 中组织小部件源代码的信息。

CEA 是什么?

Communications Enabled Applications (CEA) 能够向任何应用程序或业务流程添加动态 Web 通信。CEA 特性最初是在 WebSphere Application Server V7 Feature Pack for Communications Enabled Applications 中提供的,目前在基础 WebSphere Application Server V8 产品中提供,该特性提供了一组集成电话服务和协作式服务,这些服务扩展了企业和 Web 商业应用程序的交互性。

有了 CEA 功能,企业解决方案架构师和开发人员就可以使用单个核心应用程序来支持多种通信模式。您不必掌握大量的电话或 Session Initiation Protocol (SIP) 方面的知识来实现 CEA;CEA 功能提供了呼叫控制 (call control)、设备通知和实时数据通信,并为将这些功能轻松集成到 Web 和移动应用程序中提供了一个平台。

CEA 的后端包含一个聚合系统应用程序,该应用程序揭示了一个 REST 接口,并通过 TR 87(基于 SIP 的 CSTA)与基于 SIP 的 PBX 进行通信,从而执行第三方呼叫控制。REST 接口还支持直接在两个诸如同步浏览和聊天这样的服务端点之间发送通用数据。

图 1 从较高层面上显示了 CEA 组件。

图 1. CEA 组件
图 1. CEA 组件

如您所见,访问 CEA REST 接口的主要方法是通过各种基于 CEA Dojo 的小部件来完成。这些小部件封装了大量 CEA 功能,下一节将概述这些功能。


CEA 小部件工具包

CEA 小部件工具包可同时用于桌面和移动 Web 应用程序。基础功能对于这两个环境是相同的。但是,由于在某些情况下移动应用程序有不同的可视化和交互需求,所以桌面小部件已经扩展到可以提供一个全新的外观。

表 1. 桌面浏览器小部件
小部件名称描述
CallNotification.js该小部件使用户能够输入一个电话号码或 SIP URI,然后监视呼叫通知线路。当检测到有来电时,小部件就会警告用户,然后提供基本的状态更新和呼叫控制设施(比如挂断呼叫的能力)。另外,可以对该小部件进行配置,提供一个 CollaborationDialog,并支持用户和呼叫者一起参与到同步浏览场景中。可以为移动和浏览器环境提供单独的 CallNotification 小部件。CallNotification 小部件继承自下文的 EventHandler 小部件。
ClickToCall.js该小部件使用户能够配置呼叫者电话号码或 SIP URI,并输入被呼叫者电话号码进行呼叫,然后在用户的电话与电话号码或编码成 widgetNumber 的 SIP URI 之间发起一个电话呼叫。发起呼叫之后,小部件会提供基本状态更新和呼叫控制。另外,可以配置小部件来提供一个 CollaborationDialog,并支持用户在打电话期间与被呼叫者一起参与到同步浏览中。可以为移动和浏览器环境提供单独的 ClickToCall 小部件。ClickToCall 小部件继承自下文的 EventHandler 小部件。
Cobrowse.js该小部件使用户能够创建一个邀请链接并发送给同行。在创建邀请链接之后,小部件开始从同行处轮询加入通知。同行单击邀请链接时,该小部件加载并进行相应的呼叫,让同行加入协作会话。该小部件利用 cea.widget.CollaborationDialog 提供了一个与同行进行交互的模式窗口。
CollaborationDialog.js该小部件提供了一个扩展了 cea.widget.CollaborationDataTransfer 的模式对话框,与同行共享页面、链接等。具体来说,该小部件提供的事件处理程序可以设计模式对话框,并向同行以及在收到数据时调用的结果处理程序发送数据。CollaborationDialog 小部件继承自下文的 CollaborationDataTransfer 和 CollaborationDialogBrowser 小部件。
CollaborationDialogBrowser.js该小部件为 back 按钮、forward 按钮、refresh 按钮和地址栏处理程序提供了基本的浏览器历史记录处理程序。
EventHandler.js这是一个基础级别的小部件,可同时运行于基于移动和基于浏览器的运行时环境中。其他所有 CEA 小部件都需要它,因为它使用 CEA 系统应用程序来处理基础异步通信信道。使用 HTTP 模拟一个异步通信信道依赖于通过 CEA REST 接口的长轮询 HTTP 请求。该小部件封装了所有的功能。

该类接收使用其余服务的 CEA 事件,还提供了一些基本呼叫来获取事件、添加/删除事件处理程序,以及开始/停止轮询事件。

CollaborationDataTransfer.js该小部件继承自上文的 EventHandler 小部件。该类用于创建、加入和破坏与同行进行的协作会话,还提供了在创建协作会话之后使用 CEA REST 服务发送和接收数据的方法。在初始化协作会话之后,就可以使用这个小部件向同行发送数据或者获取同行发送的数据。
TwoWayForm.js该小部件使两个用户能够在一个表单上进行协作;也就是说,已连接用户中的任何一个都可以向表单中的字段提供输入。另外,可以将字段设计为只有已连接用户中的其中一个可以对其进行编辑,或者需要已连接用户中的任何一个进行确认。
表 2. 特定于移动的小部件
小部件名称描述
ClickToCall.js
CallNotification.js
Cobrowse.js
CollaborationDialog.js
这些小部件每个都拥有基础桌面小部件的一个特定于移动的扩展。这些扩展修改了小部件的外观和交互方式,从而为移动浏览器(iOS 和 Android)优化了它们。(参见表 1 获得有关的单独描述。)
iFrame.js该小部件可用于弥补面向 iOS 和 Android 浏览器的默认 iFrame 实现方面的一些不足。它添加了在移动设备上进行同步浏览所需的基本触摸滚动和缩放支持。

CEA 小部件源代码

本文提供了 CEA 小部件源代码,将它作为您进行自己的开发的起点,并将它打包成类似典型 Dojo 工具包的东西,放在一个叫做 cea-widgets-source.zip 的文件中。在 cea 目录下(参见图 2),您将在 widget 目录中发现主要的小部件定义文件,并且在 tests 目录下发现相关的测试案例 HTML 文件。特定于移动的小部件被视作一个子包,您可以在 mobile 目录中找到它。

图 2. CEA 小部件源代码的目录结构
图 2. CEA 小部件源代码的目录结构

在主要小部件目录下,有一个针对包含 JavaScript™ 文件(例如 ClickToCall.js)的每个小部件的目录,以及一个相关的目录,该目录中包含模板文件 (ClickToCall/ClickToCall.html) 和用于小部件(参见图 3)的 css 定义 (ClickToCall/ClickToCall.css)。对于需要翻译的小部件,在 nls 目录中还有一个相关的消息包(例如 nls/ClickToCall.js)。

图 3. 小部件目录
图 3. 小部件目录

验证和处理程序子目录包含额外的子小部件 (sub widget),这些小部件由 TwoWayForm 特性进行利用。

同样的模式也被用于移动小部件,用来定义其 JavaScript、HTML 模板、CSS、nls 和测试(参见图 4)。

图 4. 移动小部件的目录
图 4. 移动小部件的目录

构建 CEA 小部件

ceadojo 定制构建可以使用特定版本的 Dojo 将 CEA 小部件打包,并消除了声明 CEA 模块路径和 “导入” 小部件的需求。在 WebSphere Application Server V8 中,引入了新版的 Dojo 1.5.0,可以用它来创建随小部件一起提供的定制构建。定制构建利用了 Dojo Build System (Pre 1.7)

我们并没有指望本文所包括的小部件源代码可以使用任何版本的 Dojo(而非 IBM 的 Dojo Toolkit 的 1.5.0 版本)进行构建。对源代码所做的修改很可能要求与将和小部件一起打包的 Dojo 的任何版本兼容。

在弃用 WebSphere Application Server 中的 CEA 小部件并为您配备小部件源代码之后,您现在就可以使用应用程序所需的任何版本的 Dojo 进行定制并对这些小部件进行打包。由于 Dojo 自 1.5 起已经有多个版本,所以您可能想根据最新版本的 Dojo 进行构建。下载 Dojo 版本进行构建还有多种方式。WebSphere Application Server 用户可以通过下载最新的 WebSphere Application Server Feature Pack for Web 2.0 and Mobile 来访问 IBM Dojo Toolkit (IDT),这包括 Dojo 的最新的 IBM 源版本。此外,您可以下载 最新的 Dojo 源代码

ceadojo 配置文件可以在 cea widgets/ceadojo.profile.js 中找到,它正确定义了构建系统将在 Dojo 的构建版本中包含的内容。ceadojo 配置文件中的密钥部分已在清单 1 到 3 中标注出来。清单 4 完整地显示了 ceadojo.profile.js。

清单 1. 层
dependencies = {
layers: [
{
        	name: "dojo.js",
清单 2. 依赖关系
dependencies: [
			"dojo.i18n",
			"dojo.io.iframe",
			"dojox.layout.ContentPane",
			"dijit._Templated",
			"dijit._Widget",
			"dijit.Dialog",
			"dijit.layout.LayoutContainer",
			...
			"cea.mobile.widget.CallNotification",
			"cea.mobile.widget.ClickToCall",
			"cea.mobile.widget.Cobrowse",
			"cea.mobile.widget.CollaborationDialog",
			"cea.mobile.widget.iFrame"
清单 3. 前缀
prefixes: [
[ "dijit", "../dijit" ],
	 	[ "dojox", "../dojox" ],
		[ "cea", "../cea" ]
]
清单 4. ceadojo.profile.js
dependencies = {
layers: [
{
        	name: "dojo.js",
		dependencies: [
			"dojo.i18n",
			"dojo.io.iframe",
			"dojox.layout.ContentPane",
			"dijit._Templated",
			"dijit._Widget",
			"dijit.Dialog",
			"dijit.layout.LayoutContainer",
			"dijit.form.Button",
			"dijit.form.CheckBox",
			"dijit.form.ComboBox",
			"dijit.form.DateTextBox",
			"dijit.form.FilteringSelect",
			"dijit.form.MultiSelect",
			"dijit.form.HorizontalSlider",
			"dijit.form.VerticalSlider",
			"dijit.form.Textarea",
			"dijit.form.TextBox",
			"dijit.form.TimeTextBox",
			"cea.widget.CallNotification",
			"cea.widget.ClickToCall",
			"cea.widget.Cobrowse",
			"cea.widget.CollaborationDataTransfer",
			"cea.widget.CollaborationDialog",
			"cea.widget.CollaborationDialogBrowser",
			"cea.widget.EventHandler",
			"cea.widget.TwoWayForm",
			"cea.widget.handler.dijit._DateTimeTextBoxHandler",
			"cea.widget.handler.dijit._DijitWidgetHandlerFactory",
			"cea.widget.handler.dijit._MultiSelectHandler",
			"cea.widget.handler.dijit._SimpleValueHandler",
			"cea.widget.handler.dijit._ToggleHandler",
			"cea.widget.handler.WidgetHandler",
			"cea.widget.handler.WidgetHandlerFactory",
			"cea.widget.validation._DefaultValidationWidget",
			"cea.widget.validation._ValidationManager",
			"cea.widget.validation.ValidationWidget",
			"dojox.html.ext-dojo.style",
			"dojox.mobile",
			"dojox.mobile.parser",				
			"cea.mobile.widget.CallNotification",
			"cea.mobile.widget.ClickToCall",
			"cea.mobile.widget.Cobrowse",
			"cea.mobile.widget.CollaborationDialog",
			"cea.mobile.widget.iFrame"	                    
	      ]
}
		],
		prefixes: [
			[ "dijit", "../dijit" ],
		 	[ "dojox", "../dojox" ],
		 	[ "cea", "../cea" ]
]

要构建 ceadojo 工具包,您可以使用 所包含的构建脚本文件 并传递如清单 5 所示的属性。

清单 5. 构建属性
profile=ceadojo
releaseName=ceadojo
version=<version-number>
action=release	
localeList=ar,ca,cs,da,de-de,el,en-gb,en-us,es-es,fi-fi,fr-fr,he-il,hu,it-it,ja-jp,ko-kr,
nl-nl,no,pl,pt-br,pt-pt,ru,sk,sl,sv,th,tr,zh-tw,zh-cn,ro
cssOptimize=comments.keepLines
scopeMap=[['dojo','ceadojo'],['dijit','ceadijit'],['dojox','ceadojox']]

结束语

本文详细介绍了如何构建与 IBM WebSphere Application Server 的 Collaboration Enabled Applications 小部件相关的源代码,并将它们与您自己的 Dojo 版本打包在一起。通过使 CEA 小部件源代码变得可用,您现在就可以以您认为合适的任何方式免费扩展这些小部件的功能。


下载

描述名字大小
代码样例cea-widgets-source.zip197 KB

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, Web development
ArticleID=824343
ArticleTitle=开发 WebSphere Application Server Communication Enabled Application (CEA) 小部件
publish-date=07052012