“业务对象映射”调解原语
“业务对象映射”调解原语用于变换消息。您可以使用业务对象映射以图形方式定义消息变换。
简介
- 将数据从输入消息中的第一个字段复制到输出消息中的第二个字段。
- 将输入消息中第二个字段的一部分复制到输出消息中的第一个字段。
- 向输出消息中的第三个字段分配常量值。
“业务对象映射”调解原语具有一个输入终端 (in)、一个输出终端 (out) 和一个失败终端 (fail)。对 in 终端进行连接以接受消息,并对其他终端进行连线以传播消息。输入消息会触发变换,如果变换成功,那么 out 终端会传播已修改的消息。如果变换期间发生异常,那么失败终端会传播原始消息,以及 failInfo 元素中包含的任何异常信息。
详细信息
创建“业务对象映射”调解原语时,通过 IBM® Integration Designer,可以从属性视图的详细信息选项卡创建新业务对象映射。或者,可以浏览现有业务对象映射,然后选择合适的业务对象映射。
创建业务对象映射时,将会指定消息 root(XPath 1.0 表达式),对于调解流而言可能指代服务消息对象 (SMO) 中的以下位置:/、/headers、/context 或 /body。 消息 Root 指定变换的 Root,并同时应用于输入消息和输出消息。如果消息 Root 为 /,那么变换将应用于整个 SMO。
变换类型
业务对象映射编辑器支持以下变换类型(也称为映射类型):
| 变换(映射)类型 | 描述 |
|---|---|
| 移动 | 将源字段中的值复制到目标字段。例如,将客户名称从输入业务对象复制到输出业务对象。 |
| 抽取 | 抽取源字段中值的一部分,然后将其分配给目标字段。源字段的值必须是字符串。例如,将地址的一部分从输入业务对象复制到输出业务对象。extract 变换类似于 Java™ 中的 String.substring() 方法。 |
| 连接 | 组合两个或多个源字段的值,然后将组合值分配给目标字段。联接变换的目标必须是字符串。例如,从输入业务对象将名字 John 和姓氏 Smith 组合,以在输出业务对象中生成姓名 John Smith。 |
| 子映射 | 可以使用子映射在复杂类型(业务对象)之间进行映射。业务对象映射的输入和输出必须与子映射变换的源和目标为同一类型。通过子映射,可以复用映射定义。子映射变换使用先前定义的映射在消息的两个部分之间执行变换。即使源或目标是弱类型元素,也可以使用子映射变换。 |
| 定制 | 提供 Java 代码以指定用于映射输入和输出的逻辑。 |
| 分配 | 向目标字段分配常量值。 分配变换具有目标字段,但没有源字段。 |
| 关系 | 执行关系管理。关系会在来自两个或多个业务对象的数据之间创建关联。 当输入和输出业务对象中的字段包含以不同方式表示的等效数据时,变换步骤可以使用关系。可以使用 IBM Integration Designer 的“新建关系”向导创建关系;并且可以复用现有关系。 关系变换的源和目标必须是复杂类型(业务对象)。 |
| 定制分配 | 提供 Java 代码以决定要分配给目标字段的值。定制分配变换具有目标字段,但没有源字段。 |
| 定制调出 | 提供采用源字段的值并将其与自己的逻辑结合使用的 Java 代码。 在运行其他变换之前,定制调出变换有助于初始化。定制调出变换具有源字段,但没有目标字段。 |
移动变换将基本类型源字段的值复制到基本类型目标字段。可以将一个基本类型字段映射到另一个基本类型字段。 但是,如果无法转换数据,那么在运行时将发生异常。例如,如果字符串 123A 映射到 int,那么在运行时,您将看到服务器日志中出现异常。 不能使用移动变换来映射复杂类型(业务对象)。 要在业务对象之间进行映射,需要子映射。
可以使用定制变换来提供自己的变换逻辑。定制变换使用 Java 代码。如果有源字段和目标字段,请使用定制变换。 如果没有源字段,那么可以使用定制分配变换,这类似于分配变换,不同在于使用 Java 代码来决定要分配的值。如果没有要设置的目标字段,那么可以使用定制调出变换来调用 Java 代码。 在其他变换运行之前,Java 代码可能会对值进行初始化。
在某些情况下,即使源或目标是弱类型,也可以使用移动、子映射和定制变换。如果某个字段可以包含多种类型的数据元素,那么该字段为弱类型。例如,当源或目标元素的类型为 anyType 时,可以使用子映射。 但是,如果元数据与目标数据不兼容,那么在运行时将发生异常。
用法
- 将输入消息类型变换为其他输出消息类型。例如,如果调解流以一个操作开始,但以另一个操作结束,并且第二个操作具有不同自变量类型。
- 变更消息的内容,而不更改消息类型。
- 使用定制变换将自己的逻辑应用于消息变换。
- 复用现有业务对象映射。可以将映射复用为顶级映射或子映射。
- 将定义为关系的映射应用于消息内容。 可以创建并复用关系。
如果在调用数据库查找调解原语前后需要操作数据,那么“业务对象映射”调解原语可能有用。
可以使用“映射”原语或“业务对象映射”调解原语来变换消息。主要差异在于,业务对象映射调解原语使用服务数据对象 (SDO) 对业务对象执行变换,而映射调解原语在 XML 中(使用样式表)和业务对象中(使用服务数据对象)均可执行变换。
如果您具有现有 XML 映射、XSL 样式表或业务对象映射,那么可以使用“映射”调解原语对其进行复用。如果您具有现有业务对象映射,那么可以使用“业务对象映射”调解原语对其进行复用。 某些类型的变换在 XSL 中更易于执行,而其他变换则使用业务对象映射来执行。
