本主题提供关于完成“从通讯报文生成参数化消息”向导中的数据复用页面的详情。这些设置决定了通讯报文文件中的新数据将如何扩展和/或更新现有资源库数据集和数据记录。

章节目录:

了解显示的数据集和记录类型

左侧面板将显示数据集。任何在指定资源库中已存在的数据集都将用(现有)标签标记。

SOAtest 中的数据复用页

Virtualize 中的数据复用页

右侧面板将显示组的记录类型和字段。任何匹配现有数据资源库的记录类型或字段都将用(matching)标签标记。

推断限制条件

如果使用 CTP,还可以选择推断约束的选项。约束是与数据相关的附加属性,它允许您创建模型并生成测试数据(请参阅Data Modeling)。例如,数据会受到字符串、数量、日期或布尔类型的约束。

  • 如果不希望约束受到定义,则选择
  • 如果希望根据数据自动设置约束,则选择数据。您可以选择将数据中的元数据填充到数据资源库中。例如,如果数据集包括 U.S. 电话号码,则以下约束可能设置为:

Constraint:String

Pattern:(###) ###-####

Char map:0123456789
更多信息,请参阅推断数据约束

  • 如果希望根据服务定义文件(WSDL/schma)定义约束,则选择定义如果未提供在通讯报文向导中指定的定义文件,则该选项禁用。
请参阅从通讯报文中创建参数化的消息响应器获取关于在 Virtualize 中使用 WSDL 的信息,查阅从 WSDL 中创建测试获取关于在 SOAtest 中使用 WSDL 的信息。

如果选择通讯报文向导中的现有资源库,则将重写约束。您可以在 CTP 中的约束汇总查看并更改。请参阅Data Modeling

了解记录标识

记录标识是记录类型字段的子集,唯一标识该记录类型。例如,银行客户记录类型可能有 15 个不同的字段,而其标识可能仅使用社会保险号和账号。或者,书店记录可能将 ISBN 作为其标识。

标识可以让您将导入的通讯报文数据与现有数据资源库记录联系在一起。这种匹配方式有助于确定通讯报文文件的哪些数据是新的,哪些与现有数据匹配。当检测到匹配的数据时,记录导入设置将确定是否引用/共享现有记录,或者是否进行更新。 

有关记录标识的详情,请参阅指定记录标识

从向导中指定记录标识

如果没有为与通讯报文文件相关联的数据集指定记录标识,则可以在向导中显示的记录类型树设置。

已经有标识的字段使用黄色图标标记。现有记录类型(使用树中的(现有)标签注释)无法在向导中对它们的标识进行调整(无法删除标识或添加新的标识)。如果希望调整现有数据集的标识,则需要使用数据资源库编辑器(如指定记录标识中所述)来实现。

如果没有现有标识,而您希望指定一个字段用作识别:

  • 右键点击该字段并选择添加到标识。图标将会改变,以表示在向导完成时它将成为一个标识:

若要删除标识的字段:

  • 右键点击该字段并选择从标识中删除

修改记录类型、字段名称和映射

为了更好地控制导入数据的 Schema,可以重命名记录类型和将创建的字段。您可以自定义名称,并指示使用不同名称标记的项实际上是相同的。

无法重命名现有记录和字段,但可以创建新的重复项。

如需重命名记录类型的字段,请右键点击相应的树节点,选择重命名,然后输入所需的名称。

新名称将显示在树(箭头右侧)中,并且图标将用红色的星号(*)标记。

如果选择对现有记录类型或字段进行重命名,请注意,原始条目将保持不变,并将在其下方添加一个新条目。来自通讯报文文件的数据将使用新的记录类型或字段。

示例

假定记录的通讯报文引用的实际上是相同地址类型的多元素(如:address、work_address、home_address)。默认情况下,向导将会视其为不同类型(因为它们具有不同名称)。通过重命名,他们可以被视为相同类型。

如果右键点击 work_address 并将其重命名为 address,则 address 子节点如果不在 work_address 中,则将添加到 work_address 中。此外,work_address 子节点如果不在 address 中也将添加到 address中。

如果将 home_address 重命名为 address,则 home_addresswork_addressaddress 将合并在一起。节点文本表示正在合并的类型。任何合并后应用的重命名和标识设置都将应用到所有三种类型。

当重命名一个合并类型时,您将收到是否将重命名应用于所有合并类型或只应用于所选类型的提示。例如,将任何一个合并类型重命名为 addr 并将其应用于所有合并类型将导致以下情况:

如果将 work_address 重命名为 secondary_address,并将该变更仅应用于所选节点,则它将从其他列表中“取消合并”,将其子列表还原为原始列表,然后重命名。向导将其视为不同于 addr 的类型。

注意

  • 重命名为其他类型的节点上的任何标识设置都将通过重命名删除。可以在重命名后设置标识。
  • 如果记录类型有共同的子字段,但这些子字段的类型不同,则不能重命名。例如,无法合并 addressWithListwork_address,因为它们同时具有一个名为 misc_info 的子节点,而它们具有不同的类型(一个是 list,另一个是 string)。
  • 如果两个记录类型具有相同的子字段,那么当这些字段以不同的方式重命名,或者其中一个已被重命名而另一个没有,则无法合并。

如果一个类型是通讯报文文件中另一个类型的先驱,则这两个记录类型无法合并。

了解数据集导入选项

您可以在下面选项中进行选择,以控制来自通讯报文文件的数据如何扩展和/或更新现有资源库数据集:

SOAtest 选项

  • 替换:删除现有数据,然后添加新数据。
  • 附加:添加新记录,无需删除现有数据。

Virtualize 选项

  • Replace:删除现有数据,然后添加新数据。
  • 合并:在无需修改现有数据的情况下,导入新数据。
  • Update:使用新数据更新匹配的记录,并根据需求创建新记录。
  • Overwrite:使用新数据更新匹配的记录(匹配键),不创建其他记录。

为了了解每种策略如何运作的具体示例,假定您拥有以下现有数据集(CustomerID 的位置是键列):

CustomerIDFirstNameLastName
1DarthVader
2LukeSkywalker
3HanSolo

同时假定您有新的通讯报文,包含以下数据:

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
4Obi-WanKenobi

Replace

删除现有数据,然后添加新数据。

根据以上示例,replace 将导致以下情况:

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
4Obi-WanKenobi

合并

在无需修改现有数据的情况下,导入新数据。

根据以上示例,merge 将导致以下情况:

CustomerIDFirstNameLastName
1DarthVader
2LukeSkywalker
3HanSolo
4Obi-WanKenobi

更新

使用新数据更新匹配的记录,并根据需求创建新记录。

根据以上示例,update 将导致以下情况:

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
3HanSolo
4Obi-WanKenobi

重写

使用功能新数据更新匹配的记录(匹配键),不创建其他记录。

如果将通讯报文导入新的数据集,则即使没有匹配的键,也将创建新的记录。

根据以上示例,overwrite 导致以下情况:

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
3HanSolo

了解记录导入选项

可以控制匹配的数据(匹配现有的记录类型,由标识定义)是否重新使用现有的记录类型或更新现有的记录。可用选项包括:

  • 复用:重新使用或共享其匹配的现有记录。
  • 更新:使用来自通讯报文的数据更新现有记录相对应的字段,并为新的记录类型添加新记录。

例如,假定 SocialSec 和现有记录的标识为 FirstName、LastName、SocialSec 和 Email。

使用更新选项...

  • 如果通讯报文具有 FirstName、LastName、SocialSec 相同,但 Email 不同的数据,则 Email 将更新。
  • 如果通讯报文有一个字段引用了没有标识的 CustomerPrefs 记录类型,则将创建一个新的 CustomerPrefs 记录(除了上面所描述的行为外)。

使用重新使用选项...

  • 如果通讯报文具有与其相同 FirstName、LastName、SocialSec,但 Email 不同的数据,则没有字段更新。
  • 如果通讯报文有一个字段引用了没有标识的 CustomerPrefs 记录类型,则没有字段更新并且没有新的记录创建。

如果倾向于创建具有不同名称的重复记录类型,则右键点击匹配的记录类型名称,选择重命名选项,然后输入新的记录类型名称。

该树结构将同时显示原记录类型和新(重命名的)记录类型。

  • No labels