拆分入站消息
SWIFT 反汇编程序能够对入站批处理(即包含多个 SWIFT 消息的文件或消息)进行处理或批量拆分。 使用同名 SWIFT 反汇编程序配置属性启用入站拆件功能。 启用入站拆分批处理后,SWIFT 反汇编程序将期望所有接收到的消息为包含多个 SWIFT 消息的批次。 批次可以包含或不包含批次信封(批头部和批尾部),批次中的每个 SWIFT 报文可以包含或不包含报文信封(报文头部和报文尾部)。 可以使用以下 SWIFT 反汇编程序配置属性来配置这些批处理属性(格式):
批次头架构
批量预告片架构
消息标头架构
消息预告片架构
注释
将上述任何属性设置为“None”表示入站批处理不包括该特定部件。
SWIFT 反汇编程序要求所有入站批处理具有以下结构:
批处理标题
消息标头
SWIFT 交换/消息(SWIFT 块 1 到 5)
消息预告片
Batch 预告片
在此结构中,可以将“消息块”视为 消息头 – SWIFT 交换 – 消息尾部 部分。 多个“消息块”构成了一批 SWIFT 消息。 批处理标头、消息标头、消息预告片和批处理预告片是可选的,但必须跨重复项保持一致。
注释
不要将邮件信封(邮件头和邮件预告片)与 SWIFT 标头和预告片块混淆。 在批处理上下文中,您应将 SWIFT 消息(通信)(包括 SWIFT 标题和尾部块)视为一个整体的(不可分的)单元。 在此上下文中,消息标头和消息尾部是指包装每个 SWIFT 消息的信封。
若要更正式地表达此结构、其选项及其可重复性,请考虑如何定义批处理A4SWIFT:
批处理标头由 BH 表示
消息标头由 MH 表示
SWIFT 交换由 SI 表示
消息预告片由 MT 表示
Batch 预告片 由 BT 表示。
表示预期批处理结构的表达式如下所示:
[BH] ([MH] SI [MT])* [BT]
方括号 (
[ ]
) 指示该部件是可选的。 星号 \ 指示该块可重复。 无论谁生成消息批处理,都必须在每个重复的 () 中一致地使用消息标头 (MH) 和预告片 ([MH] SI [MT]
MT)。SWIFT 反汇编程序能够处理任何符合上述结构的入站批处理,因为结构中的每个部分都符合平面文件架构。 但是,如果不使用可选的批处理标头/尾部和消息头/尾部,则消息将不符合这些架构。 因此,仅包含连续 SWIFT 消息的批处理将具有批处理头部架构、批处理尾部架构、消息头部架构和消息尾部架构属性设置为“无”。
自定义用于批处理的架构
可以自定义批处理标头/尾部和消息头/尾部的模式。 以下是一个批次的示例:
4
SWIFT Message # 1
$
SWIFT Message # 2
$
SWIFT Message # 3
$
SWIFT Message # 4
$
若要处理这种类型的批处理,请设置批处理的架构属性,如下所示:
将 Batch Header Schema 属性设置为平面文件架构,该架构解析出一个由回车符分隔的单个数字,即消息计数。
将消息尾部架构设置为解析单个 $ 符号和回车符的平面文件架构。
将其余信封架构(Batch 尾部架构和消息标头架构)设置为“无”。
可以通过创建和指定平面文件信封架构的适当组合来配置 SWIFT 反汇编程序,使其处理几乎所有 SWIFT 消息批处理。 此功能非常灵活。
SWIFT 反汇编程序始终尝试完成整个批处理的处理,即使它在此过程中遇到错误。 这使它可以一次性收集和报告尽可能多的错误。 为了执行这种“尽最大努力”的启发式方法,SWIFT 反汇编程序在遇到新部件时,或是当发生解析错误时,必须做出特定的决策和假设,以便选择相应的模式来使用。 根据分析错误的性质和位置以及信封架构与 SWIFT 交换架构之间的不明确/相似性,选择正确的架构并不总是可能的。 在某些情况下,可以使用设计良好的信封架构最大程度地减少选择错误架构的可能性。 如果反汇编程序遇到致命分析错误,或者反汇编程序无法确定正确的架构,则反汇编程序将失败批处理而不处理剩余数据。
在启用入站拆批(设置为True)时,SWIFT 反汇编程序使用为批信封(批处理头架构和批处理尾架构)和消息信封(消息头架构和消息尾架构)以及为解析批中的 SWIFT 消息(交换文件)指定的架构来分析批处理。 对于批中的 SWIFT 消息,可以像处理单个非批处理消息那样,通过指定 SWIFT 标头架构来动态发现和加载消息类型和架构。 有关 SWIFT 反汇编程序如何执行架构解析的详细信息,请参阅 动态消息类型发现和架构解析。
SWIFT 反汇编程序单独分析并验证入站批处理中的每个 SWIFT 消息。 它执行以下批处理序列:
如果指定了批处理标头架构,则分析批处理标头。
如果指定了消息头架构,则解析消息信封头。
解析 SWIFT 信息交换(报文)。
如果已启用 XML 验证,则验证 SWIFT 消息是否符合 XML 约束。
如果已启用 BRE 验证,则根据 BRE 策略(SWIFT 网络和使用情况规则)验证 SWIFT 消息。
如果指定了消息预告片架构,则分析消息信封预告片。
重复步骤 2 到 6,直到反汇编程序在批处理中找不到更多消息。
如果已指定 Batch 预告片架构,则分析批处理预告片。
可以将 SWIFT 反汇编程序配置为对它通过以下 SWIFT 反汇编程序配置属性分析和验证的批处理数据执行不同的操作。
Fragmentation 属性确定 SWIFT 反汇编程序是否应单独将批中的每个消息发布到 MessageBox 数据库(即,对于每个消息,在出现上述步骤 6 后),或者是否应完成所有步骤 1 到 8,然后以本机形式(输入的确切副本)发布整个批, 作为 MessageBox 数据库的单个消息。 将 Fragmentation 设置为 True ,以启用碎片化并从批处理中单独发布消息。 将 碎片化 设置为 False 以禁用碎片化,并在处理整个批处理后以原始形式将整个批处理作为一个单一消息发布。 通常,当只需要 BizTalk Accelerator for SWIFT (A4SWIFT) 分析并验证入站批处理,且要在它们接收时的同一形式内处理失败或转发的情况下,将 碎片 设置为 禁用。 通常,你会在需要 A4SWIFT 在解析和验证后转换或修改批处理中的消息,或在需要 A4SWIFT 将批处理中的消息重新排序为不同于原始接收顺序的情况下,将 分段 设置为 已启用。 对于入站批处理包含具有不同最终目标的消息的情况,还可以将 分片 设置为 启用。
Preserve Batch Header /Preserve Batch Trailer 属性确定 SWIFT 解包工具在解析批处理后是否应放弃或保留批处理信封(标头和结束)数据。 如果将 Preserve Batch Header 或 Preserve Batch Trailer 设置为 True,反汇编程序会将相应的批处理部分(已分析的 XML)作为单个消息发布到 MessageBox 数据库。 反汇编程序在多部分消息的正文部分发布数据。 反汇编程序会提升特殊上下文属性,从而使 BizTalk Server 能够将这些消息与它们来自的批次相关联,并识别它们在批次中的序列位置(批次头的第一个位置,批次尾的最后一个位置)。 如果将 Preserve Batch Header 或 Preserve Batch Trailer 设置为 False,则反汇编程序会在分析后放弃相应的批处理部分(已分析的数据)。
注释
只有在碎片化功能启用时,这些配置属性才有效(碎片化 设置为 True)。 当碎片化被禁用时,反汇编程序会以本机形式将整个批处理的确切副本发布到 MessageBox 数据库,因此保留设置就不重要了(所有内容都被保留)。
“保留消息头 / 保留消息预告片”属性确定 SWIFT 反汇编程序在分析邮件信封后是否应放弃或保留消息信封(消息头和预告片)。 如果将 “保留消息头”或“保留消息预告片 ”设置为 True,反汇编程序会将相应的批处理部分(已分析的 XML)与 包装的单个 SWIFT 消息一起发布到 MessageBox 数据库。 反汇编程序在多部分消息的 标头 部分发布邮件信封头。 反汇编程序在多部分消息的 预告片 中发布邮件信封预告片。 反汇编程序在同一个多部分消息的正文部分发布在邮件信封中包含的 SWIFT 消息。 反汇编程序会提升特殊的上下文属性,以便 BizTalk Server 可以将这些消息与它们来自的批处理相关联,以及它们在批处理中的序号位置。 如果将 “保留消息标头”或“保留消息预告片 ”设置为 False,则反汇编程序会在分析后放弃相应的批处理部分(已分析的数据)。
注释
仅当启用分片时,这些配置属性才有效(分片 设置为 True)。 碎片化被禁用时,反汇编工具会以本机形式将完整的批处理副本发布到 MessageBox数据库,因此保留设置不重要(所有内容都保留)。
有关每个配置属性以及其他使用情况和配置信息的详细信息,请参阅 SWIFT 反汇编程序配置属性。 有关 MessageBox 数据库发布和多部分消息的详细信息,请参阅 BizTalk Server 帮助。