ibm websphere_第2部分:IBM Integration Bus中的WebSphere Service Registry and Repository节点

ibm websphere

IBM®Integration Toolkit(以前称为WebSphere®Message Broker Toolkit)通过提供Endpoint Lookup节点和Registry Lookup节点,为WSRR提供了明确的支持。 这些节点可以包含在消息流中,以根据节点上定义的搜索条件从WSRR动态检索元数据。 或者,可以通过在WSRR节点之前将元素插入本地环境树中以编程方式指定搜索条件。

端点查找节点用于从WSRR检索WSDL定义的Web服务的服务端点。 该节点将检索到的服务端点插入本地环境树中,以供后续的SOAP或HTTP Request节点用来调用Web服务。

注册表查找节点是一个通用节点,可用于从WSRR中查询和检索任何文档或元数据,例如WSDL,XML模式,XSLT,策略文档等。 节点将检索到的工件插入到本地环境树中,以用于消息流的后续处理。

这些节点是IBM Integration Toolkit随附的,可以在消息流节点面板的Web Services文件夹中找到。 本文详细介绍了这些节点。

节点终端

端点查找和注册表查找节点的终端是相同的,并显示在中。 端子在中进行了描述。

WSRR节点终端
WSRR节点终端
端点查找和注册表查找节点上的终端
终奌站 描述
接受消息以供节点处理的输入终端。
失败 如果在节点的处理过程中发生错误,则将消息路由到的输出终端。
包含匹配的注册表数据的未修改的输入消息和更新的本地环境发送到的输出终端。
无比赛 如果根据指定的搜索条件未找到匹配实体,则向其发送输入消息的终端。

端点查找节点

端点查找节点用于从WSRR检索服务端点信息,专门用于WSDL文档描述的服务。 WSDL文档根据在指定端口上可用的接口(称为portType)来定义服务。 WSDL端口定义访问服务所需的端点信息。 端点查找节点从实现特定portType的WSRR中检索WSDL端口。 显示了如何在WSRR中建模这些对象的示例。

WSDL端口和WSDL端口类型之间的WSRR关系
WSDL端口和WSDL端口类型之间的WSRR关系

要从WSRR检索服务端点信息,端点查找节点使用WSRR Web服务API执行图形查询。 该查询采用基于节点上定义的属性生成的XPath表达式的形式。 还可以使用消息流中较早的计算节点以编程方式指定这些属性,以将元素插入本地环境树。 以编程方式指定的任何属性都将覆盖在节点上指定的属性。 可以在“端点查找”节点上定义的属性显示在中。

端点查找节点属性
属性 描述
端口类型名称 在所需端点上公开的PortType的名称。
PortType命名空间 在所需端点上公开的PortType的名称空间。
端口类型版本 在所需端点上公开的PortType的版本。
用户属性 允许在查询中指定所需WSDLPort的属性。 在WSRR中的WSDLPort对象上定义的属性如下:
  • bsrURI
  • 名称
  • 命名空间
  • 描述
  • 所有者
  • 最后修改
  • lastModifiedBy
  • creationTimestamp
通常,WSRR中的WSDLPortWSDLPortType对象上的名称空间和版本都相同。 属性类型可以是:
  • 一个字符串(默认值),在这种情况下,属性值是要与WSRR中的属性值匹配的字符串。
  • XPATH或ESQL,在这种情况下,属性值是一个XPath或ESQL表达式,该表达式在消息树中找到一个字段,该字段包含要与WSRR中的属性值匹配的字符串。
分类

允许在查询中指定必需的WSDLPort上的分类。

WSRR允许您定义可用于对已注册对象进行分类的本体。 分类可以帮助使对象更易于查找,也可以用于将多个相关对象组合在一起。 例如,您可以定义一个代表组织中各个业务部门的本体。 然后,您可以通过相同的方式对特定业务部门拥有的所有服务进行归类。

使用Web本体语言(OWL)定义本体。 每个分类器都是OWL中的一个类,并且具有统一资源标识符(URI)。 添加分类时,必须为该类指定完全限定的OWL URI。

比赛政策 针对WSRR执行的查询可能导致返回多个匹配的实体。 如果“ 匹配策略”设置为One ,则“端点查找”节点将使用结果集中的第一个实体。 如果“ 匹配策略”设置为“ 全部” ,则“端点查找”节点将使用所有匹配的实体。

使用IBM Integration Toolkit中的“ 属性”编辑器来编辑属性

端点查找节点“基本属性”选项卡
端点查找节点基本属性

当“端点查找”节点收到消息时,将依次执行以下步骤:

  1. 端点查找节点通过使用指定的搜索条件从WSRR中检索服务数据。
  2. 如果找到一个或多个匹配项,则“端点查找”节点会将这些端点的表示形式添加到本地环境树中。 端点的每种表示形式都作为ITService条目插入到本地环境中的ServiceRegistry条目下。
    • 如果Match Policy设置为One ,则WSRR返回的第一个实体将添加到本地环境树中。 WSRR不保证查询返回的结果的顺序,因此,如果WSRR包含多个与指定搜索条件匹配的实体,则无法确定每次查询时Endpoint Lookup节点将选择哪个实体。发行。

      另外,将检索到的端点值设置为SOAP请求,SOAP异步请求或HTTP请求节点使用的目标URL的本地环境替代。 即,将检索到的端点值写入本地环境树中的以下两个位置:

      • LocalEnvironment.Destination.HTTP.RequestURL
      • LocalEnvironment.Destination.SOAP.Request.Transport.WebServiceURL
    • 如果Match Policy设置为All ,则WSRR返回的所有匹配实体都将添加到本地环境树中。 未设置SOAP请求,SOAP异步请求或HTTP请求节点使用的目标URL。 相反,必须将计算节点添加到消息流中以选择所需的地址并设置这些节点所需的本地环境设置。
    输入消息将原样传播到Out终端。 本地环境树也将传播到Out终端,在那里,消息流中的后续节点可将其用于进一步处理。
  3. 如果找不到匹配项,则“端点查找”节点会将输入消息传播到NoMatch终端。
  4. 如果发生处理错误,例如,如果与在DefaultWSRR配置服务上配置的WSRR服务器的连接失败,或者连接超时,则“端点查找”节点会将输入消息未更改地传播到“ 失败”终端。 使用错误的详细信息填充ExceptionList

以下示例显示了由匹配策略One的Endpoint Lookup节点生成的本地环境树的典型结构。 根据流中已执行的先前处理,本地环境树中可能还存在其他条目。

端点查找节点的典型输出
<LocalEnvironment>
  <Destination>
    <HTTP>
      <RequestURL>http://localhost:7800/MathServer1/services/MathServer
      </RequestURL>
    </HTTP>
    <SOAP>
      <Request>
        <Transport>
          <HTTP>
            <WebServiceURL>http://localhost:7800/MathServer1/services/MathServer
            </WebServiceURL>
          </HTTP>
        </Transport>
      </Request>
    </SOAP>
  </Destination>
  <ServiceRegistry>
    <ITService>
      <Endpoint>
        <Address>http://localhost:7800/MathServer1/services/MathServer</Address>
        <PortType>
          <name>MathServerPortType</name>
          <namespace>http://math.pot.ibm.com</namespace>
          <version>1.0</version>
        </PortType>
        <Classification>http://www.ibm.com/xmlns/prod/serviceregistry/lifecycle/v6r3
          /LifecycleDefinition#Online</Classification>
      </Endpoint>
    </ITService>
  </ServiceRegistry>
</LocalEnvironment>

注册表查找节点

“注册表查找”节点是一个通用节点,可用于查询和检索来自WSRR的任何文档或元数据。 该节点的工作方式与“端点查找”节点非常相似,它根据指定的搜索条件生成XPath表达式,然后使用该表达式使用WSRR Web服务API对WSRR执行图形查询。 这两个节点之间的主要区别在于注册表查找节点生成的XPath表达式。 端点查找生成XPath表达式以从WSRR中选择WSDLPort对象时,“注册表查找”节点不以任何方式限制从WSRR中选择的对象的类型。 这使您可以在消息流中使用“注册表查找”节点来从WSRR中检索任何类型的实体。

可以在“注册表查找”节点上定义的属性显示在中。

注册表查找节点属性
属性 描述
名称 您要从WSRR检索的实体或工件的名称。
命名空间 您要从WSRR检索的实体或工件的名称空间。
您要从WSRR检索的实体或工件的版本。
用户属性

允许在查询中指定名称,名称空间或版本以外的属性。 如果在WSRR业务模型中的类型上定义了必需的属性,则指定的名称必须是该属性的编程名称,包括模型的相关前缀。 例如,如果要在查询中包括“ 消费者标识”属性,则需要指定属性名称gep63_consumerIdentifier 。 属性类型可以是:

  • 一个字符串(默认值),在这种情况下,属性值是要与WSRR中的属性值匹配的字符串。
  • XPATH或ESQL,在这种情况下,属性值是一个XPath或ESQL表达式,该表达式在消息树中找到一个字段,该字段包含要与WSRR中的属性值匹配的字符串。
分类

允许在查询中指定要从WSRR检索的实体或工件的分类。

WSRR允许您定义可用于对已注册对象进行分类的本体。 分类可以帮助使对象更易于查找,也可以用于将多个相关对象组合在一起。 例如,您可以定义一个代表组织中各个业务部门的本体。 然后,您可以通过相同的方式对特定业务部门拥有的所有服务进行归类。

使用Web本体语言(OWL)定义本体。 每个分类器都是OWL中的一个类,并且具有统一资源标识符(URI)。 添加分类时,必须为该类指定完全限定的OWL URI。

比赛政策 针对WSRR执行的查询可能导致返回多个匹配的实体。 如果“ 匹配策略”设置为One ,则“注册表查找”节点将使用结果集中的第一个实体。 如果“ 匹配策略”设置为“ 全部” ,则“注册表查找”节点将使用所有匹配实体。
深度策略 WSRR允许客户端指定执行图查询时返回的对象图的深度。 这为客户端提供了对查询返回多少数据的某种程度的控制。 执行图形查询时传递给WSRR的深度是通过在“注册表查找”节点(“ 高级”选项卡上提供)上指定合适的“ 深度策略”来控制的。 深度策略的有效值为:
  • 仅返回匹配(深度= 0),以使用WSRR查询深度0,并仅返回匹配的实体。
  • 返回匹配的加上直接相关的实体(深度= 1)以使用WSRR查询深度1,并返回匹配的实体和直接相关的子实体。
  • 返回匹配项加上所有相关实体(深度= -1),以使用WSRR查询深度1,并返回匹配的实体和直接相关的子实体。
还可以使用显示直接关系“匹配返回值” (仅出于兼容性)值,但是该值已被弃用,不应使用。

使用IBM Integration Toolkit中的“ 属性”编辑器来编辑属性

注册表查找节点“基本属性”选项卡
注册表查找节点基本属性

如果要使用“注册表查找”节点从WSRR中检索特定类型的对象,则可以执行以下操作之一:

  1. 指定用户属性 ,其属性名称为primaryType ,属性值是所需类型的OWL URI 。 例如,要生成仅从WSRR返回Business Services的查询,您可以添加值为http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3/GovernanceEnablementModel#BusinessServiceprimaryType属性。
  2. 分类列表中为所需类型指定OWL URI

当“注册表查找”节点收到消息时,将依次执行以下步骤:

  1. “注册表查找”节点使用指定的搜索条件从WSRR中检索数据。
  2. 如果找到一个或多个匹配项,则“注册表查找”节点会将这些实体的表示形式添加到本地环境树中。 匹配实体的每个表示形式都作为一个实体条目插入到本地环境中的ServiceRegistry条目下。 ServiceRegistry由XMLNSC解析器拥有。
    • 如果Match Policy设置为One ,则WSRR返回的第一个实体将添加到本地环境树中。 WSRR不保证查询返回的结果的顺序,因此,如果WSRR包含多个与指定搜索条件匹配的实体,则无法确定每次查询被“注册表查找”节点都会选择哪个实体。发行。
    • 如果Match Policy设置为All ,则WSRR返回的所有匹配实体都将添加到本地环境树中。
    输入消息将原样传播到Out终端。 本地环境树也将传播到Out终端,在那里,消息流中的后续节点可将其用于进一步处理。 实体在本地环境树中的确切表示形式取决于指定的深度策略
  3. 如果未找到匹配项,则“注册表查找”节点会将输入消息传播到NoMatch终端。
  4. 如果发生处理错误,例如,如果与在DefaultWSRR配置服务上配置的WSRR服务器的连接失败,或者连接超时,则“注册表查找”节点会将输入消息未更改地传播到“ 失败”终端。 使用错误的详细信息填充ExceptionList

以下XML显示了“注册表查找”节点可能在本地环境树中生成的ServiceRegistry条目的示例。 这是使用匹配深度 归还 策略 加上直接相关实体(深度= 1)生成的。

注册表查找节点的示例输出
<ServiceRegistry>
  <Entity
    bsrURI="de3116de-6db2-422f.9d14.baee05ba14cc"
    name="CalculatorApplication"
    namespace=""
    version="1.0"
    description="Version 1.0 of the CalculatorApplication."
    owner="wasadmin"
    lastModified="1382700226780"
    creationTimestamp="1379085488592"
    lastModifiedBy="wasadmin"
    primaryType="">
    <classificationURIs>
      http://www.ibm.com/xmlns/prod/serviceregistry/lifecycle/v6r3
        /LifecycleDefinition#Realized
    </classificationURIs>
    <classificationURIs>
      http://www.ibm.com/xmlns/prod/serviceregistry/profile/v6r3
        /GovernanceEnablementModel#ApplicationVersion
    </classificationURIs>
    <userDefinedProperties name="ale63_ownerEmail" value=""/>
    <userDefinedProperties name="ale63_guid" value=""/>
    <userDefinedProperties name="ale63_assetType" value=""/>
    <userDefinedProperties name="ale63_remoteState" value=""/>
    <userDefinedProperties name="ale63_fullDescription" value=""/>
    <userDefinedProperties name="ale63_assetOwners" value=""/>
    <userDefinedProperties name="gep63_versionTerminationDate" value="2019-09-13"/>
    <userDefinedProperties name="ale63_communityName" value=""/>
    <userDefinedProperties name="gep63_consumerIdentifier" value=""/>
    <userDefinedProperties name="gep63_versionAvailabilityDate" value="2013-09-13"/>
    <userDefinedProperties name="ale63_requirementsLink" value=""/>
    <userDefinedProperties name="ale63_assetWebLink" value=""/>
    <userDefinedProperties name="ale63_owningOrganization" value=""/>
    <userDefinedRelationships name="ale63_owningOrganization">
      <targetEntities>
        <Entity
          bsrURI="d2d6c2d2-3d69-4975.b47d.d26767d27d38"
          name="IT Department"
          namespace=""
          version=""
          description=""
          owner="wasadmin"
          lastModified="1379084875512"
          creationTimestamp="1379084873049"
          lastModifiedBy="wasadmin"
          primaryType="">
          <classificationURIs>
            http://www.ibm.com/xmlns/prod/serviceregistry/lifecycle/v6r3/
              LifecycleDefinition#Governed
          </classificationURIs>
          <classificationURIs>
            http://www.ibm.com/xmlns/prod/serviceregistry/v6r3/ALEModel#Organization
          </classificationURIs>
          <userDefinedProperties name="ale63_contact" value="Martin Smithson"/>
          <userDefinedProperties name="ale63_contactEmail" value="msmiths@uk.ibm.com"/>
        </Entity>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="ale63_artifacts">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="gep63_interfaceSpecifications">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="gep63_providedSCAModules">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="gep63_providedWebServices">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="ale63_dependency">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="gep63_provides">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
    <userDefinedRelationships name="gep63_providedRESTServices">
      <targetEntities>
      </targetEntities>
    </userDefinedRelationships>
  </Entity>
</ServiceRegistry>

以编程方式覆盖节点属性

如上所述,可以以编程方式指定在查询WSRR时Endpoint Lookup和Registry Lookup节点使用的属性的值。 这是通过使用转换节点(例如Java Compute节点)将字段插入本地环境树中来实现的。 必须在本地环境树的ServiceRegistryLookupProperties条目中设置这些字段。 必须将转换节点放入流中“端点查找”或“注册表查找”节点之前。

以编程方式设置搜索条件
以编程方式设置搜索条件

可在本地环境树的ServiceRegistryLookupProperties条目中设置的字段显示在中。

erviceRegistryLookupProperties字段
领域 描述
名称 此字段将覆盖“端点查找”节点上的“ 端口类型名称 ”或“注册表查找”节点上的“ 名称 ”。
命名空间 此字段将覆盖“端点查找”节点上的“ 端口类型”命名空间或“注册表查找”节点上的“ 命名空间 ”。
此字段将覆盖“端点查找”节点上的“ PortType版本 ”或“注册表查找”节点上的“ 版本 ”。
用户属性 此字段将覆盖“端点查找”或“注册表查找”节点上的“ 用户属性 ”。
分类 此字段将覆盖“端点查找”和“注册表查找”节点上的“ 分类”属性。
匹配政策 此字段将覆盖“端点查找”和“注册表查找”节点上的“ 匹配策略”属性。 以编程方式设置此属性时,有效值为One and All
深度政策 此字段将覆盖“注册表查找”节点上的“ 深度策略”属性。 以编程方式设置此属性时的有效值为:
  • 仅匹配返回的 MatchOnly (深度= 0)
  • MatchPlusImmediate用于返回匹配项以及直接相关实体(深度= 1)
  • MatchPlusAll用于返回匹配的匹配项以及所有相关实体(深度= -1)
MatchShowRel值与可以在节点的属性编辑器中指定的“ 返回匹配的显示直接关系(仅出于兼容性)”值相对应。 如前所述,该值已被弃用,不应使用。

提供了使用ESQL以编程方式设置这些属性的示例。

使用ESQL动态指定搜索条件
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Name = 'MathServerPortType';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Namespace
  = 'http://math.pot.ibm.com';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Version = '1.0';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.UserProperties.prop1
  = 'value1';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Classification
  = 'http://www.ibm.com/xmlns/prod/serviceregistry/8/0/visibilitytaxonomy#Internal';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.MatchPolicy = 'One';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.DepthPolicy = 'MatchOnly';

提供了一个使用Java编程设置这些属性的示例。 IBM Integration Bus中的XPath实现提供了许多可用于修改消息树的定制XPath函数。 中显示的示例Java代码利用这些功能来减少在本地环境树中创建字段所需的代码量。 有关这些自定义XPath函数的更多信息,请单击“ 相关主题”部分中的“ 使用XPath扩展来更新消息”链接。

使用Java动态指定搜索条件
MbMessage environment = new MbMessage(inAssembly.getLocalEnvironment());
MbElement envRoot = environment.getRootElement();
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?Name"
                     + "[set-value('MathServerPortType')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?Namespace"
                     + "[set-value('http://math.pot.ibm.com')]");
envRoot.evaluateXPath("?ServiceRegistryLookupProperties/?Version[set-value('1.0')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?UserProperties/?prop1"
                     + "[set-value('value1')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?Classification"
                     + "[set-value('http://www.ibm.com/xmlns/prod/serviceregistry/8/0/"
                     + "visibilitytaxonomy#Internal')]");
envRoot.evaluateXPath("?ServiceRegistryLookupProperties/?MatchPolicy"
                     + "[set-value('One')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?DepthPolicy"
                     + "[set-value('MatchOnly')]");

端点查找和注册表查找节点上的用户属性分类属性都可以配置为多个值。 可以在本地环境树中以编程方式为这些属性指定多个值。 提供了有关如何使用ESQL完成此操作的示例。

使用ESQL指定多个属性和分类
-- Create multiple properties
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.UserProperties.prop1
  = 'value1';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.UserProperties.prop2
  = 'value2';

-- Create multiple classifications
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Classification[1]
  = 'http://www.ibm.com/xmlns/prod/serviceregistry/8/0/visibilitytaxonomy#Internal';
SET OutputLocalEnvironment.ServiceRegistryLookupProperties.Classification[2]
  = 'http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Staging';

提供了有关如何使用Java完成此操作的示例。

使用Java指定多个属性和分类
// Create multiple properties
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?UserProperties/?prop1"
                     + "[set-value('value1')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?UserProperties/?prop2"
                     + "[set-value('value2')]");

// Create multiple classifications
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?Classification"
  + "[set-value('http://www.ibm.com/xmlns/prod/serviceregistry/8/0/visibilitytaxonomy#"
  + "Internal')]");
envRoot.evaluateXPath( "?ServiceRegistryLookupProperties/?$Classification"
  + "[set-value('http://www.ibm.com/xmlns/prod/serviceregistry/6/1/"
  + "GovernanceProfileTaxonomy#Staging')]");

以编程方式覆盖“端点查找”和“注册表查找”节点上的属性的功能使您可以解决这些节点上存在的限制。 IBM Integration Toolkit强制您为这些节点上的namenamespaceversion属性中的至少一个指定值。 如果您没有为这些属性中的任何一个指定值,则在保存消息流时将收到一条错误消息,并且将无法部署它。 要解决此限制,您只需为这些属性之一指定一个虚拟值,然后以编程方式在流程中更早地清除该值。 显示了为“注册表查找”节点上的name属性指定一个dummy值的示例。

指定虚拟名称
指定虚拟名称

提供了有关如何使用Java以编程方式清除此值的示例。

使用Java以编程方式清除name属性
envRoot.evaluateXPath("?ServiceRegistryLookupProperties/?Name[set-value('')]");

生成的XPath表达式

如上所述,Endpoint Lookup和Registry Lookup节点均生成XPath表达式,这些表达式用于基于节点上指定的属性或在本地环境树中以编程方式指定的查询WSRR。 由“端点查找”节点生成的XPath表达式的格式如图1所示。

端点查找节点生成的XPath查询
/WSRR/WSDLService/ports[binding/portType[
    @name='<PORTTYPE_NAME>' and 
    @namespace='<PORTTYPE_NAMESPACE>' and 
    @version='<PORTTYPE_VERSION>'] and 
    @<PROPERTY_NAME_1>='<PROPERTY_VALUE_1>' and
        ...
    @<PROPERTY_NAME_N>='<PROPERTY_VALUE_N>' and
    exactlyClassifiedByAllOf(., '<CLASSIFICATION_URI_1>', ... ,'<CLASSIFICATION_URI_N>')]

哪里:

  • <PORTTYPE_NAME>PortType Name属性的值。
  • <PORTTYPE_NAMESPACE>PortType Namespace属性的值。
  • <PORTTYPE_VERSION>PortType Version属性的值。
  • <PROPERTY_NAME_1>是指定的第一个User Property的值(如果有)。
  • <CLASSIFICATION_URI_1>是指定的第一个Classification的OWL URI(如果有)。

“注册表查找”节点生成的XPath表达式的格式如所示。

注册表查找节点生成的XPath查询
//*[@name='<NAME>' and 
    @namespace='<NAMESPACE>' and 
    @version='<VERSION>' and 
    @<PROPERTY_NAME_1>='<PROPERTY_VALUE_1>' and
        ...
    @<PROPERTY_NAME_N>='<PROPERTY_VALUE_N>' and
    exactlyClassifiedByAllOf(., '<CLASSIFICATION_URI_1>', ... ,'<CLASSIFICATION_URI_N>')]
  • <NAME>Name属性的值。
  • <NAMESPACE>是“ Namespace属性的值。
  • <VERSION>Version属性的值。
  • <PROPERTY_NAME_1>是指定的第一个User Property的值(如果有)。
  • <PROPERTY_VALUE_1>是指定的第一个User Property的值(如果有)。
  • <CLASSIFICATION_URI_1>是指定的第一个Classification的OWL URI(如果有)。

如果没有为给定属性指定值,则从生成的XPath表达式中省略该属性的相应谓词。 例如,如果在消息流中包括“注册表查找”节点,并且仅为Name属性指定了MyTestService的值,则将生成的XPath表达式如下:

XPath示例
//*[@name='MyTestService']

还值得注意的是,由“端点查找”和“注册表查找”节点生成的XPath表达式都使用了WSRR提供的exactlyClassifiedByAllOf定制XPath函数。 此函数将返回已由所有指定的OWL URI分类的对象,并且不考虑任何子分类。 例如,如果您想返回所有已分类与环境分类端点一个服务,你不能指定的OWL URI Environment分类,如下面的例子,因为孩子的分类不考虑:

http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Environment

相反,您需要为要包含在查询结果中的对象显式包含所有环境分类。 例如,开箱即用的WSRR定义了环境分类的以下子分类:

http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Development
http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Production
http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Staging
http://www.ibm.com/xmlns/prod/serviceregistry/6/1/GovernanceProfileTaxonomy#Test

性能和缓存

在消息流中对WSRR的调用是同步的。 显然,这可能会对运行时消息流的性能产生影响。 为了提高利用端点查找和注册表查找节点的消息流的性能,IBM Integration Bus提供了一个高速缓存,该高速缓存用于存储这些节点执行的查询的结果。 在第7部分:在IBM Integration Bus中配置WSRR高速缓存中将更详细地讨论该高速缓存。

结论

本文已详细描述了IBM Integration Bus随附的“端点查找”和“注册表查找”节点。 此信息提供了扎实的基础,有助于您理解本系列其余文章中介绍的每个示例消息流中如何使用节点。

致谢

感谢以下人员在本系列的示例消息流开发中提供的所有帮助:

  • 约翰·霍西
  • 本汤普森
  • 马特·高比·柯克
  • 特雷弗·杜比(Trevor Dolby)
  • 安德烈亚斯·马滕斯(Andreas Martens)
  • 格雷厄姆·哈克斯比(Graham Haxby)
  • 安德鲁·科尔曼
  • 约翰·里夫

还要感谢以下人员对本文的帮助:

  • 戴维·西格
  • 阿尔诺·德斯普雷特
  • 安娜·麦克西科维奇(Anna Maciejkowicz)

翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1404_smithson2/1404_smithson2.html

ibm websphere

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值