我们的合作伙伴发送了一个EDIFACT,其中包含一些自定义段。我已经更新了一个现有的edifact模式,使其具有这些自定义段。快乐的日子场景正在发挥作用。我们现在正在尝试实现负面的场景。业务希望BizTalk在交换中处理成功的消息,并为失败的消息引发错误。我没有使用合作伙伴协议。在EDIFACT回退设置中,我设置了inbound batch processing选项,将交换拆分为Transaction sets - suspend transaction set on error。
问题:我的合作伙伴将在同一事务集中发送多个数据(在我们的例子中是多个S01Loop),即UNH-UNT。如果我应用上面的逻辑,整个交换就会失败。
要求:我们希望特定的循环数据失败,而其余的正数据应该通过。
我尝试过的:对于基于HIPAA的edifact文件,有一个叫做subdocument_break的概念。我在XSD中应用了这些注释。不幸的是,它不起作用。
如果没有现成的解决方案,我计划编写一个EDI拆分器管道组件,它将是自定义的平面文件反汇编组件,它将把多个数据拆分成单独的实例。然后,我将使用EDI反汇编程序来解析数据。
如果有人在BizTalk中提供了开箱即用的功能,请让我知道。
发布于 2016-09-23 04:20:13
在这种情况下,子文档拆分不会有任何帮助,因为如果存在语法错误,整个事务集无论如何都会失败。
这是有原因的。如果段的顺序混乱,解析器就不能可靠地确定它的位置。
处理此问题的正确方法是将此类验证移到流程的后面,以便在解析后检测到无效消息。如果贸易伙伴发送的是真正无效的EDI,他们真的需要在自己的一端解决这个问题。
https://stackoverflow.com/questions/39641395
复制相似问题