消息映射 中强制类型转换元素

在 " 图形数据映射编辑器" 中,使用 强制类型转换 函数在 消息映射中重新定义输入或输出模型的部分。 此函数也称为 mapping cast

关于此任务

要创建灵活的消息模型,您可以将 XML 模式中的元素定义为通配符,也可以提供基本类型的扩展或派生类型。 在 JSON 模式中,您可以使用 "oneOf" 或 "anyOf" 关键字来提供灵活性。

通配符是 XML 模式中定义为 xsd:anyxsd:anyTypexsd:anySimpleType 的元素。

消息模型模式可能包含一个或多个通配符。 此外,Message Assembly Environment、Local Environment、传输头文件夹以及 SOAP 和 JSON 域消息的模型(包括通配符,例如,在环境 Variables 文件夹下),这允许您专门为流操作定义数据。

在 " 图形数据映射编辑器" 中,可以使用 强制类型转换 函数来重新定义这些通配符,以选择在消息模型中定义的元素或类型,例如 XML 模式, DFDL 模式, JSON 模式或 Swagger 文档有关更多信息,请参阅 将定义为 xsd: any 的通配符强制转换为 SOAP 消息的特定类型使用强制转换函数在本地环境树中配置通用类型

如果您没有提供适合强制类型转换的元素的消息模型,请考虑添加用户定义的元素,如 定义用户定义的元素中所述。 添加用户定义元素后,可以根据消息模型中的全局类型设置其类型,如 定义复杂用户定义元素的结构中所述。

在应用映射强制类型转换时,可用的选项因类型而异。 以下选项对指定类型可用:
xsd:any
因此,在包含于同一个应用程序或所引用库中的消息模型内定义的所有全局元素对映射可见。 这包含来自 XML、DFDL 和顶级对象的元素以及 JSON 模式中的数组。
xsd:anyType
因此,在包含于同一个应用程序或所引用库中的消息模型内定义的所有全局类型对映射可见。 这包含来自 XML 和 DFDL 的全局类型、为顶级对象定义的类型以及 JSON 模式中的数组。
xsd:anySimpleType
因此,针对包含于同一个应用程序或所引用库中的 XML 消息模型内定义的 XML 简单类型的所有标准 XML 类型和任何全局类型扩展对映射可见。
<namespace>:<base XML schema type>
定义为此 XML 模式类型的扩展或派生类型的所有 XML 类型。
使用 "oneOf""anyOf" 定义的 JSON 类型
"oneOf""anyOf" 数组中定义的 JSON 类型。
如果要强制类型转换为派生自 JSON 模式或 Swagger 文档的元素或类型,请参阅 消息映射的 JSON 模式需求

您可以多次使用强制类型转换函数来重新定义通配符或基本类型。 您强制转换的每种类型都会显示在所选组的通配符或基本类型下。

要在 XML 数据类型的子类型之间定义变换,您可以使用扩展或派生类型。 派生类型是与另一数据类型(称为基本类型或超类型)相关的数据类型。 您可以使用强制类型转换函数将基本类型强制转换为派生类型。 有关更多信息,请参阅 将 XML 模式基本类型转换为派生类型或扩展类型

当输入消息或输出消息是 IBM 提供的 JSON 域对象或 JSON 域数组消息,那么可以使用强制类型转换函数重新定义类型为 anyTypeData 元素。 有关更多信息,请参阅 使用等效 XML 模式模型对 JSON 消息进行建模以在消息映射中使用

您还可以使用 JSON 模式 "oneOf""anyOf" 关键字来构造和组合更复杂的 JSON 模式。 有关更多信息,请参阅 Casting with JSON schema types消息映射的 JSON 模式需求

过程

要使用强制类型转换函数对输入模型或输出模型中的元素进行重新定义,请完成下列步骤:

  1. 在 " 图形数据映射编辑器" 中打开映射。
  2. 右键单击要重新定义的元素,然后选择 强制类型转换

    这样会打开“选择类型”对话框:

    此图显示强制类型转换 JSON 类型时可能看到的 "类型选择" 窗口。

  3. 选择要强制类型转换为的类型,然后单击 确定

    类型选择”对话框仅列出与您要强制转换的元素相对应的元素和类型,以及包含在引用的应用程序或库中的元素和类型。 对基本元素进行强制类型转换时,“类型选择”对话框仅列出派生类型。

    注: 在以下情况下, 选择的强制类型转换项 包含多个项:
    • 您可以将通配符输入类型强制转换为特定的模式类型。
    • 您可以将基本模式输入类型强制转换为扩展或受限类型。
    应用 XML 扩展或派生类型模式类型强制类型转换时, "图形数据映射" 编辑器 会自动将 XPath 表达式应用于来自这些强制类型转换的映射。 运行时,XPath 表达式会检查输入元素的 xsi:type 属性以确定输入数据中存在哪些类型。 然后,仅执行相应类型的映射。 此表达式仅检查每项强制类型转换中的类型的名称;不考虑名称空间。 如果选择强制类型转换项包含名称相同但处于不同名称空间中的类型,那么必须添加自己的条件变换,以便对输入数据的 xsi:type 属性的名称空间和名称部分进行检查。 选择强制类型转换项仅包含单个类型时, 不会检查 xsi:type 属性,您必须确保输入数据仅提供单个强制类型转换类型。

结果

使用强制类型转换函数对使用通配符定义的元素的类型进行限定后,该类型将显示在该通配符之下。 您可以在输入消息与输出消息之间定义变换。 有关更多信息,请参阅 指定变换 (映射操作)