2

現在、BizTalkServer2010に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 16進コードをパイプラインの「EfactDelimiters」設定に追加できましたが、問題は、CRとLFのない他のメッセージがあり、同じパイプラインを使用して受信できなかったことです。ちなみに、 CRとLFを区切り文字として設定せずに、パイプラインを使用してCRとLFなしでこれらのメッセージのいずれかをフェッチすると、受信ポートも一時停止されます。今回は、コンマの代わりにドットを使用した結果としてエラーメッセージが表示されます。小数点記号(パイプラインで「UseDotAsDecimalSeparator」オプションを有効にしましたが)。繰り返しますが、EfactDelimitersを変更するだけで役立ちます。

パーティー契約の「文字セットと区切り文字」ページは、まさにそれを可能にするはずだと思いました。ビジネスパーティーごとに個別に区切り文字を設定することです。しかし、これらの設定で行った変更は、まったく効果がないようです。「UNA6サフィックス」を「CRLF」に設定し、「Decimal Notation(UNA3)」を「。(Decimal)」に設定して、ホストインスタンスを再起動します...同じ問題。

誰か助けてもらえますか?

4

1 に答える 1

0

私は biztalk を使用したことはありませんが、EDIFACT は知っています。私の知る限り、CR/LF を含むメッセージは構文的に間違っています。UNECEの EDIFACT に関する公式ドキュメントにその痕跡が見つからないため、UNA6 サフィックスは Microsoft による追加のようです。

通常、EDIFACT メッセージで特殊文字として使用する文字は、UNA常に最初に来る特殊 (オプション) セグメントによって設定されます。作成するメッセージのオプションの設定 (メッセージで使用される区切り文字)、区切り文字の設定のいずれかを参照できるため、それが何を意味するのかはわかりません。受信プログラムによる解析に使用されるか、UNAセグメントに出力される文字を参照できます。

セグメントでUNAは、UNA6サフィックスの使用を示す方法がないことを知っておいてください(ドキュメントで明確に述べられているように、UNAセグメントは正確に9文字の長さでなければなりません.8.3インターチェンジフォーマットルールを参照してください)。これは、作成されたメッセージのオプションを設定するという結論につながります。回避できるのであれば、UNA6 サフィックスを使用することはお勧めしません。人間がメッセージを読むのは良いことかもしれませんが、そこに属しておらず、機械が読むのは役に立ちません。

受信プログラムに CR/LF の任意の発生を許可するオプションがなく、メッセージの種類にそれらの混合を避けることができない場合、CR を取り除く小さなプログラムを何らかの形で挿入する以外に方法がありません。 /LF.

もちろん、最も重要な原則は、送信プログラムと受信プログラムが同じ構文で話せるようにすることです。そうしないと、動作しません。同じことが小数点記号の問題にも当てはまります。構文規則 10.1では、コンマまたはドットのいずれかが許可されていますが、これはかなり緩い定義です。保存側になりたい場合は、UNA使用するセグメントを指定してセグメントを送信し、そのセグメントのみを使用します。

これが特定の問題にどれだけ役立つかはよくわかりませんが、biztalkの構成方法に関する質問にすぎない可能性がありますが、いくつかの背景情報が役立つはずです。

于 2013-07-16T15:23:56.000 に答える