本主题详细介绍了如何在使用“请求匹配”向导从通讯报文生成参数化消息时完成“请求匹配”向导界面设置。本话题内容:

前言

您可以在该界面指定以下设置:

  • 请求/响应对 - 配置消息组映射到响应器的方式
  • 请求关联性 - 配置使用哪些参数值来确定发送虚拟资产中的哪些响应信息
  • 服务定义 - 指定包含组和关联性定义的服务定义文件。 

当通讯报文向导消息组回顾页面中的自动配置选项被禁用时,将显示请求匹配界面。

如果 Virtualize 无法自动确定消息分组或关联性,则可以禁用自动配置选项。

该向导将为每个需要手动配置的消息组显示一个页面。 

请求/响应对

点击连接线并拖动其端点,然后将端点拖动到不同的请求或响应上即可重新映射请求/响应对。例如,如果响应 3 实际上与请求 2 相关,则可以这样表示:

连接的消息将在生成的消息响应器和数据资源库中使用。断开连接的消息是未表示的消息,因此将被忽略。如果不希望在消息响应器或数据资源库中使用消息,则可以删除该消息块或断开连接。

若要查看消息细节,请选择相关的消息块。

请求关联性

您可以在请求关联性选项卡中配置响应器模式,并根据请求体、URL 路径和请求头指定自定义关联性。

初始关联性

在下列情况中,Virtualize 会根据通讯报文文件、模板文件和/或服务定义文件自动配置初始关联性。 

  • 如果既没有提供模板文件,也没有提供服务定义文件,Virtualize 将根据通讯报文文件自动生成数据源关联性。
  • 如果提供了服务定义文件,Virtualize 将根据该服务定义文件确定关联性。如果在通讯报文文件中检测到额外的关联性,Virtualize 可能会创建这些关联性。  
  • 如果提供了模板文件,Virtualize 将仅应用模板中保存的关联性。
  • 如果提供了服务定义文件和模板文件,并且启用了约束选项(默认启用),Virtualize 将根据模板文件确定关联性。  
  • 如果提供了服务定义文件和模板文件,并且已禁用约束选项,Virtualize 将首先应用模板中定义的消息的模板关联性。之后,Virtualize 将根据服务定义文件为模板中未定义的剩余消息应用关联性。对于不匹配模板或服务定义的消息,将根据通讯报文创建关联性。

了解如何使用关联性

向导中指定的自定义关联将用于在生成的响应器中配置数据源关联。例如,假设您在请求关联性选项卡中将以下 Xpath 指定为一个请求体关联:
/*:Envelope/*:Body/*:confirm/text()  


Xpath 将在生成的响应器的数据源关联性选项卡中使用,如下所示。 

可以自定义自动生成的数据源列名。

又例如,假设您为每个以下图像都指定请求 URL 路径关联:


在生成的响应器的数据源关联性选项卡中将使用以下内容: 

配置响应器模式

响应器模式选项允许为正在配置的消息组配置响应类型。可以在每个生成的响应器的响应器关联性选项卡中更改单个消息组的响应器模式。 


可以指定以下其中一种响应器模式。

参数化响应

此选项是您可以在请求匹配界面配置数据源关联性将使用来自数据资源库的值对生成的响应器进行参数化。

序列响应此选项以序列响应模式生成响应器。更多信息,请参阅序列响应
单个响应此选项将从消息组中选择单个消息对,并以字面量模式生成响应器。请参阅字面量

修改初始关联

您可以使用各关联性部分中的控件修改自动配置的初始关联性。如果对配置进行了修改,可以点击恢复默认按钮放弃变更,并恢复至自动配置设置的初始状态。必须启用参数化响应响应器模式才能配置数据源关联性(请参阅Configuring the Responder Mode)。

如果多次指定相同的列名(例如,在 URL 参数和 URL 路径中),则只会设置一个值;之前的值将被覆盖。

请求体关联性

Virtualize 将为每个操作/组生成一个基于“name”的 XPath;这将用于设置该操作的响应器相关性。例如,如果 SOAP 主体下的元素名是“SubmitOrder”,那么将 XPath 表达式设置为响应器相关部分,如下所示:

 local-name(/*/*[local-name(.)="Body"]/*)="SubmitOrder".

注意,当消息不是 XML 时,X©Path 和参数选择应用于请求消息的转换 XML 版本。

对于属于同一操作的每组消息,将相互比较请求,以确定不同请求之间的参数。Virtualize 的通讯报文自动配置将自动分析请求元素中的差异,然后使用该分析的结果为该操作/组中可用的响应生成 Xpath 表达式。目标是为每个不同的请求元素自动生成响应。如果通讯报文是 SOAP 消息封套,那么只要消息共享相同的操作元素(这是 SOAP 主体下的第一个元素),就允许存在结构差异。如果通讯报文是通用 XML,那么只要消息具有相同的根节点,就允许存在结构差异。

如果希望覆盖向导页面中显示的初始配置,请使用可用控件指定要使用的 Xpath 和列名。

为了匹配而忽略某些值

有时候,出于匹配的目的,最好忽略某些值(例如时间戳)。Virtualize 根据下面的正则表达式自动配置为忽略时间戳: 

[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]{1,3})?(([+-][0-9]{2}:[0-9]{2})|Z)?

如果想查看、修改或添加排除项,请点击页面底部的排除按钮,然后编辑表中的值。元素名称指定为精确匹配或使用通配符(*)来匹配所有内容。根据正则表达式指定值。

如果您始终想为了匹配目的而忽略某些值,则可以在首选项 > Parasoft > 通讯报文文件处理中输入一次,并在每次从通讯报文创建参数化虚拟资产时进行应用。详情请参阅通讯报文文件处理设置

请求 URL 参数关联

对于请求 URL 参数,如果属于消息组的调用中的 URL 参数有任何差异(例如不同数量的参数、不同的参数(名称)或不同的参数值),Virtualize 通过通讯报文的自动配置将根据这些差异自动配置关联性。

例如,假设特定消息组的调用中有以下参数:

countryCode=US&brandCode=HG

countryCode=Uk&brandCode=HG&channelCode=3

countryCode=US

countryCode=UK

brandCode=HG

根据参数的不同,Virtualize 会自动为该消息组配置三个数据源关联行:countryCode、brandCode 和 channelCode。

如果希望覆盖向导页面中显示的初始配置,则使用可用控件指定要使用的参数和列名。

请求 URL 路径关联

对于 URL 路径,如果属于组的调用中的 URL 路径有任何差异,Virtualize 通过通讯报文的自动配置将根据这些差异自动配置关联性。

例如,假设特定消息组的调用中有以下路径:

/customer/123/account/1920384

/customer/203/account/4922434

/customer/302/account/7349463

根据段 1 和段 3 中的差异(使用基于 0 的索引),Virtualize 将为这个消息组添加 2 个数据源相关行:一个用于路径索引 1,一个用于路径索引 3。

如果希望覆盖向导页面中显示的初始配置使用可用控件指定要用于关联的路径段。路径段可以与一个或多个数据源列名匹配,然后使用各种数据源列参数化。在打开的对话框中,指定要使用的路径段(可以点击相关的路径段或输入所需的路径索引),然后为数据源列指定一个名称。

请求头关联

请求头关联不会在 Virtualize 的通讯报文自动配置过程中添加。如果想基于头部值进行关联,则为要提取和匹配的请求值提供头部,然后将其一一映射到数据源列中。提到的值将与映射的数据源列匹配。

指定服务定义文件 

如果想为该通讯报文提供 WSDL 或模式,请在 WSDL/Schema 选项卡中输入它。指定 WSDL 或模式的优点包括:

  • 生成的表单输入模型将根据 WSDL/Schema,当您编辑和维护结果表单输入时,该模式提供了丰富的类型。
  • 变更指导助手(如变更管理中描述)可以帮助您保持资产与不断发展的服务和不断变化的环境条件保持同步。

如果您注意到生成的表单输入及其数据参数化与原始消息不匹配,则说明消息没有完全匹配 WSDL/Schema,或者映射原始消息失败。如果遇到这样的问题,应该忽略 WSDL/Schema,以确保生成的表单输入模型完全匹配通讯报文消息。

如果不指定 WSDL 或模式和消息,请使用选择或扩展类型,请参阅了解选择/扩展类型支持

  • No labels