我目前正在BizTalk Server 2010中实施EDI解决方案。 这是场景:
BizTalk负责X.400邮箱与客户ERP软件之间正确的邮件路由。它还用于使用SharePoint Web服务将有关已交换邮件的信息放入SharePoint网站 我正在使用角色链接和BizTalk方管理来应用正确的设置(在UNB6段中发送端口,密码等)。
现在我有以下问题:
当我尝试从客户的ERP系统获取传出的INVOIC消息时,在业务流程中提取相关信息并将其写入SharePoint站点,使用EDI接收管道的接收端口将被暂停,并显示以下错误消息:
An output message of the component "EDI disassembler" in receive pipeline
"**********.Pipelines.FileNamePromotionEDIReceivePipeline, **********.Pipelines,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=****************" is suspended
due to the following error:
Error: 1 (Miscellaneous error)
33: Invalid occurence outside message, package or group.
The sequence number of the suspended message is 1.
这是因为消息在每个段分隔符后使用CR和LF作为后缀。现在我可以将CR和LF的ASCII十六进制代码添加到管道的“EfactDelimiters”设置,但问题是还有其他没有CR和LF的消息,然后无法使用相同的管道接收。顺便说一下,当我使用管道获取其中一条而没有 CR和LF时没有 CR和LF设置为分隔符,接收端口也被暂停,这次使用点而不是逗号作为小数分隔符产生的错误消息(尽管我在管道中启用了“UseDotAsDecimalSeparator”选项)。同样,只有改变EfactDelimiters才有帮助。
我认为派对协议中的“字符集和分隔符”页面应该完全可以:为每个业务方单独设置分隔符。但是我在这些设置中所做的更改似乎没有任何效果。我将“UNA6后缀”设置为“CR LF”,将“十进制表示法(UNA3)”设置为“。(十进制)”,重新启动主机实例......同样的问题。
有人可以帮忙吗?
答案 0 :(得分:0)
我从未使用过biztalk,但我知道我的EDIFACT,据我所知,那些包含CR / LF的消息在语法上是错误的。 UNA6后缀似乎是微软的补充,因为我在UNECE的EDIFACT官方文档中找不到它的痕迹。
通常,您希望在EDIFACT消息中用作特殊字符的字符由特殊(optinal)UNA
段设置,该段始终位于第一位。当你写的时候,你设置了分隔符/分隔符,我真的不知道,你的意思是什么,因为它可以指代为创建的消息设置选项(消息中使用了分隔符),设置分隔符用于接收程序解析,或者它可以引用UNA
段中打印的字符。
知道,在UNA
段中,我无法知道,指示使用任何UNA6后缀(如文档中明确说明的那样,UNA
段必须是正好有9个字符的长度,请参阅8.3 Interchange formatting rules)。这导致我得出结论,即您为创建的消息设置选项。如果可以避免,我不建议使用UNA6后缀。人类阅读信息可能会很好,但它不属于那里,对机器来说也没用。
如果接收程序没有选择允许CR / LF的可选出现,并且你无法避免将这些消息混合在一起,除了某种方式插入一个小程序,我看不到别的办法CR / LF。
当然,最重要的原则是使发送和接收程序以相同的语法进行通话,否则无法正常工作。小数分隔符的问题也是如此。从Syntax rules, 10.1开始,允许使用逗号或点,这是一个非常宽松的定义。如果您想要保存,请发送UNA
段,指定您使用的段,然后仅使用该段。
我不太确定,这对于解决具体问题有多大帮助,因为它可能只是一个关于如何配置 biztalk 的问题,但我认为应该提供一些背景信息很有用。