当Microsoft BizTalk Accelerator for SWIFT (A4SWIFT) 反汇编程序处理(分析和验证)消息时,它会提升该消息的属性。 当A4SWIFT作为入站批处理的一部分收到消息时,这些提升的属性提供了有关消息正确性和有效性的信息,以及与批处理相关的信息。 有关这些属性的完整列表,请参阅 A4SWIFT_* 已推广属性。
与本机 BizTalk 反汇编程序不同,A4SWIFT 反汇编程序在处理过程中即使出现错误或故障,也不会挂起消息。 相反,它会将失败的消息传送到 MessageBox 数据库,就像处理有效消息一样。 因此,失败的消息可以将错误详细信息传递到 MessageBox 数据库中。 可以从 MessageBox 数据库检索消息、处理和修复消息,甚至将消息重新提交回 MessageBox 数据库。 如果消息实际被挂起,其中大多数任务将无法执行。
可以通过其已提升的属性将A4SWIFT发布到 MessageBox 数据库的消息标识为异常状态。 处理失败的消息时,SWIFT 反汇编程序在将消息发布到 MessageBox 数据库之前,会填充并提升 A4SWIFT_Failed 属性,以及以下一个或多个其他属性:
A4SWIFT_ParseErrors 指示在处理过程中遇到的分析错误(如格式不正确的数据)的数量。
A4SWIFT_XmlValidationErrors 指示在处理过程中遇到的 XML 验证错误数(例如无效数据或与架构相关的错误类型)。
A4SWIFT_BreValidationErrors 指示在处理过程中遇到的业务规则引擎(BRE)验证错误数(例如破坏 SWIFT 网络规则的数据)。
当 上述任何属性的计数大于零时,A4SWIFT_Failed为 true ;如果计数等于零,则为 false 。
这些属性都是 Microsoft.Solutions.A4SWIFT.Property 命名空间的一部分。 有关这些提升属性和其他推广属性的详细信息,请参阅 A4SWIFT_* 提升属性。
若要捕获或检索失败的消息,需要为发送端口或业务流程接收形状创建筛选器表达式(订阅),这些形状包含上面列出的某些属性,作为表达式的 AND 子句。
例如,若要订阅所有失败的消息,请添加以下子句(如果有其他子句,则添加 AND 子句):
Microsoft.Solutions.A4SWIFT.Property.A4SWIFT_Failed == true
若要订阅仅包含解析失败的消息,请添加以下子句。
和 Microsoft.Solutions.A4SWIFT.Property.A4SWIFT_Failed == true,和 Microsoft.Solutions.A4SWIFT.Property.A4SWIFT_XmlValidationErrors == 0,和 Microsoft.Solutions.A4SWIFT.Property.A4SWIFT_BreValidationErrors == 0;
相反,对于只处理有效消息的发送端口或业务流程,请在其筛选器表达式中包括 "AND Microsoft.Solutions.A4SWIFT.Property.A4SWIFT_Failed == false" 作为一个子句。
注释
如果订阅重叠,A4SWIFT将满足所有订阅。 也就是说,如果多个服务(发送端口或业务流程)具有特定消息满足的筛选器表达式,则所有这些服务都将接收相同的消息。 例如,如果一个发送端口订阅了所有失败的消息,而一个业务流程仅订阅了解析失败的消息,那么当A4SWIFT在处理消息时遇到解析错误时,这两个订阅条件都会得到满足。 请务必消除跨服务的订阅中不需要的重叠。
注释
如果A4SWIFT接收并处理消息,并将该消息发布到MessageBox数据库,但该消息不满足任何订阅,A4SWIFT会因缺少订阅而挂起该消息,并显示BizTalk Server错误。 例如,如果你有一个服务订阅所有“A4SWIFT_Failed == false”的消息,但没有任何服务订阅“A4SWIFT_Failed == true”的消息,那么在解析或验证失败的情况下,由于缺少订阅者,这些消息确实会被暂停。 此方案实际上使你能够模仿传统挂起失败的消息。 请务必订阅所有您不想暂停的消息。 有关 MessageBox 数据库订阅、发送端口、业务流程和筛选器表达式的其他详细信息,请参阅 BizTalk Server 帮助。
本部分包含: