2013-02-14 80 views
2

我目前正在執行的BizTalk Server的EDI解決方案2010年 這是該方案:設置EDIFACT分隔符

的BizTalk負責的正確消息的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」,將「Decimal Notation(UNA3)」設置爲「。(Decimal)」,重啓主機實例...同樣的問題。

任何人都可以幫忙嗎?

回答

0

我從來沒有使用過的BizTalk,但我知道我的EDIFACT,而據我所知,包含CR/LF那些消息是語法錯誤。 UNA6後綴似乎是微軟的新增功能,因爲我在EDIFACT的官方文檔中找不到它的痕跡UNECE

通常情況下,您想在EDIFACT消息中用作特殊字符的字符由特殊(可選)UNA段設置,該段始終優先。當你寫,你設置的分隔符/分隔符,我真的不知道,你這是什麼意思,因爲它可能是指既可以設置所創建的消息的選項(在郵件中使用了哪些分隔符),設置分隔符用於接收程序解析,或者可以引用在UNA段中打印的字符。

知道,在UNA段中,我無法知道,指示使用任何UNA6後綴(正如文檔中明確指出的那樣,UNA段必須正好爲9個字符的長度,請參閱8.3 Interchange formatting rules)。這導致我得出結論,即爲創建的消息設置選項。如果可以避免,我不會建議使用UNA6後綴。對於人類來說,閱讀信息可能會很好,但它不屬於那裏,對機器閱讀沒有用處。

如果接收程序沒有選擇允許可選地出現CR/LF,並且你不能避免混合使用這些消息,除了以某種方式插入一個小程序擺脫CR/LF。

當然,最重要的原則是使發送和接收程序以相同的語法進行交談,否則它將無法工作。小數分隔符的問題同樣如此。從Syntax rules, 10.1開始,允許使用逗號或點,這是一個相當鬆散的定義。如果你想保存,發送一個UNA段,指定你使用哪一個,然後只使用那個。

我不是很確定,這對於具體問題有多大幫助,因爲它可能只是一個問題,如何配置biztalk,但我的一些背景信息應該是有用的。