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

developerWorks 中国  >  SOA and Web services  >

UDDI v2新特性: 第三方分类法和标识系统

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

柴晓路 (fennivel@uddi-china.org)Chief System Architect

2001 年 10 月 01 日

本文介绍了UDDI规范2.0版的又一个新特性:外部的分类法和标识系统的支持。UDDI规范2.0版引入了已校验(checked)的外部命名空间的概念以及外部分类法(标识系统)验证服务的标准API调用。这一机制使得第三方的分类系统或标识系统的提供者能够扩展UDDI操作入口站点的能力,使得UDDI操作入口站点能够支持新的类别模式和标识模式,同时将其集成到UDDI注册中心的数据表示中去。这一新的功能为UDDI注册中心中的数据表达提供了全新的支持,使得UDDI注册中心得以包含新的类别和标识符系统,同时将这些类别和标识附属一个或多个商业实体。这样的一种作为中间代理和桥梁的设计(商业实体和分类法提供商)将使得UDDI注册中心能够关注于技术层面有效地运营。

UDDI的全球化提出的挑战

如果大家自己研究过UDDI 1.0规范的话,应该知道在UDDI 1.0规范中,用户可以使用诸如save_business、save_service和save_tModel等的API消息来注册和更新注册中心中的businessEntity、businessService以及tModel等实体信息。这些实体信息可选的会附加了类别信息(属于某个分类法下的某个类别)以及标识信息(在某个标识系统中拥有一个标识)等信息。类别信息是使用categoryBag元素来指定的,其中包含了具备命名空间修饰的对分类法键值和描述的引用。标识信息是使用identifierBag元素来指定的,其中包含了具备命名空间修饰的对标识符和描述的引用。

我们知道在UDDI规范1.0版中内置了这样三个分类法:

tModel Description: Business Taxonomy: NAICS (1997 Release)
tModel UUID:        uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2
Categorization:     categorization
Checked:        Yes

这个tModel定义了NAICS工业分类法。

tModel Description: Product Taxonomy: UNSPSC (Version 3.1)
tModel UUID:        uuid:DB77450D-9FA8-45D4-A7BC-04411D14E384
Categorization:     categorization
Checked:        Yes

这个tModel定义了UN/SPSC产品分类法。

tModel Description: UDDI GeographicTaxonomy
tModel UUID:        uuid:61668105-B6B6-425C-914B-409FB252C36D
Categorization:     categorization
Checked:        Yes

这个tModel定义了ISO 3166地理分类法命名空间。

以及这样两个标识系统:

tModel Description: Dun & Bradstreet D-U-N-S? Number
tModel UUID:    uuid:8609C81E-EE1F-4D5A-B202-3EB13AD01823
Categorization: identifier
Checked:    No

这个tModel被用于表示Dun & Bradstreet D-U-N-S? Number标识符。这个tModel 最初被注册成为UDDI 核心 tModel的一部分。一旦注册中心开始运行,这个tModel就将期望被传送到Dun & Bradstreet信息发布者那里进行管理。更多信息请参考 http://www.dnb.com。

tModel Description: Thomas Registry Suppliers
tModel UUID:    uuid:B1B1BAF5-2329-43E6-AE13-BA8E97195039
Categorization: identifier
Checked:    No

这个tModel是用于表示Thomas注册中心的供应商标识符编码。这个tModel 最初被注册成为UDDI 核心 tModel的一部分。一旦注册中心开始运行,这个tModel的监管权将被期望移交给Thomas 注册中心的信息发布者。更多信息请参考http://www.thomasregister.com。

然而UDDI注册中心的创立是为了全球商业注册的使用,全球的不同文化社会背景的商业实体自然不可能都采用美国的商业惯例,都使用这些分类法和标识系统。同时让UDDI注册中心去内置全球各地的分类法和标识体系也是一个不切实际的想法,作为一个面向技术运作的系统,不应该也不可能去内置如此多的带有地区商业特征和使用习惯的商业机制。因此如果即能提供种类繁多的分类法和标识系统,又无需太多地增加UDDI注册中心的运作代价,以满足全球用户的需要,这就是UDDI规范2.0需要面对的一个重要的问题。





回页首


UDDI 2.0的新特性

UDDI规范2.0版引入了已校验(checked)的外部命名空间的概念。这一机制使得第三方的分类系统或标识系统的提供者能够扩展UDDI操作入口站点的能力,使得UDDI操作入口站点能够支持新的类别模式和标识模式,同时将其集成到UDDI注册中心的数据表示中去。这一新的功能为UDDI注册中心中的数据表达提供了全新的支持,使得UDDI注册中心得以包含新的类别和标识符系统,同时将这些类别和标识附属一个或多个商业实体。


Figure 1. 外部命名空间(分类法/标识系统)的工作模式

上图描述了这个外部命名空间所描述的外部分类法(获标识系统)的工作模式,工作流程一般为:

  1. 分类法(或标识系统,两者可以统归为命名空间,因为可以把KeyName/KeyValue值对看成是命名空间中的取值)提供商首先将其自身提供的分类法的技术信息注册到UDDI注册中心中去,然后在UDDI注册中心中注册了对应于该分类法的分类校验服务(Taxonomy Validation Service)。

  2. 商业实体将自身信息注册进入UDDI注册中心,同时采用了外部的分类法提供商提供的分类法类别对其信息加以分类。

  3. UDDI注册中心发现了这个外部分类,因此调用外部的对应该分类法的分类校验服务(Taxonomy Validation Service)来实施校验,如果校验成功则实体包含的相关分类信息被标志为已校验,否则就被标注为未通过校验。

这一2.0版的特性为第三方团体提供了有力的支持,这些第三方团体包括那些为特定标识系统提供认证的团体,或者是提供一个特定分类法的团体,对于后者而言,可能对该分类法的使用具有策略上的控制,比如仅能使用一组特定的分类值空间,比如只能让联盟或协会内成员使用该分类法。这使得UDDI注册数据在某种意义上成为可信任的,因为此时负责标识和分类的第三方团体能够利用UDDI提供的新的特性来加强在UDDI注册数据中发现数据的准确性和权威性。

对于内置的分类法(即:NAICS、UN/SPSC和地理分类法)而言,当与这些分类法关联的tModelKey在keyedReference中被引用后,其中的keyValue属性的值将被对应的分类法校验服务所校验。只有通过校验的合法的keyValue数据将以"已进入注册中心"的数据而保存,如果没能通过校验,该校验服务将把这一分类数据加上"unchecked"(也就是说是为通过校验的)命名空间修饰。在每一个引用中的keyName都是可选的,并且仅用于当某个实体保存其类别信息时的描述用途。一个好的使用方式应当是按照类别分类法的定义来保存类别代码的描述信息。

对于UDDI规范2.0中引入的可外部校验的分类法支持而言,关于那些校验服务到底是如何判决指定的信息是否合法,是否能够与某个已校验的命名空间相关联,并没有一组固定的行为。这是因为,外部校验服务能够自由地去校验任意的被认为是适合与某一种指定的分类法或标识模式相关联的信息集。其中只有一个行为是可以预见的,那就是UDDI操作入口站点将会将注册的信息(save_xx消息导致的输出)传送给能够处理校验的服务,该服务与某一个已校验的命名空间相关联。如果该服务没有返回错误,保存操作将被允许。否则由验证服务返回的错误信息将被原封不动地传给调用者,同时保存操作将失败。

当保存请求中包含有对"checked"命名空间的引用时,如果校验服务不可用(因为服务中断或者其他原因)或者在验证时服务报错,那么操作入口站点必须拒绝这样的请求。未校验的命名空间则不需要任何校验过程,当然这些命名空间必须被注册为tModel。





回页首


第三方的机会

对于那些希望为UDDI操作入口站点提供作为核心服务的附加行为的增值服务的第三方实体,将存在很多机会。这些机会包括:提供外部分类法和命名空间校验认证服务,在基础的UDDI API之上提供更丰富的搜索机制等。无论是何种情况,第三方实体都被鼓励直接与UDDI操作入口站点个体进行磋商以建立合适的合约化的商务关系。

例如:如果大量的中国企业注册进入UDDI注册中心,显然中国的文化背景和使用习惯使得大多数用户并不希望使用美国习惯的分类法,同时也无法使用美国的标识系统。因此中国自己的分类法和标识系统的提供者就有必要提供满足UDDI规范的Taxonomy Validation Service(分类法校验服务),并注册入UDDI注册中心。这样中国的企业就可以使用中国自己的分类法和标识系统(比如中国的税号)了。同时在使用中国自己的分类法和使用国际标准的分类法在技术上完全一致,也就避免了用户的额外技术开销。

同时,除了公共UDDI注册中心外,也将会出现不同的专有的私有UDDI注册中心(Private UDDI Registry),例如有可能中国会自己建立一个中国范围内的UDDI注册中心。这样中国自身的分类法提供商由于提供的是满足UDDI规范的Taxonomy Validation Service(分类法校验服务),那么它会非常容易地为这个中国自身的UDDI注册中心以及公共UDDI注册中心的增加这个中国专有的外部分类法的支持。同时当出现其他合适的UDDI注册中心后,该外部分类法的支持也能够容易地加入进去。

这样的一种作为中间代理和桥梁的设计(商业实体和分类法提供商)将使得UDDI注册中心能够关注于技术层面有效地运营。





回页首


如何检查第三方提供的分类法和标识系统

无论是何时调用save_business,save_service 或 save_tModel,任何在参数集中包含的categoryBag或identifierBag信息的所有内容都将被检查,检验其中包含的代码值是否是合法的值。这样的检验将会作用与任何被分类为"已校验"的分类法或标识符模式。UDDI规范2.0版中提供了一种机制,使得第三方实体能够注册新的分类法或标识符模式,而对于校验流程也是完全由这样的第三方控制,UDDI注册中心将会使用第三方提供的机制来处理对内容的检查。

对于那些希望提供如上所述机制的第三方实体,必须实现一个与UDDI有着同样风格(比如,使用在HTTP之上的SOAP 1.1作为消息传输机制)的Web服务,同时发布一个简单的名为validate_values的方法。而对于validate_values的界面的描述如下。

validate_values

每当发布者在保存数据的时候使用了某个分类类别的值或某个标识符,而这个分类法或标识符模式正是由某个外部实体所控制的服务来校验的,那么UDDI操作入口站点将会向这个合适的且唯一的外部服务发送validate_values消息。为了便于论述,下面这些标识符和分类类别被统称为"已校验值集"。该消息的通常用法是去检验指定的分类类别或标识符(检查提供的keyValue属性)是否存在于指定的分类法或标识符系统中。对于某些分类类别和标识符,提供对应校验服务的第三方实体可能可能会限制在消息中传入的某些实体对某个分类类别或标识符的使用,或者是因为有某些上下文的限制因而限制对某个分类类别或标识符的使用

语法:

<validate_values generic="2.0" xmlns=" urn:uddi-org:api_v2">
    <businessEntity/>... | <businessService/>... | <tModel/>...
<validate_values> 

参数:

调用validate_values的操作入口站点会传入一个businessEntity,或是一个businessService,或是一个tModel元素,作为调用的单一传入参数。该参数与通过save_business,或是save_service,或是save_tModel调用中传入的元素参数相同。同一类型的多个元素可以在一次调用中一起传入。

行为:

被调用的服务将会实施任何校验者所希望实施的校验步骤。这可能仅仅包含对给出的keyValue值对于指定值集(由内嵌的KeyedReference中tModelKey键值描述)的校验。当然,其他的一些类型的校验操作也可能被期望实施,比如利用businessKey或是其他传入的键值而实施的上下文敏感检查等。

如果没有错误发生,待处理正常结束后,将如同附录A中描述的那样返回一个带简单成功标记的dispositionReport结构。其中,返回的errorCode值应当为"E_success",errno值应当为"0"。

错误报告:

如果发现了任何错误,或者是被调用的服务需要指明被保存的信息在由指定的外部服务提供者所使用的校验算法的校验下为非法,那么服务就将产生如附录A中描述的那样的SOAP Fault结构。

当产生了这样一个错误后,UDDI注册中心将拒绝这个待决的更新,同时将这个由校验Web服务所返回的SOAP错误消息原样返回给初始的调用者。错误代码应当指明如下之一的错误,同时错误文本中将清晰地指明被拒绝的keyedReference数据以及被拒绝的原因。

  • E_invalidValue: 在校验中,一个或多个提供的keyValue值被认为非法。仅第一个错误会被报告。
  • E_valueNotAllowed: 提供的值可能是合法的,但是在当前的上下文环境中不被允许。




回页首


小结

本文介绍了UDDI规范2.0版的又一个新特性:外部的分类法和标识系统的支持。UDDI规范2.0版引入了已校验(checked)的外部命名空间的概念以及外部分类法(标识系统)验证服务的标准API调用。这一机制使得第三方的分类系统或标识系统的提供者能够扩展UDDI操作入口站点的能力,使得UDDI操作入口站点能够支持新的类别模式和标识模式,同时将其集成到UDDI注册中心的数据表示中去。这一新的功能为UDDI注册中心中的数据表达提供了全新的支持,使得UDDI注册中心得以包含新的类别和标识符系统,同时将这些类别和标识附属一个或多个商业实体。这样的一种作为中间代理和桥梁的设计(商业实体和分类法提供商)将使得UDDI注册中心能够关注于技术层面有效地运营。



参考资料



关于作者

柴晓路: 上海得易电子商务技术有限公司( DealEasy)首席系统架构师、XML技术顾问。 UDDI-China.org蓝色火焰工作室(Blue Blaze Studio)成员。 UDDI Advisor Group成员, WSUI Working Group成员。2000年获复旦大学计算机科学硕士学位,曾在国际计算机科学学术会议(ICSC)、亚太区XML技术研讨会(XML Asia/Pacific'99)、中国XML技术研讨会(北京)、计算机科学期刊等各类国际、国内重要会议与期刊上发表论文多篇。专长于基于XML的系统集成和数据交换的技术研究,同时对数据库、面向对象技术及CSCW等技术比较擅长。




对本文的评价

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

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款