Web Services Experience Language

2002-8-26 15:00:12【作者】 AMTeam.org 【进入论坛】
广告

Web Services Experience Language



Angel Diaz(
aldiaz@us.ibm.com),IBM Research

John Lucassen(
lucassen@us.ibm.com),Emerging Technologies,Application and Integration Middleware Division

Charles F Wiecha(
wiecha@us.ibm.com),IBM Research

2001 年 10 月

WSXL(Web Services Experience Language)是交互式 Web 应用程序的组件模型,它是以 Web 服务为中心的。WSXL 的设计是为了达到两个主要目标:使企业能通过多种获利渠道分发 Web 应用程序,并可以通过利用 Web 上现有的应用程序创建新的服务或应用程序。

为了达到这些目标,WSXL 组件可以用三个基本的 Web 数据、表示和控制类型构成,其中最后一个使用基于 XLink 和 XML Events 的声明式语言与其它的内容“交织起来”。WSXL 还引入了一种新的描述语言以使服务与新的分发渠道相适应。WSXL 建立在广泛接受的已确立的但却是新兴的开放式标准之上,其设计要达到独立于执行平台、浏览器和表示标记的目的。

可以通过多种部署渠道把使用 WSXL 开发的交互式 Web 应用程序发送给最终用户:直接发送到浏览器、通过门户网站间接发送或者通过把其嵌入第三方 Web 应用程序。可以通过无缝结合 WSXL 应用程序并使之适合于新用户来创建新的 Web 应用程序。WSXL 应用程序通过简单的声明方式易于修改、调整、聚集、协调、同步或集成以最终利用世界范围内的 WSXL 组件调色板。

1 介绍

1.1 商业环境

在当今商业环境下,公司面对的大量的无情的市场压力不断增加。要成功,他们需要将支持其业务过程的应用程序快速经济的上市。他们需要把他们的业务过程分解成为核心的功能,以便能够发布各种广泛的不断成熟的服务并改变这些服务以响应不断变化的市场情况。他们需要利用种类越来越多的在线分发模型 - 包括直接和多分发渠道以得到多样的顾客。

随着企业试图确保其因特网投资能导致收入增加,他们经常设法优化多个分发渠道范围内的投资。例如,在 Web 上销售“旅行支票”(Traveler Check)的公司通过使用多种业务伙伴分发渠道将会使其 Web 应用程序(因而也就是他们的产品)在一系列范围更广的潜在顾客面前更多的出现。这样做,应用程序供应商也许需要修改或放弃对,如果不是全部的话,一些分发者的品牌关系及导航控制。经济的建立这样的再分配关系并以一种可以灵活适应使用不同业务模型的多个业务伙伴的需要的方式来维护它,这是技术上的难题。

通过扩展分发渠道的多样性经济的增加销售的难题并不限于物质产品和服务的生产者:信息或虚拟产品和服务的生产者面临着许多同样的问题。例如,许多“独立软件供应商”(Independent Software Vendors(ISV))正通过利用使用费的 Web 服务方式设法增加其现有压缩薄膜包装的软件的销售。这样的方式要求包括 B2B 和 B2C 在内的许多不同的应用程序可以重用同一代码。

以金融可视化软件供应商为例。为了给多种新的收入机会提供支持,供应商可能需要支持来自客户的直接访问(B2C)、增值分销商的再分发以及业务伙伴的 OEM。如果单独考虑这些方式,它们每一种在目前显然是可行的。然而,供应商评估分发渠道扩展时主要权衡的关键因素就是上市时间与进入成本。对于软件分发者和供应商来说,允许以一种开发与支持要求最小化的通用格式来表达软件的技术是关键的商业启动因素。倘若该技术灵活并简单易用,则这样的技术既可以缩短上市时间又可以节约进入成本,从而 ISV 得到大量新机遇而分发者和最终顾客将大大节约成本并从上市时间上获得较大收益。

最后,正如我们在 WSXL 目标中所说,企业也希望能够通过创建新的应用程序资产经济的利用现有的本地与远程组件来创造新产品和服务收入流。这些新的应用程序给传统行业与网络时代的公司都带来了机遇。以考虑希望成为“旅行支票”的增值分销商的银行的情况为例。银行设法控制同客户之间的关系并希望为其客户群体提供独一无二的和专门的功能,同时使其能最大程度的发挥逐日浮动对货币资产的杠杆作用的能力。既然使用信用卡支付工具通常使“旅行支票”应用程序在 Web 上可用,那么如果银行可以修改服务,允许在成员帐户中借记支付又会怎样呢?在“旅行支票”供应商的角度看来,这会提供一种额外的分发渠道。在银行的角度看来,这样的解决方案将会为客户提供一站式服务的便利,还会允许银行增加延期交易的利息 - 比如,使用现有的机构支付工具,如 ACH。

1.21.2 动态 Web 应用程序需求

企业需要新的方式开发并交付应用程序以协助降低开发交互式 Web 应用程序、把它们交付给用户以及在应用程序生命周期内根据由新的业务模型施加的不断变化的需求对应用程序进行调整的成本。

这些新方式必须使企业能:

获得有效的用户体验,其特点是极具吸引力、高效、在每个交付渠道内正确的印上商标。

维护业务灵活性 — 尤其是能快速添加新的分发伙伴以及应用程序内容供应商及联合(和伙伴合作)和单独(即,不依赖于伙伴)更改与更新应用程序的灵活性。

利用现有的技巧和基础设施。

而且,新方式需支持:

方便更改:实现新而且快速发展的商业模型,如交叉销售、合作提供以及外包。

方便调整:通过新渠道传递应用程序,如门户网站或第三方 Web 站点。

方便聚集:把几个应用程序组成单个的用户体验,如门户网站。

方便集成:通过紧密集成几个 Web 应用程序的元素来创建新的表示。

1.3 WSXL 以及现有技术

目前,种种不同的产品概念、体系及技术可以处理前面一节所描述的企业问题。WSXL 可以作为桥梁把这些不同种类的应用程序开发与部署机制统一起来。尤其是把 WSXL 设计成能:

促进类似于门户网站的产品间的互操作。

促进辛迪加式应用程序之间的互操作性。

独立于标记,且主要是方便应用程序更改、调整、聚集以及集成。

1.3.1 基于直接 Web 服务的应用程序

直接 Web 应用程序把最终用户直接同 Web 经历供应商相连接的应用程序,而且在现在的 Web 中是最普遍的情形。迄今为止,已有许多组织利用一般的可用技术,如 Java Server Page 和 Servlet 创建了直接应用程序。WSXL 通过利用功能强大的设计模式,如 XFORMS,扩展这些熟悉的技术,并结合迅速出现的 Web 服务体系结构支持直接应用程序开发达到方便更改、调整和集成的目的。

1.3.2 门户网站中间件产品

门户网站中间件产品使交互式 Web 应用程序可以被聚集成单次用户体验,还可以提供诸如单次登录、个性化之类额外功能。门户中间件产品典型情况下支持“肩并肩”表示:屏幕上被聚集的每个应用程序都指定了自己的矩形区域。在用户的角度看来,许多任务要求使用不只一个应用程序。但多数门户网站聚集者通过把一些现有的用户体验的相关部分紧密的集成在一起,从而创建新的用户体验增值的能力非常有限。而且,每个门户网站都有自己的特别组件接口,这使应用程序同门户网站之间的互操作几乎不可能。WSXL 的设计要达到促进门户网站间的互操作,为门户网站提供增长路径的目的,为此,还设计了为从简单的“肩并肩”表示到“应用程序的紧密集成”与“层叠门户网站”范围内的不同聚集模型提供支持。

1.3.3 应用程序辛迪加产品

应用程序辛迪加产品使交互式 Web 应用程序能为通过不同的交付渠道部署而进行调整。 典型情况下,应用程序辛迪加产品支持应用程序的“外观及感觉”的调整以满足分发渠道的加商标的要求, 并把应用程序直接传递给浏览器。同门户网站中间件产品一样,典型情况下,应用程序辛迪加产品只对“肩并肩”表示提供支持。尽管该模式具有简洁的优点,但它却使供应商和聚集者无法充分利用由于组合它们的应用程序以及集成它们的业务模型而获得的潜在的共同作用。比如,聚集者的应用程序常不知道发送给用户的页面内容,而且典型情况下也不能改变这一内容或其行为。而且,为辛迪加打包的应用程序典型情况下同任何门户网站组件模型不可互操作,这使得必须对为辛迪加设计的应用程序进行不必要的再次开发,虽然有多种渠道。设计 WSXL 是为了促进辛迪加式应用程序同门户网站之间的互操作,从而降低创建新的业务关系的成本,以及使调整某一特定传送渠道的应用程序变得容易,从而使聚集者能使其分发的应用程序增值。

总结 - WSXL 旨在提供互操作性标准为门户网站、辛迪加及 Web 服务中间件创建和扩展新的商机。作为应用程序服务器的标准组件或现有的中间件产品的标准扩展,WSXL 运行时(WSXL Runtime)将协助启用应用程序组件和 Web 表示服务的新市场。

1.4 “Web 服务体验语言”示例

在随后的示例中,我们将演示如何把 WSXL 用于使 Web 应用程序辛迪加和重用变得容易。在企业的角度看来,这些方案着重于两个因 Web 应用程序标准组件模型才使其成为可能的新商机。

1.4.1 辛迪加式购买“旅行支票”

对于辛迪加的情况,WSXL 可以协助使供应商能够使用现有的软件资产扩展其分发渠道。如图 1 中所述,供应商可以描述包装现有的后端功能的 WSXL 应用程序。然后如果想的话,就可以对应用程序进行调整,并把其用于为直接客户访问服务或嵌在由业务伙伴重新分配的远程应用程序中。在后者的情况下,分发者能通过在需要的时候调整应用程序的外观、感觉、内容、流及功能,从而使其客户群体对应用程序建立起品牌为中心的观念。除为表示的目的用 WSXL 实现应用程序辛迪加之外,供应商的应用程序还可以直接控制由浏览器上的交互引发的事件。与目前可用的许多可选方式不同,本方案中使用 WSXL 使供应商能在进入成本同上市时间之间做出平衡的决定。对广泛采用的开放式规范的依赖将使供应商不会开发(或购买)以及维护那些其多样性比不上 WSXL 应用程序的用法模型的解决方案。

图 1:辛迪加式购买“旅行支票”


1.4.2 分布式可视化服务(远程门户)

同样地,金融图表实用程序服务的供应商利用我们在图 2 中所述方案启用这些服务的重新分配。在这种情况下,门户网站公司可以利用有商标的数据输入格式来增加实用程序服务。这一方式将能以较低的进入成本快速增长门户网站服务目录。

图 2:分布式可视化服务(远程门户)


1.4.3 分布式可视化服务(本地门户)

建立在前面的方案的基础之上,图 3 演示门户网站供应商也可以 OEM 他们的门户产品,该产品含对金融图表工具的访问。在这种情况下,应用程序供应链中的两级分发者可以从同一软件服务端点中获得收益。首先我们有门户网站产品供应商,他也可以是增值销售中介公司安装的产品的分销商。这种供应商在其产品功能目录中合并了访问金融图表工具的功能。通过同服务供应商达成收入分摊的协议,门户网站供应商可以获取对产品销售的收入,也可以对每次交易提成。相反的,中介公司也能从为那些不存在业务往来提供远程服务能力中受益。此外,对于任何 ASP 模型中介公司还可以向客户收取远程服务访问费。在任一情况下,中介公司和门户网站供应商都能针对市场需要把现有的远程服务访问重新分配来处理时间。

图 3:分布式可视化服务(本地门户)


1.4.4 “旅行支票”增值分销

我们的最后一个方案在图 4 中说明,提出使用 WSXL 如何来创建新的收入生成应用。在这种情况下,应用程序域表示售出“旅行支票”。但是,由于银行通过新的支付工具,具体是记入借方,试图增加其业务伙伴(“旅行支票供应商”(Traveler Cheque Supplier))现有的应用资产,所以银行在这种情况下是增值的分销商。为了达到这一目标,银行得通过把其业务伙伴的远程应用同本地可用的一个处理银行会员帐户的借方交易的应用集成在一起创建一个含银行独有的表示层的新应用。通过利用用于 B2B 和 A2A 集成的 Web 服务(SOAP、WSDL),WSXL 提供了一种声明式语言,这种语言允许服务接口集合可被归组成可重用组件,这些组件生成工作的离散单元。现在,我们可以公正的假定要使这一方案确实起作用,“旅行支票供应商”将不得不提供考虑到支票购买是被带外(out of band)捕获并结算的新的服务操作。然而, WSXL 提供了一种使之成为可能的技术来以一种及时的和成本高效的方式来达到业务目标。

图 4:“旅行支票”增值分销


1.5 Web 应用标准创立

旨在给下一代的 Web 应用程序及相应的商业模型提供便利的标准倡议必须满足几个成员的需要:Web 应用程序运行时供应商、Web 应用程序开发人员、工具供应商、IT专业人土、商业专业人土以及终端用户。所有这些成员都要求 Web 应用程序模型能:

方便不同传递渠道间的互操作。特别的,应用程序一定不能利用特殊的运行时模型,但必须易于实现通过不同渠道传递的部署。

支持对 Web 应用程序的调整。基于 Web 应用程序的标准必须易于为辛迪加或其它的定制“加上商标”。

允许无需或最少量的编程把 Web 应用程序集成为更大的用户体验。

为 Web 应用程序之间紧密而又完全的可定制集成作准备从而得到无缝的用户体验。

易于更改或修改。例如,商业专业人士必须能迅速部署及测试新的商业模型。

自然,必须通过重用现有的事实工业标准达到这些目标。特别的,任一 Web 应用程序标准的基础都必须由基于 XML 的标准,如 XPath、XML Event、DOM、XForms 和 XLink 以及 Web Service 标准,如 SOAP、WSDL 和 WSFL 构成。我们认为基于 Web 服务的 Web 应用程序功能和声明规范的结合将确保广泛成员范围的广泛认可。

2 WSXL

WSXL 采用的为满足上述要求的这个方式是为了允许 Web 应用导出一个或多个组件接口,这些接口在允许应用发展的同时公开足够的信息以启用适应调整、聚集和集成。WSXL 还使开发者能利用独立的表示、数据与控制组件构建应用程序;这有助于开发者把那些如果混杂在更多的庞大对象中将会使集成以便在多个渠道内重新使用更加困难的设计问题分离出来。为了确保适合现有的基于 Web 的应用结构,WSXL 服务生成可以被传统浏览器和设备通过现有的格式和协议所使用的标记。把更广阔的用户、渠道和任务市场作为目标要求有比目前 Web 应用程序所支持的多得多的变异。WSXL 通过启用多种多样组件的应用集合从而降低产生同一应用程序多种变异的成本。这还允许应用程序及其组件简单的开始并以企业驱动的方式来优化。

2.1 WSXL 框架介绍

本节介绍 Web 应用程序的 WSXL 组件框架(基于众所周知的模型-视图-控制器体系)并把它同现有的标准,如 XFORMS 和 XLINK 相联系。我们还举一个如何重用数据、表示和控制组件以通过集成产生新的 Web 应用程序而无需从头开始编程的简单示例。下面几节描述数据、表示、控制及其容器提供的接口,并详细介绍如何实现上面的方案。

WSXL 应用程序由一个或多个数据及表示组件,以及一个把组件绑定在一起并指定其相互关联的行为的控制器组件构成。

WSXL 基本组件具有生命周期管理、事件处理及生成输出标记的接口。生命周期操作可用于显式创建与破坏 WSXL 基本组件的实例。WSXL 基本组件可以定义它可能引发的 XML 事件,也可以定义它可以响应的 XML 事件。WSXL 基本组件可以应请求以一种或多种目标 XML 语言生成输出标记。“调整描述”(Adaptation Description)可能会牵涉到 WSXL 基本组件,它描述如何根据新的渠道调整组件生成的标记。

WSXL 数据组件这一组件是对基本组件的扩展,封装了 DOM 可访问的实例数据以及任意有关的模型定义的表示。WSXL 数据组件基于 W3C XFORMS(请参阅 http://www.w3c.org/tr/xforms)的模型与实例功能。可以使用 WSXL 控制组件把数据组件绑定到表示组件。此外,还可以把数据组件连接到 WSXL 应用程序外部的数据源,但这是超出 WSXL 范围的实现细节。

WSXL 表示组件这一组件是对基本组件的扩展,封装 DOM 可访问的在用户界面“页面”内的元素的表示。虽然表示组件所用的元素的名称空间不是由 WSXL 规定的,但是通常有用的“小控件”的集合 是可用的,如 XFORMS UI 草案中所定义的。可以使用 WSXL 控制组件把 WSXL 表示组件绑定到数据组件,而且必须引发并响应由该组件定义以更新并复位相关数据值及更新表示的事件。

WSXL 控制组件是对基本组件的扩展,管理实例化数据与表示组件之间微控制以把它们绑定在一起。这决定了在对每个方向进行更新的过程中何时调用事件处理程序来解析并再次格式化数据值。WSXL 控制组件阅读以基于 XLINK 的可扩展控制语言规范撰写的声明来建立要求的 arc 并实现开始、排序和更新的处理模型来同步表示和数据状态。控制组件的另一功能是管理涉及在用户从头至尾使用应用程序时对全新数据和表示组件的实例化的宏控制。这方面的控制可以通过状态机标记法或使用可扩展的工作流语言接口的工作流语言来指定。

把 Web 应用分解成独立的数据、表示和控制组件的目的是为了给这些组件重新装配多个替代版本的组件提供便利以满足如上面的介绍要求一节中所扼要叙述的分离渠道、用户和任务的要求。因此,WSXL 将提供 Web 开发者利用由独立的供应者单独提供的数据、表示和控制来装配应用程序的能力支持。

把整体设计分解成一个基本组件和该基本组件的扩展的主要原因是要方便WSXL 与 Web 服务的其它中心表示组件模型之间的合并。

WSXL 接口可以使用“Web 服务描述语言”(Web Service Description Language(WSDL))来描述。WSDL 考虑到了组件接口内的类型、消息及操作的定义应不依赖于语言。WSDL 把这些接口特性(服务的 portType)同 portType 和特殊的传送机制的绑定分离开来。许多 Web 服务是使用 SOAP 消息通过网络远程访问的。在其它一些情况下,可以本地执行组件而且它使用性能更高级的“传送”,如直接方法调用。 我们旨在使对本文档中的 WSDL 定义的与是远程访问还是本地访问所描述的 WSXL 组件无关的被解释。

可以使用本文档中所描述的“调整描述语言”(Adaptation Description Language)来表达 WXSL“调整描述”。我们把“调整描述语言”从“Web 服务描述语言”中分离出来的目的是为了允许组件接口同某个“调整描述”选择关联。

2.2 组件描述

本节我们描述由 WSXL 基本组件提供的接口。接着,我们将展示三类特别组件(数据、表示及控制)是如何由基本组件接口派生而来的。在后面一节中,我们将讨论如何利用组件组来构建应用程序。WSXL 容器(Container)可用于管理一组组件。通过进一步实现组的 WSXL 组件(Component)接口,其变得可以作为一级组件本身重用。

2.2.1 基本组件

概要


WSXL 中的基本组件指定了对所有 WSXL 组件都通用的接口:生命周期管理、事件处理、输出标记的生成,还有描述如何根据新的渠道调整组件生成的标记的概念“调整描述”。包括数据、表示和控制在内的其它 WSXL 组件实现这些基接口以及其功能要求的特别接口。

基本组件接口

WSXL 基本组件(WSXL Base Component)特定的接口类别如图 5 中所示,其内容包括:

生命周期:组件的生命周期接口提供可以由实现其生命周期的容器调用的操作。虽然一般情况下,可能会要求有多个生命周期 — 以支持依容器管理的组件类型不同而提出的不同要求,但最初 WSXL 生命周期操作将包括那些创建及销毁组件实例的操作。

事件:WSXL 组件必须实现 DOM Level 2 EventTarget 接口。XML 事件规范将用于描述事件侦听器。

OutputMarkup:生成输出标记,典型情况下是在更新/刷新周期的结束。返回实例数据文档的 XML 表达。

图 5:WSXL 基本组件和接口


当然不要求公共接口中定义的数据、表示和控制结构同组件的实现在内部支持的数据、表示和控制结构相同。在许多情况下,如果现有的实现是由 WSXL 兼容组件包装的,组件开发者将采用非 DOM 的实现。

一般情况下,组件可能只对外公开一部分设计 — 通过使用接口规范,此接口规范反映旨在受控的扩展或集成而非全部底层的实现的受限的组件结构和行为。

2.2.2 数据组件

概要


除上述 WSXL 基本组件接口外,WSXL 数据组件还实现用于描述和维护 WSXL 应用程序中可由 DOM 访问的数据实例的接口。WSXL 数据组件基于 XFORMS 的数据功能并包括 XFORMS 模型与实例功能。

数据组件接口

WSXL 数据组件接口的其它类别如图 6 中所示,其内容包括:

访问(Access):WSXL 数据组件用 DOM Level 2 接口的一个子集描述了它希望公开的结构。WSXL 要求 DOM Level 2 的特定操作还未确定。组件至少必须支持对其 DOM 的读写。

更新控制(UpdateControl):用于标识更新组的开头与结尾。由容器决定是否使用该接口。缺省行为是同每一次更新同步引发更改通知事件。
确认(Validation):用于触发对数据实例及其模型间的类型约束的评估。

再次计算(Recompute):用于触发对数据在别处更新引起的副作用进行评估。结果是调用数据组件内部实现中的任何处理程序,也就是说,不会把其当作外部控制链接(参见下面的控制组件)的评估结果来进行评估的处理程序。

数据可用性(DataAvailability):用于标志组件实例数据的可用性。虽然组件同外部数据的连接方式本身没有标准化,但与该数据连接有关的状态,比如断开连接,可以是请求数据、不完全数据和可用数据。

图 6:WSXL 数据组件与接口


WSXL 容器定义一个处理模型对受其管理的组件应用执行更新并管理刷新对容器中其它同 WSXL 控制组件绑定在一起的组件的更新所需步骤。使用控制组件定义实现容器内组件的更新的特定的事件处理程序。

我们如何实现与错误、输入、缺省以及有效这样的数据的关联呢?这如何同 XML 处理模型而不仅仅是 XFORMS 处理模型连接 — 这如何同 WSFL 连接?

同在同一 WSXL 容器内与之关联的数据组件分在一组的 WSXL 控制组件上或把数据直接链接到表示的控制组件上是否应有 XFORMS 元数据以及相关的和必须的属性,这是一个开放式的议题。我们宁可把独立的控制组件同数据链接,是因为如果我们给把表示同模型链接的 arc 添加模型约束,我们将不得不把这些约束复制到每个我们要把其同数据绑定的表示组件。

组件开端集 — Web 服务的简单包装器,允许声明创建 WSXL 数据组件;聚集数据组件的简单容器。工具会以可视编辑器中的拖动/放开隐喻公开。

2.2.3 表示组件

概要


除上述 WSXL 基本组件接口外,WSXL 表示组件还实现用于描述和维护 WSXL 应用程序中可由 DOM 访问的表示实例的接口。WSXL 表示组件基于 XFORMS 中的 UI 规范,且包括 XFORMS 表示实例及模板功能。

WSXL 表示不指定任何特殊的小控件集。WSXL 表示组件可以由任意名称空间中的元素组成,还可以生成以任何目标 XML 语言表示的类似的输出标记。WSXL 的一个目标是成为基本设施支持可能在业界出现的特殊的 XML 用户界面小控件集,包 括 XFORMS、XUL、UIML 等中的那些。

表示组件接口

除基本组件接口之外,WSXL 表示组件接口的额外分类如图 7 中所示,其内容包括:

访问(Access):WSXL 表示组件用 DOM Level 2 接口的一个子集描述了它希望公开的结构。WSXL 要求 DOM Level 2 的特定操作还未确定。组件至少必须支持读写 DOM 上的属性。

交互(Interaction):用于表明最终用户同表示组件中的元素交互的状态,如聚焦、选择、激活、执行、隐藏/公开。利用及扩展 DOM Level 2 事件模型中抽象的 UI 事件。物理事件,如鼠标,对于服务端组件重要性可能要差一点。 要求有键盘事件。

图 7:WSXL 表示组件与接口


2.2.4 控制组件

概要


如图 8 中所示,WSXL 控制组件是基于 WSXL 的组件,比如数据与表示组件的扩展。除基 WSXL 组件接口之外,WSXL 控制组件实现一些接口用于管理绑定数据组件到表示组件的 arc,解析并解释下面描述的基于 XLINK 的控制语言规范以及实现控制事件通知在数据和表示之间双向传播的处理模型。

图 8:WSXL 控制组件与接口


基本控制模型在图 9 中说明。或者对其 arc 管理接口调用作出响应,或者间接通过解析并解释控制语言规范,控制组件可以在数据与表示之间建立 arc。每个 arc 都包括一个对象,它是一个侦听器,侦听数据组件上的一个给定元素及表示组件上的另一个元素。数据和表示组件相互之间并不直接连接。控制组件建立 arc 并在运行时维护自身以管理每个方向上的事件通知的排序与定时。

图 9:绑定于 WSXL 数据和表示组件的 WSXL 控制组件


事件处理程序可以同 arc 相关联提供通过响应事件通知触发的控制逻辑。该中间组件,或“微观级”控制逻辑可以(1)修改数据和/或表示组件的值或结构;(2)调用外部服务;(3)同全局组件或“宏观级”控制交互以触发应用程序中后续步骤需要的对额外的 WSXL 组件的初始化。

注意到微观控制逻辑和宏观控制逻辑都是由在单一类别的 WSXL 控制组件建立并管理的 arc 上引发的事件触发,这是重要的。它们之间的区别恰恰类似于事件处理程序使 arc 产生的变化。事件处理程序在已经实例化并绑定的数据和表示组件内进行更改,它牵涉到的只有微控制逻辑。对新 WSXL 数据和表示组件进行实例化及绑定或销毁现有的 WSXL 数据和表示组件并返回到应用程序开始的步骤的那些事件处理程序牵涉到宏控制逻辑。我们期待宏逻辑在通常情况下可以通过使用由 WSXL 控制组件上的事件处理程序调用的流语言(如WSFL)规范来实现。

控制组件接口

除基本组件接口之外,WSXL 控制组件接口的额外类别如图 8 所示,其内容包括:

arc 定义与管理:用于通过提供源和目的服务实例、这些实例内的 XPATH 定位器以及与 arc 有关的事件处理程序来创建新的 arc。该接口支持对 arc 进行枚举、更改、删除与创建动作的操作。该接口可以被直接调用,或通过下面描述的控制规范语言。相关的 arc 的标准包括 XFORMS、XLINK 及 XML 事件。

控制规范解析:用于解析基于 XLINK 的控制规范文件和使用上面的接口创建 arc。该接口支持以声明方式定义控制组件行为,无需直接驱动底层编程接口。

更新处理模型:用于维护“脏”链接列表、排序更新与更新组列表、根据绑定语言设定的策略应用更新(sync,async)以及启动 arc 上的事件处理程序。

对多处理模型有哪些要求呢?portlet、XFORMS、批处理还是多态?一般情况下,应用程序作者是会定义新的处理模型呢?还是对此进行修正呢?也许为了实现又懒又贪的刷新?

XFORMS 的确指定了 sync 应当何时发生,还定义了允许的最长延迟时间。检查点。

更新组要求控制组件功能呢?还是用数据或表示组件就可以实现更新组呢?更新组确实更符合上面的 UpdateControl 概念。因此要求 Control 组件内有一个 API 以支持批更新。

控制规范可绑定到许多不同的操作语言:Java、Javascript、XML vocabulary like WSUI。

2.3 可扩展的微控制语言

控制组件支持一种声明方式把类型数据或表示组件绑定在一起。已经标准化的语法在其表达非常必要的概念的过程中得到了扩展,即:1)XLink 语法提供了一种方法,指定“locator”给存在于相同或不同的组件中的端点命名,而且指定“arc”来表达一对定位器之间的连接以及遍历 arc 的语义(尽管遍历语义需要扩展,超出导航的语义);2)“XML 事件语法”(XML Event syntax)提供了一种方法指定操作、其类型、事件、事件源及应当在事件处理过程中哪一阶段触发该动作。下面的小示例演示上述内容是如何结合的:

假定 www.examples.com/presentation.html 内包括如下内容:


First name

Last name

Employee #

假定下面的内容是 www.examples.com/data.xml 里的根元素的一个子元素:







那么一个“微控制”绑定声明的示例可以是:

“微控制”绑定声明

http://www.w3.org/2001/xml-events"
xmlns:xlink="
http://www.w3.org/1999/xlink"
xlink:type="extended"
xlink:title="Example binder link specification">


xlink:href="
http://www.examples.com/presentation.html"
xlink:label="Presentation Root"/>


xlink:href="parent://Presentation Root#//form[@id='Employee']"
xlink:label="Employee Form"/>

xlink:href="http://www.examples.com/data.xml"
xlink:label="Data Root"/>

xlink:href="parent://Data Root#/Employee"
xlink:label="Employee Data"/>


xlink:from="Employee Data#Name/First"
xlink:to="Employee Form#.//input[@id='firstname']/@value"/>

xlink:from="Employee Data#Name/Last"
xlink:to="Employee Form#.//input[@id='lastname']/@value"/>

xlink:from="Employee Data#SerialNumber"
xlink:to="Employee Form#.//input[@id='employeeNum']/@value">


ev:observer="xlink:to"
ev.handler=http://testit#VerifySerialNumber
handlertype="WebService"/>

这些声明从两个定位器开始,每个定位器通过其 xlink:href 属性引用一个 URL。微控制组件(Micro Control Component) 将让使其实例化的容器来解析这些 URL。如果容器还没能把它们实例化,容器将会把被引用的组件拿来并本地把它(或其代理)实例化。然后本地实例句柄将会被返回到微控制组件。

另外还有两个定位器通过这两个根级别定位器的相对路径来声明。微控制组件将会查询父定位器引用的组件以解析提供的查询串(在本例中是一个 XPath)。

arc 声明的处理过程将利用 DOM Level 2 Event API 在被引用的组件同控制器之间建立侦听器关系。缺省事件类型为 DOMCharacterDataModified,它有一个缺省动作使 arc 端点的值相等。正如可以在最后一个 arc 定义中看到的,事件和处理程序都可以使用 XML 事件语法来声明。为了说明哪个端点是处理的事件的起点需要进行扩展(示例用 presentation.html 中的 id=' employeeNum' 指定输入域)。这些处理程序可以通过返回一个新值在遍历 arc 的过程中格式化数据,返回一个空值将会异常中止遍历,以及想要的任何副作用(如,触发“宏流”(Macro Flow)内组件之间的过渡)。

2.4 WSXL 容器

概要


WSXL 容器为 WSXL 组件提供一个执行和管理的环境。它调用 WSXL 组件的生命周期方法,并实现一组接口和处理模型以供容器外部的 WSXL 组件及对象使用。实现 WSXL 容器接口的对象不一定是 WSXL 组件。

接口

WSXL 容器定义了两类接口:必须的和可选的。要求容器提供接口对其实现的可选型接口进行查询。容器接口可以分为以下几类:

托管:(必须的)容器必须提供一种途径指定需要实例化的组件。容器初始化组件并调用初始化/生命周期合约中的组件操作。这一定义同组件生命周期的定义互相影响。

管理:(可选的)一旦容器初始化组件以后,容器就可以提供接口允许组件协商资源分配。空间可以是资源之一。容器反过来确定何时除去组件并释放其资源。

环境与上下文服务:(可选的)这一类别处理组件如何查明环境的详细情况。该环境包含 a)实例化组件使用的特定配置和部署平台的细节;b)执行组件使用的特定的会话/上下文细节及对象。后面一条包括处理个性化(设备信息和用户简档)等内容的 API。

事件服务:(可选的)容器可能支持 API 处理事件注册、派发、传播与处理。支持这些 API 允许组件注册事件兴趣和处理程序,而不必知道可以生成该事件的所有组件的存在。该接口还通过把事件服务作为代理程序控制事件派发与传播提供事件发生器和事件侦听器之间的去耦。实现组更新的任务变得更加容易了。这还考虑到提供多选模型和不同的模糊策略的实现。这些功能中有一些可能会影响基本组件 API。

组件发现与调用:(可选的)容器可以提供一个 API,在其中基于一些组件接口属性可以在运行时找到组件实现或实例(本地或远程)。然后托管 API 或者可以用于使组件本地实例化,或者组件可以直接调用组件实例。

容器功能发现:(必须的)要保持容器接口较小而且允许功能的模块化和递增的发展,容器必须提供一个容器发现 API 以使组件能够发现可用的服务。上面所有可选的接口都是待发现元素。此外,增值服务可以递增提供,如持久性服务。请注意可选型接口仍需标准化。WSXL 组件在运行时利用该容器 API 获得并使用服务的句柄。

最小化容器接口需求使容器编写者的工作变得容易了。可这样是不是会加大 WSXL 组件作者的工作难度呢?我们应当做出怎样的折中呢?
在有关的情况下,我们应该进一步划分这些类别来得到更多必须和可选类别吗?

给定容器的定义,则一个应用程序就是一个容器。Wrt Roland 的评论,我们需要确定何处进行哪一级的讨论。从流的角度看来,Rich 和我认为这只是容器描述之下的另一小部分。

相关标准

新开始的 XML 插件工作组。

概念输入的其它标准/惯例,其中有一些不属于标记域,为 HTML 行为、netscape 插件 API、EJB 容器、Java AWT。

2.5 用 WSXL 组件创建应用程序

给定 WSXL 组件和容器定义,该如何根据这些对象编写 Web 应用程序呢?用 WSXL 组件构建的最简单的 Web 应用程序是一个基本组件,反过来,又可以以包括利用其它的 WSXL 组件在内的任何希望的方式实现该基本组件。此外,应用程序也许是可以一个 WSXL 容器,它有一个或多个 WSXL 组件,例如,一个或多个有绑定和事件处理程序的表示、数据和控制组件。应用程序可以被聚集在 WSXL 容器内部。希望进一步成为 WSXL 组件本身的应用程序,即可重用类型,还需要实现 WSXL 组件接口,从而变成一个可进行实例化及扩展的有效的 WSXL 组件。

2.5.1 可重用的组件分组

我们希望通过使数据、表示和控制分组只能实现 WSXL 容器接口来简化应用程序实例的创建,也就是说,通过不要求支持代码重用使得非程序员实现代码变得简单。通过进一步允许分组实现 WSXL 组件接口,我们提供了一个简单的组合框架创建更大单位的应用程序。

上节描述的实现 WSXL 容器的对象可以进一步实现 WSXL 组件接口从而允许分组同其它 WSXL 组件一起重用。图 10 展示这种聚合 WSXL 组件所公开的接口。在嵌套的数据、表示、控制接口(蓝色)以及在分组中重现的应用程序特定的接口(黄色)之外,该接口还包括以红色表示的 WSXL Base 接口(生命周期、访问及事件),这适用于所有的 WSXL Component。

图 10:WSXL 数据、表示及控制组件的组合构成的 WSXL 聚集组件


请注意在讨论过程中,即使我们以单数形式使用术语数据与表示,并且在图中用单个图标来表示,但一般情况下数据或者表示都是由多个实例片断构成 — 控制器支持对数据或表示端任意数目片断的引用。

可以实例化组件,然后把这些实例组装起来创建新的集合。象前面的数据/表示示例的这种集合的创建可以使用不同类型的实例,或使用同类型的实例,例如,聚集多个数据实例。例如,使用 WSXL 控制组件使两个数据组件被聚集生成一个聚集的数据组件。这种集合的创建程序反过来可以实现组件接口使这个新集合能在另一个组合中用作原子数据组件,如上面图 10 中的组合。

2.5.2 组件多态协调

多个表示组件可以同控制组件分在一组以支持多个激活的表示之间的同步 — 不管是在相同还是在不同的设备上。表示组件也可以被聚集起来以便从中选择而不必使其功能同步。在这种情况下,控制组件除作为联合器外,还可以作为选择器。例如,一组表示组件可以同一个控制组件分在一组,该控制组件可确定表示组件中哪个是激活的框架。从外部看来,组起作用的方式就象一个可以和数据及控制组件绑定的表示组件,就象上面图 10 中所示的一样。

2.5.3 组件间控制流

本文档的前面几节主要描述不同类型的 WSXL 组件(如数据、表示和控制)接口。还就托管这些组件并为其提供服务对容器进行了讨论。为实现单个功能而组合数据、表示和控制的容器并不严格的类似于“页面”。即使单个页面应用程序也许并不特别有用,但这些页面级容器中的一个可以作为一个单独的应用程序执行。然而,如果一个页面级容器还实现组件接口,那么可以把它组成一个容器。事实上,可以把这些页面级容器/组件中的几个分成一组组成一个容器。这样的容器作为应用程序要有趣的多,因为它有不止一个“页面”。

容器如何定义并执行其行为?这是关于这一点需要回答的一个有趣的问题。两个或多个组件间的导航是如何定义的?WSXL 体系定义宏控制组件(Macro Control Component)来担当此责。WSXL 没有特别提供一种语言描述宏控制,而是利用一种允许多种实现的可插入体系。在容器内实现宏控制的一些示例有:

以希望的顺序初始化并执行组件的程序上的代码,如 Java。

规则引擎。

WSFL 流引擎。

状态机。

容器借助所选择的策略可以向外发布其行为。例如,容器可以依据 WSFL 流模型发布其行为。这样开发期间和运行时都允许查询。在宏流上的开发期间查询作为一种文档形式可以对开发协作应用程序的程序员有所禆益。运行时查询宏流也许对确定允许的后续步骤有所禆益。而且,支持外部定义的“宏”控制流的体系使应用程序可以灵活适应不断变化的要求。

WSFL 为了完成特别任务而想要发布并精心安排 Web 服务之间的交互,而我们则对流模型的定义特别感兴趣。流模型是一个有向无回图,描述业务过程。业务过程可以由数据链接和控制链接连接的动作来描述。这些链接把动作连接在一起,由此定义其执行次序。控制链接的条件表达式用于实现图中操作之间的条件分支。关于流模型的另外还有一点也有趣,它们可以递归合成。因此,一个流模型可以把另一个流模型作为子动作调用。这使得可以对应用程序进行有效的分解以促进重用。

在 WSFL 流模型中,一个动作表示 Web 服务上的一步操作。如果我们确定动作映射到启动并执行组件的操作,则 WSFL 流模型可用于宏控制组件。因此,流模型不但可以用于描述容器内组件次序,而且可以描述其间的条件分支。虽然 WSFL 想要精心安排 Web 服务,但因为每个组件都有一个定义严密的 WSDL 生命周期接口,所以这一点非常适合 WSXL 。从而,流模型上定义的动作可以调用开始该组件操作。在组件执行过程中,微控制组件通过其事件处理程序确定组件的完成状态。流模型对组件(动作)的完成状态进行评估以确定是重复该动作还是断续执行流中的下一动作。

2.6 调整描述语言

关于应用程序辛迪加的问题之一是组件供应商希望对如何访问、修改或覆盖组件提供的标记和操作有发言权。这种需要也许是为了保护品牌、保留某种美学设计的约束或者出于正确性的理由。从而“一致的”客户/聚集者可以使用这一信息可靠的调整组件输出以及在供应商制定的约束范围内拦截组件的用户输入。为了给这种调整提供基础设施的支持,我们提出了一种面向机器的方式来指定该调整信息,即不是使用日常英语或俚语。

为此,WSXL 包括了一种可扩展的“调整描述语言”,可以指定“调整点”(adaptation point)的明确位置、允许对“调整点”执行的操作(例如,插入、删除、修改等等)以及对调整内容的约束(例如,通过 XML Schema)。“调整描述语言”可以被用作所谓的后处理步骤,在该步骤中独立调整 WSXL 组件的输出而不必调用组件。

这一描述语言的核心概念就是“调整点”的概念。“调整点”是明确说明如何使一个特殊 Web 服务能适应于把它发送给终端用户所通过的渠道的一种方式。“调整点”定义表示流的“可见特性”,而且就其本身而言,同消息类型类似而且互补。为了加速开发及协助确保正确性,应用程序提供者和中介者在设计期间都要使用调整点。而且,通过在运行时对中间件提供支持,这些点可以用于安全的执行中介者所请求的调整。例如,供应商可以指定“调整点”允许客户使用信息以可靠的进行:

改变应用程序使用的背景颜色或字体变量[表示调整]

查找输出标记中的值(如嵌入产品 ID)[表示调整]

在输出标记中覆盖/添加值(如价格)[数据调整]

在特殊页面里插入值(如添加文本域,在表中加新列)[表示调整以及可能的控制调整]

覆盖/扩展与事件有关的动作(例如,按下按钮)[控制调整]

“调整点”是 WSXL 组件定义的组成部分。“调整点”指定:

应用程序相关的“调整点”名称。

操作种类(插入、替换和查找)。指定调整的预期使用。

它所应用的页面(即,不同组件的输出)的名称。可选。这一信息用于设计时和低成本运行时实现。

感兴趣的项目的定位器。例如,xpath 和 xquery 用于 XML 文档。请注意定位器可以指向文档中的多个位置。

“调整点”类别(XML、CSS 等等)。指定感兴趣的项目的类别。

特定于该类调整的应用程序的信息。

工具提示。

作为在服务定义的上下文中定义端口的一部分,WSXL 端口可以选择指定一个名为 adaptationURI 的属性。指定 adaptationURI 的一个示例如下:

My first service
adaptationURI="
http://TLS.com/LSAdaptation.xml" />
http://TLS.com/shop"/>

adaptationURI 指向该端口的调整描述文件。没有在摘要中讨论,而是在本节中说明目前关于可用于满足商务要求的“调整描述语言”的思考。该语言的根元素是“调整”组,它可以由“调整组”(Adaptation Group)和“调整点”的组合构成。AdaptationGroup 是只用于特定于应用程序公开“调整点”的组织的元素。如下的调整类别初次引入:

CSSAdaptation,

XMLAdaptation,

引入这两类是为了处理两种典型消息内容,即 CSS 和 XML。必要时可以把其它的分类引入该语言。

为了允许供应商协助或控制聚集者插入的标记而引入了调整生成器的概念。AdaptationGenerator 是对客户可以调用的供应商服务执行的操作,该操作要求定制标记包括在供应商服务的输出消息流中。

2.6.1 XMLAdaptation

XMLAdaptation 元素已经被引入为 XML 规范和管理提供方便。该元素可以作为调整定义的一部分出现,也可以用于提供与管理 XML 片断有关的信息。有几个示例如下所示:



integer

在上面的示例中,提供者为查找在表示组件的输出流中出现的数据项指定了一个调整并指明值的类型应为一个整数。




ShortContactInfo LongContactInfo
http://www.SampleCompany.com/TypeInfo.xml

在上面的示例中,供应商指定一个“调整点”以允许根据 XML 替换片断应当同指定的两种类型其中之一相匹配的约束替换输出流中联系信息。schemaLocation 元素中指定的 URL 处的文件中有类型描述。

作为最后一个示例,数据组件提供者可能会希望允许客户把以美元计量的项目价格替换为以不同货币计量的等价价格。然而,供应商希望表达一个约束,其内容是插入的价格应当遵守特定约束。



PartPriceType
http://www.SampleCompany.com

2.6.2 CSSAdaptation

引入 CSSAdaptation 元素是要为规范和管理那些不符合 XML 的 CSS 属性提供方便。CSSAdaptation 实例同其包含的调整及 adaptationGroup 示例如下所示:



output1 output3 output10


background-color

If you have problems, contact Popeye.
Specify override for background color. Default is green

在这一描述片断中,adaptationGroup 有唯一的一个“调整点”,它给聚集者提供有关 XHTML 表的背景颜色如何调整的信息。名称属性有唯一的人的意义。adaption 上的“use”属性指定客户可以对调整元素内指定的项目执行替换操作。outputList 元素包含标识适用“调整点”的不同的输出的子集的名称。定位器元素指定我们感兴趣的项目在组件输出的 XML 部分中的位置,而 CSSAdaptation 指定 CSS 界定定位器来标识感兴趣的特定属性。在这种情况下,属性元素中的值必须同 CSS 规范的属性之一相匹配。

请注意 CSSAdaptation 只处理直接插入的 CSS 属性。所有其它的“带外”CSS 规范的调整可以通过插入 CSS 样式表一个指针来利用 CSS 规范,尽可能“靠近” 感兴趣的项目,然后把它留给 CSS 应用器机制以便正确应用。

2.6.3 AdaptationGenerator

为了处理 3 种情形而引入了 AdaptationGenerator:

使供应商协助创建聚集者标记用于调整。

保留对插入的标记片断的控制。

回避约束语言的限制。

提供者服务实现这些 AdaptationGenerator 操作并把它们的名称作为 AdaptationGenerator 规范的一部分包括在内。客户机调用这些操作来执行表示相关的变换以及利用调整中生成的消息。下面是一个供应商实现名为“addColumnToXHTMLTable”的操作并把该操作包括在 AdaptationGenerator 构造内的示例。




addColumntoXHTMLTable

AdaptationGenerator 中指定名称的确切签名通过查看该服务的 WSXL 规范获得。所预期的是有一个输入信息由两部分组成:a)供应商或指向该消息的定位器原先发出的消息的一部分;b)客户希望在供应商的消息部分添加的表示和/或内容。输出签名应当是一个包含任何可以容纳客户的内容的实例的消息的签名。

3 门户网站与 WSXL

门户网站是把许多来源的内容、信息和应用程序聚集成通用的上下文以供分布在许多不同位置的用户进行 Web 访问的主要方式。门户网站实现典型情况下支持被称为 portlet 的 Web 应用程序组件。

Portlet 可以包括模型、视图与控制器功能,是为使 Portlet 在组合 Web 应用程序的背景下可聚集而设计的。Portlet 提供从显示 JSP、样式表、ASP 等简单的视图功能到完整的涉及流与用户交互的 Web 应用程序功能等诸多功能。Portlet 可以支持多种标记类型,如 HTML、WML 和 VoiceXML 等等。

当有客户机请求门户网站生成页面时,门户网站会调用页面上包含的全部 porlet,把其返回的标记片断聚集成一个页面,并把该页面返回给客户机。因为 portlet 大小可以调整,而且具有使用生成的标记中的表单和按钮把数据 post 回服务器上的 portlet 的 Web 应用程序功能,门户网站需要把随之而来的请求作为 portlet 事件路由到特定的目标 portlet。(请参照图 11)

图 11:WSXL 与门户网站


绑定于 WSXL 组件的 Web 服务的 portlet 代理可以用于允许门户包括远程 Web 应用程序组件,例如,在其它门户上运行的远程 portlet。要供门户网站使用,WSXL 定义一个组件接口,在给定用户简档和会话的上下文中,此组件接口提供了接收相应于portlet 事件的事件的多种方法以及获取用于给定设备类型、用户简档和会话的组件的标记的方法。通过该接口调用的 WSXL 组件或者可以是包装其它门户网站上运行的 portlet 的包装器或是由其它 WSXL 组件构成的组件。

3.1 门户网站标准与 WSXL 依赖

整个 Portal 供应商有三个可能的标准化领域,即 Java Portlet API、“远程 Portlet Web 服务”(Remote Portlet Web Service)及“标记片断规则”(Mark-up Fragment Rule)。

Java Portlet API 定义门户相关的行为与接口,它们与 Servlet API 互补。从概念上讲,Portlet API 可以分为Portlet 调用 API(Portlet Invocation API)和 Portlet 服务 API(Portlet Service API)。服务 API 允许 portlet 调用门户网站提供给 portlet 的功能。其中最重要的是访问用户简档信息与数据持久存储。调用 API 定义了 porlet 为了允许门户网站调用自己必须实现的方法。Portlet 调用 API 由一个通过 porlet 生成的标记接收请求并返回响应的服务方法、动作、窗口和消息事件侦听器组成。

“远程 Portlet Web 服务”提供一种标准的 WSDL 接口并实现同 portlet 模型兼容的操作模型,即,它可以用于把 portlet 调用 API 公开成一个 Web 服务。WSDL 接口定义一种接收请求并根据请求和远程 porlet Web 服务的当前状态返回标记的服务方法以及一种接收动作、窗口或消息事件的方法。“远程 porlet Web 服务”通过这些方法接收事件/请求以及可选的用户简介信息,举例来说,这些信息可用于服务实现内的个性化。为了能生成带有链接或动作的标记,这些动作回指向其动作但仍能刚好嵌在调用"远程 portlet Web 服务"的门户网站上的页面中,服务必须支持分布式 URL 重写。

要顾及聚集门户网站页面的标记片断,这些片断必须符合确保它们可以被聚集成有效文档的规则。诸如 HTML、XHTML、WML、VoiceXML 和 cHTML 之类的标记语言要求有恰当的规则集。

重要的是这两种规范成果是相互在对方基础之上建立的。特别的,“远程 Portlet Web 服务” 接口和行为在定义额外的、更特殊的行为的同时必须与 WSXL 兼容。另外,WSXL 组件必须在被门户网站调用时提供可聚集的标记片断并可以任意消耗动作、窗口或消息事件,它们才可以被用作远程 portlet Web 服务。

4 “Web 服务体验语言”示例:实现细节

在这一节中,我们将回到本文开始部分的示例,并演示如何使用 WSXL 来实现之。

4.1 辛迪加式购买“旅行支票”

如图 12 中所述,供应商可以描述当时用于为直接客户访问服务的 WSXL 应用程序或把它描述为由业务伙伴再分发的远程应用程序内的业务逻辑。在后面这种情况下,分发者添加的额外的 WSXL 表示组件(Presentation Component)有两个功能:(1)根据分发者的要求调整供应商的应用程序表示;和(2)添加任何分发者引入的新功能所要求的额外表示元素。

图 12:辛迪加式购买“旅行支票”的 WSXL 实现


在本方案中,通过改变供应商的表示的外观,分发者用简单的方法为应用程序的客户群体建立起应用程序的品牌观念的另一种选择。因此,分发者级别的表示组件也许通过应用不同的 XSLT 或 CSS 样式表生成本身的输出标记。

除为表示的目的用 WSXL 实现应用程序辛迪加之外,供应商的应用程序还可以直接控制由浏览器上的交互引发的事件。就实现而言,分发者的表示组件把收到的所有客户机事件都委托供应商在其控制及数据上下文中进行解释。

4.2 分布式可视化服务(本地门户)

在前面的方案的基础之上,图 13 演示说明门户网站的供应商还可以如何 OEM 其门户网站产品,该产品可以访问金融图表工具。在这种情况下,在简单的改变供应商的应用程序的外观及感觉之外,应用程序供应链中的分发者还添加功能。引入分发者额外的表示和数据组件以创建绘制股票符号所需的数据输入表单。分发者的控制组件把股票符号数据和表示元素链接起来,还在把输入数据的值传给供应商的应用程序控制组件的 arc 上加了一个事件处理程序以触发生成图表。从最终用户的立场看来,只有一个应用程序框架,由分发者来协调框架的事件并把其委托给适当的供应商。

图 13:分布式可视化服务(本地门户)的 WSXL 实现


如果分发者引入的表示、数据和控制组件,象前一节所描述的一样,是作为本地门户网站实现的,那么可以通过一个简单的 WSXL 容器来管理。为了支持通过二级分发者(也就是作为一个远程门户网站)远程访问,考虑到远程绑定及交互就轮到分组来实现 WSXL 组件接口了。

4.3 增值分销“旅行支票”

我们的最后一个方案在图 14 中说明,提出使用 WSXL 来创建新的收入生成应用程序的方式。在这种情况下,应用程序域表示卖出“旅行支票”。但是,由于银行通过新的支付工具,具体是记入借方,试图增加其业务伙伴(“旅行支票供应商”)现有的应用程序资产,所以银行在这种情况下是增值的分销商。

图 14:“旅行支票”的增值分销的 WSXL 实现


为了达到这一目标,银行通过把其业务伙伴的远程应用程序同一个进行银行成员帐户的借方交易处理的本地可用的应用程序集成在一起创建了定制表示层。本地应用程序由捕捉借记交易所需要的特定用户信息的 WSXL 表示组件构成。本地 WSXL 控制组件则包括一个把这一信息传给银行托管的借记应用程序的事件处理程序,这个应用程序可以用适合于银行的任何技术来实现。由于借记交易没有牵涉更进一步的最终用户的交互,因而其本身并不是一个WSXL 应用程序。但是,请注意,开始这次借记的 WSXL 控制组件还要通知供应商的控制组件已经开始交易以使供应商的应用程序可以继续适当的后续步骤,确认或中止。

4.4 WSXL 与 Macromedia Flash

WSXL 组件可以存在于网络的任一层上,而且独立于输出标记。

图 15 演示一个生成 Macromedia Flash 内容的 WSXL 应用程序。

图 15:WSXL 与 Flash 标记


在图 16 所示的示例中,为了支持使用 Flash 运行时引擎直接生成表示,WSXL 表示组件被移到了客户机。Flash 运行时是在作为基本 WSXL 表示组件的扩展的 WSXLFlash 表示组件内部实现的。就其本身而论,WSXL Flash 表示接口包括基本 WSXL 组件接口供 DOM 访问和 DOM 事件使用(在图 16 中以红色表示),以及标准 WSXL 表示接口中(用蓝色表示)。WSXL Flash 表示组件还另外定义一些接口(用黄色表示)以支持 Flash 特定的功能,如显示和同用户的物理交互。

图 16:WSXL 与 Flash 表示组件


WSXL 组件可在网络的任一层上执行,还可以使用 W3C DOM Event 通过 WSXL 控制组件所建立的 arc 来标志组件间的变化。在这张图中,WSXL Flash 表示组件通过 WSXL 控制组件(Control Component)建立的控制链接同 WSXL 应用程序的其余部分交互。可以通过接收和引发这些链接上的事件向 Flash 表示提供数据及其返回的结果。flash 表示在交互状态的改变还可以通过使用事件来通知,以使用户接口中 flash 表示的行为同也可以出现的非 flash 表示的部分同步。

5 总结

WSXL 是 Web 服务协议栈的下一个。 WSXL 提供的 Web 服务标准基于开发、部署及维护 Web 应用程序的方法。通过从由单个商业实体驱动的交易转到世界范围内涉及构成并聚集重用的 Web 应用程序的多个交易实体的电子交易,WSXL 使动态电子商务(Dynamic e-Business) 成为现实。因此,这些应用程序可以利用新的创新的收入模型。

参考资料

  • 请参加关于本文的讨论论坛
  • DOM Level 1 - W3C(World Wide Web Consortium)DOM Level 1 Specification,1998 年 10 月。可以在 http://www.w3.org/TR/REC-DOM-Level-1 得到。
  • DOM Level 2 Core - W3C(World Wide Web Consortium)Document Object Model Level 2 Core Specification,2000 年 11 月。可以在 http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113 得到。
  • DOM Level 3 Events - W3C(World Wide Web Consortium)Document Object Model Level 3 Events Specification,2001 年 8 月。可以在 http://www.w3.org/TR/DOM-Level-3-Events 得到。
  • DOM Level 2 HTML - W3C(World Wide Web Consortium)Document Object Model Level 2 HTML Specification,2000 年 11 月。可以在 http://www.w3.org/TR/2000/WD-DOM-Level-2-HTML-20001113 得到。
  • HTML 4.0 - W3C(World Wide Web Consortium)HTML 4.0 Specification,1998 年 4 月。可以在 http://www.w3.org/TR/1998/REC-html40-19980424 得到。
  • RFC2396 - IETF(Internet Engineering Task Force)RFC 2396:Uniform Resource Identifiers(URI):Generic Syntax,eds. T. Berners-Lee,R. Fielding, L. Masinter. 1998 年 8 月。可以在 http://www.ietf.org/rfc/rfc2396.txt 得到。
  • XML Events - W3C(World Wide Web Consortium)本文发表时还没有标题、可用的日期及 URL。
  • XForms - W3C(World Wide Web Consortium)XForms,2001 年 8 月。可以在 http://www.w3.org/TR/xforms 得到。
  • XLink - W3C(World Wide Web Consortium)XLink,2001 年 6 月June 2001。可以在 http://www.w3.org/TR/xlink/ 得到。
  • XPointer - W3C(World Wide Web Consortium)XML Pointer Language(XPointer),2001 年 1 月。可以在 http://www.w3.org/TR/xptr 得到。
  • XSLT - W3C(World Wide Web Consortium)XSLT,2001 年 1 月。可以在 http://www.w3.org/TR/xslt 得到。
  • XML - W3C(World Wide Web Consortium)Extensible Markup Language (XML) 1.0,2000 年 10 月。可以在 http://www.w3.org/TR/2000/REC-xml-20001006 得到。
  • XML Namespaces - W3C(World Wide Web Consortium)Namespaces in XML,1999 年 1 月。可以在 http://www.w3.org/TR/1999/REC-xml-names-19990114 得到。

关于作者

Angel Luis Diaz 博士是 IBM T.J. Watson Research Center,Yorktown Heights,NY 的 XML/XSL Transformational Systems 的经理。 Diaz 博士 1997 年获得了 Rensselaer Polytechnic Institute 的计算机科学博士学位。Diaz 是万维网联盟(W3C)数学工作组的联合主席,数学标记语言规范(Mathematical Markup Language ,MathML)的主要作者。Diaz 还是层叠样式表(Cascading Style Sheets ,CSS)和扩展样式表语言(Extensible Stylesheet Language ,XSL)工作组的成员之一,W3C 超文本协调组、W3C XML 组件接口和用户界面工作队的成员之一,以及 W3C 文档对象模型级别 3 规范的合作编辑。您可以通过
aldiaz@us.ibm.com 同他联络。


John Lucassen 博士在 IBM 的 Application Integration Middleware Division 负责新兴技术体系与战略风险跟踪。在这之前,Lucassen 博士曾在 IBM 的许多其它岗位 任职,包括 Research Staff Member、项目经理、以及 Voice Systems Marketing 组织的节目 部主任。Lucassen 博士离开 McKinsey & Company 加入了 IBM,在那里他曾是顾问。 Lucassen 博士 1987 年获得了麻省理工大学的电气工程与计算机科学博士学位,曾 作为 IBM Tokyo Research Laboratory 的访问科学家。您可以通过 lucassen@us.ibm.com 同他联络。


Charles Wiecha 博士是 IBM T.J. Watson Research Center,Yorktown Heights,NY 的 NextWeb User Interface Frameworks 的经理。 他获得了 Carnegie-Mellon University 的博士学位,研究方向是用户界面构架的设计与评估。 在 IBM Research 的时候,他继续从事面向转变的用户界面架构领域的工作,并牵头进行了其在大规模实践中的使用的项目。 您可以通过 wiecha@us.ibm.com 同他联络。

Angel Diaz、John Lucassen 和 Charles F. Wiecha 是该规范的编者。David Chamberlain、Dan Gisolfi、Ravi Konuru、Julie Macnaught、Stephane Maes、Roland Merrick、David Mundel、T. V. Raman、Shankar Ramaswamy、Thomas Schaeck 及 Rich Thompson 也为本文写稿。

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
企业信息化杂谈[原创]国内企业信息化很难回避..

国内企业信息化所面临的环境与西方企业、外资企业、或者合资企业有很大的不同,这就决定了国内企业信息化有自己的特点。

吕建伟 专栏文档知多少---走出软件作坊:三..

我们也在力求能少写就少写,根据团队的、客户的磨合理解共识程度,哪个文档或哪个环节不需要写,我们就砍掉。

CIO职场,强者生存?

在2008年,我们将继续看到CIO向商业运营方向发展。与此同时,我们也会看到商业管理人员将与技术管理人员一起竞争CIO岗位。 IT领导者的就职机会虽有不少,但其难度将会大幅提高。2……

防震减灾,IT当关

今天,任何的防震救灾体系,都离不开IT技术。地震观测台是数字化的,震害防御需要对以往的地震信息进行数据分析,应急救援要需要现代多样化的通讯技术。如果说,在许多行业,信息技术还只是一……