使用自定义文本对字符进行编码
从 BizTalk Server 2013 R2 开始,可以在字段或段中使用“FreeText”。 不分析“FreeText”字段/段中的数据。
需要了解的事项
Separator | 行为 | 示例 |
---|---|---|
~:重复分隔符 | 在字段中,重复 (~) 被视为重复分隔符。 在非自由段中,重复 (~) 被视为重复分隔符。 在自由段中,重复 (~) 被视为自由文本的一部分,而不是新的重复。 | 在以下示例中,FRE 为 free Segment。 它可以包含任意字符作为自由文本,包括 ~。 任何其他重复 (~) 不被视为重复分隔符,并被视为自由文本内容。 即使自由段的子级不可重复且包含重复 (~) ,验证也会成功。 FRE 示例: FRE |Foo&^|Foo&^|Foo&^|Foo&^~Foo&^|Foo&^|Foo&^|Foo&^ 在以下示例中,EVN4 定义为自由文本,因为它包含 &^。 遇到“|”分隔符时,它被视为当前自由文本的末尾。 EVN 示例: EVN||||Foo&^Foo&^Foo&^Foo&^Foo&^|| 在以下示例中,EVN5 的第一个子级定义为自由文本,因为它包含 &。 遇到“^”分隔符时,它被视为当前自由文本的末尾。 EVN5 示例: EVN|||||Foo&Foo&Foo&Foo&Foo&^5.2| 在以下示例中,5.2.1 和 5.2.2 不能有任何分隔符作为自由文本,即使它在架构中定义为 FreeText 也是如此。 5.2.1 和 5.2.2 示例: EVN|||||Foo1^5.2.1&5.2.2| 在以下示例中,假设 EVN4 可以重复,并且是自由文本类型。 Foo1&^ 被视为第一次重复, Foo2&^ 被视为第二次重复。 如果 EVN4 不可重复 (MaxOccurs = 1) ,则验证失败(如果它包含 ~),即使它是自由文本类型 (类似于非自由文本字段) 。 EVN4 示例: EVN ||||Foo1&^~ Foo2&^ || |
|:字段分隔符 | 如果在可用段的段标记之后缺少字段分隔符,则验证成功。 | 在以下示例中,FRE 是自由文本类型。 可以使用或不带“|”字段分隔符的 FRE 段标记后立即启动自由文本内容。 这两个示例都成功: FREabc FRE|abc 在以下示例中,验证成功: 将消息输入到 DASM: FRE|abcd DASM 的输出: <SegmentData>|abcd</SegmentData> ASM 的输出: FRE|abcd 将消息输入到 DASM: FREabcd DASM 的输出: <SegmentData>abcd</SegmentData> ASM 的输出: FREabcd |
Parent-Child 可选 | 父子可选验证规则仍适用。 | 假设父级是可选的,其一个子级是必需的,然后: - 如果未填充其他子级和必需的子级,则消息验证成功。 - 如果至少填充了一个子级,则还应填充强制子级。 否则,消息验证将失败。 在以下示例中,字段 1 作为可选字段。 其 1.a 子级是可选的,是自由文本类型。 其 1.b 子级是必需的: xyz|1.a^1.b|2 在以下示例消息中, dfssdf&sdf 被视为单个元素 - 1.a。 分析程序检查是否存在 1.b。 |当达到 时,它假定未填充 1.b 并且消息验证失败: xyz|dfssdf&sdf|2 |
MSH、FSH 和 BSH 段 | 对于所有字段,将忽略自由文本。 这些段对应于页眉部分。 验证会像平时一样发生,即使它们被定义为自由文本也是如此。 | |
\:转义字符 | 如果 元素中有偶数个“\”,则验证成功 (即使它们不是连续) 。 如果有奇数,则验证失败。 对于非自由文本字段,相同的行为将继续存在。 对于“自由文本”字段,没有对数字进行验证;它被视为自由文本内容。 |
在这些示例中,消息分隔符提供了有关分隔符的详细信息。
使用自由文本
在 Visual Studio 的项目中,打开架构。
右键单击记录,选择“ 插入架构节点”,然后选择“ 子字段元素”。
在“属性”中,选择“ 数据类型”,然后选择“ 自由文本” (SimpleType) 。