消息集:MRM 域中的物理格式
消息集中的每个消息定义文件都对消息的逻辑结构和物理格式进行了描述,后者用于描述消息位流在传输过程中的准确外观。
如果您使用的是 MRM 域或者 IDOC 域,那么必须提供物理格式信息,因为它可以告知解析器解析消息位流的确切方式。
您可以将消息视为从一个地方发送到另一个地方的数据包。 消息的发送方和接收方将就消息的结构和消息中的每个字段的含义达成一致。 这是平台和协议独立的逻辑结构。
发送方和接收方也将就消息的物理表示(数据是如何在线型上物理布局的)达成一致。 例如,如果您定义了传递关于某人银行帐户的借方的消息,它可以用不同的物理格式表示(例如 XML 或 COBOL 副本等固定结构)。 对于这两种情况,意义和数据是相同的:仅更改了物理布局。
如果您使用的是 MRM 域,那么可以使用指定的物理格式对各种不同的物理表示进行建模。
- 使用定制连线格式 (CWF) 物理格式可以对应用程序中以 C、COBOL、PL/I 和其他语言编写的固定格式的消息进行建模。 此支持包含直接从 C 头文件或 COBOL 副本创建消息模型的能力。
- 通过使用标记定界格式(TDS)物理格式,对建模格式化的文本消息(可能带有标记标识的字段内容和/或由特定的定界符分隔)的支持。 该支持足够强大,可以用来对 SWIFT、EDIFACT 和 X12 之类的业界标准进行建模。
- 使用 XML 物理格式可以对 XML 消息(包括那些使用 XML 名称空间的 XML 消息)进行建模。 此支持包含直接从 XML DTD 或 XML 模式文件创建消息模型的能力。
不同的物理表示
以下示例说明简单的逻辑消息如何可以有不同的物理表示。
逻辑模型定义消息的结构和顺序。 在下面的示例中,这三个字段是简单整数,C 跟在 B 后面,B 跟在 A 后面:
int A;
int B;
int C;
- 用于此逻辑消息的典型定制连线格式表示将是 12 字节的数据,每个
A、B和C占用 4 个字节。 或者,可能A是 4 个字节长,但B和C只有 2 个字节长。 您以 CWF 属性的方式为消息中的每个字段提供精确的物理信息。 - TDS 允许对多种不同的表示进行建模。 每个整数前面都可以有一个用于对其进行标识的标记以及一个用于终止它的分隔符,如下所示:
替代表示可以依赖于排序的数据,因此只需指定终止定界符,如下所示:{A_tag:xxxxxxxx;B_tag:xxxxxxxx;C_tag:xxxxxxxx}
您提供精度标识方式为 TDS 属性。[xxxxxxxx;xxxxxxxx;xxxxxxxx] - 此模型的典型 XML 表示如下所示:
其中<Msg><A>xxxxxxxx</A><B>xxxxxxxx</B><C>xxxxxxxx</C></Msg>xxxxxxxx是表示为字符串的整数的值(XML 只处理字符串)。 替代表示可能如下:
其中整数的值存储为 XML 属性而不是 XML 元素。 您以 XML 属性的方式为消息中的每个字段提供精确的 XML 渲染。<Msg A="xxxxxxxx" B="xxxxxxxx" C="xxxxxxxx"/>
这显示逻辑模型没有更改。 它是常量,无论您使用 MRM 域提供的物理格式支持选择在它顶部建模的物理表示是什么。 MRM 解析器能根据您定义的物理格式层将消息从输入物理表示转换为任何数量的输出表示。
创建物理格式
创建消息集后,您可以创建物理格式。 您使用“消息集”编辑器这样做。 接下来,当您保存 messageSet.mset 文件时,任何新的物理格式都将添加到该消息集的所有消息定义文件内的所有对象中。
下次在消息定义文件中编辑对象时,您将在“属性”选项卡的“属性层次结构”窗格中看到物理格式。 如果单击对象的物理格式,那么系统将向您显示一张属性表,您可以在其中输入该对象的该物理格式的信息。
并非所有对象在所有物理格式中都有属性。 例如:
- CWF 属性仅适用于局部元素和属性,以及元素引用和属性引用。
- 复杂类型和组只有 TDS 属性。
- 消息只有 XML 属性。
产生这些差异的原因在于每种物理格式的性质不同,每种物理格式的部分中对这些差异进行了更详细地说明。
您可在给定的消息集中创建的物理格式的个数没有限制。 但是,如果您想要在同一消息集中混合不同种类的物理格式,有一些建议是要应用的。
如果不再需要,物理格式可被删除。