このトピックでは、EDI 送信パイプラインでの処理に関する既知の問題について説明します。
X12 暗黙の小数点により、長さの検証が失敗する
症状:
EDI 送信パイプラインが中間 XML の base-10 数値を送信 EDI インターチェンジの Nn 形式の数値に変換すると、XML インターチェンジは長さの検証に失敗します。
考えられる原因
X12 でエンコードされた EDI インターチェンジをシリアル化する場合、EDI 送信パイプラインは常に、base-10 数値を、暗黙的な小数点を持つ Nn 形式の数値に変換します。 たとえば、中間 XML ファイル 12.34 に値がある場合、EDI 送信パイプラインは、数値型 N2 として指定されている場合、EDI インターチェンジ内の値を 1234 に変換します。 10 を底とする数値の長さは、Nn 形式の数値の長さより 1 大きくなります。 Nn 形式の数値の長さが最大の場合、中間 XML の base-10 数値は XML の長さの検証に失敗する可能性があります。
これは、X12 でエンコードされたインターチェンジに関する問題にすぎません。
解決策
XML 番号の最大長の値に値 1 を追加します。
制御番号をリセット、アーカイブ、または消去する必要がある場合があります
コントロール番号がフィールドの長さの制限に達すると、BizTalk Server はエラーを発生させ、インターチェンジを中断します。 [EDI プロパティ] または [EDI グローバル プロパティ] ダイアログ ボックスに入力した制御番号をリセットする必要があります。
制御番号は、BizTalk MessageBox データベース内の dbo.EdiSequenceNumbers テーブルに保存されます。 必要に応じて、テーブルから制御番号を消去するか、コントロール番号をアーカイブして、このデータベース テーブルを管理する必要があります。
[EDI のプロパティ] ダイアログ ボックスで [ 制限外の場合に下限にリセット ] を選択して、制御番号の自動リセットを有効にすることもできます。
コンテキスト プロパティ名のデータ要素名にピリオドではなくアンダースコアが含まれている
EDI セグメント内のデータ要素の名前には、UNB2 Sender セグメントの識別フィールドである UNB2.1 などのピリオドが含まれています。 ただし、データ要素名が EDI コンテキスト プロパティの一部として含まれている場合 (送信ポートのフィルター式など)、ピリオドはアンダースコアに置き換えられます。 たとえば、Sender Identification データ要素のコンテキストプロパティは EDI.UNB2_1 であり、EDI.UNB2.1 ではありません。 その理由は、コンテキスト プロパティ名でピリオドがサポートされていないためです。
データ要素のコンテキスト プロパティ値には、フィルター式の先頭または末尾のスペースを含めることはできません
EDI インターチェンジのエンベロープ内のデータ要素に先頭または末尾のスペースが含まれており、受信パイプラインがそのデータ要素の値を持つコンテキスト プロパティを昇格させる場合、受信パイプラインはコンテキスト プロパティから先頭または末尾のスペースを削除します。 その結果、そのコンテキスト プロパティを使用してフィルター式を作成する場合は、先頭または末尾のスペースを含まないプロパティの値を入力する必要があります。 フィルター式に先頭または末尾のスペースを含める場合、フィルター式はコンテキスト プロパティとの一致では解決されません。このプロパティには先頭または末尾のスペースは含まれません。
保存されたインターチェンジに対するインターチェンジ受信者プロパティとして既定のパーティを設定すると、送信パイプラインが失敗する可能性があります。
BizTalk Server が保持する必要があるバッチインターチェンジを受信した場合 (インターチェンジがエラー時に中断された状態)、インターチェンジの受信者としてのパーティのプロパティが既定値に設定されている場合、インターチェンジをサブスクライブする送信パイプラインは失敗します。 ISA5、Sender 修飾子、ISA6、Sender 識別子などのこれらのプロパティは、有効な値に設定する必要があります。 BizTalk Server は、無効なパーティ構成のためにメッセージをシリアル化できなかったことを示すエラーを投稿します。 保持されているインターチェンジのヘッダーに Sender 修飾子や Sender 識別子などの必要な構成設定があるため、この処理は正しくありません。
メッセージ内の 10 進表記は、Send-Side パーティまたはグローバル設定で別の 10 進表記を指定した場合に変更されます
インターチェンジで使用される 10 進表記が、UNA3 パーティ プロパティによって送信メッセージに指定された 10 進表記と異なる場合、BizTalk Server は送信のためにインターチェンジをシリアル化するときにインターチェンジのエンベロープで使用される 10 進表記を変更します。 これは、UNA3 party プロパティではなく UNA3 グローバル プロパティが使用される場合にも当てはまるでしょう。 たとえば、受信メッセージで使用される 10 進表記がピリオドで、送信メッセージの 10 進表記を決定する UNA3 パーティ プロパティまたは UNA3 グローバル プロパティでコンマが指定されている場合、BizTalk Server は送信メッセージの 10 進表記をコンマに変更します。
EDI 送信パイプラインをオーケストレーション内から実行できない
BizTalk Server では、通常、オーケストレーション内の Expression 形状で送信パイプラインを実行できます。 ただし、これは EDISend パイプラインまたは AS2EdiSend パイプラインでは機能しません。 これらのパイプラインは、送信ポート内で実行する必要があります。 オーケストレーションの式図形で EDISend パイプラインまたは AS2EdiSend パイプラインを実行しようとすると、パイプラインは送信ポートにバインドされず、メッセージは中断されます。
BizTalk EDI アプリケーションを変更しないでください
BizTalk EDI アプリケーションの成果物を変更または削除することはできません。 このアプリケーションが変更された場合、EDI および AS2 の機能を構成解除して再構成することで、元のアプリケーションに戻す方法はありません。
機能グループ ヘッダー グリッドで既定の行を使用すると、インターチェンジ ヘッダーとグループ ヘッダーの間で Message-Type の不一致が発生する可能性があります。
送信 EDIFACT でエンコードされたインターチェンジの UNH2.1 の値が、UNG および UNH セグメント定義ページのグリッドの "For message type UNH2.1" の値と一致しない場合、メッセージに入力された UNG1 の値が UNH2.1 の値に対応していない可能性があります。
これは、メッセージが既定の行の UNH2.1 要素と一致しない場合でも、BizTalk によってグリッドの既定の行の UNG1 の値がメッセージに設定されるために発生する可能性があります。
送信 X12 でエンコードされたインターチェンジの ST1 の値が、GS および ST セグメント定義ページのグリッドの "FOR ST1" の値と一致しない場合、メッセージに入力された GS1 の値は ST1 の値に基づいて動的に決定されます。
データ要素の文字が無効です
症状:
EDI 送信パイプラインを使用して EDI インターチェンジを送信すると、"データ要素に無効な文字" があることを示すエラーがアプリケーション イベント ログに表示されることがあります。
考えられる原因
このエラーは、ペイロード データに含まれる文字が区切り記号としても使用されている場合に発生する可能性があります。 たとえば、コンポーネントの区切り記号として ':' 文字を使用しているが、ペイロード データにも ':' 文字が含まれている場合です。
これは、X12 でエンコードされたインターチェンジに関する問題にすぎません。
解決策
ペイロード の区切り記号 を EDI パーティのプロパティの [ISA セグメント定義] ページの設定に置き換えて、インターチェンジの送信時にペイロード データで見つかった区切り文字を指定した置換文字に置き換える必要があることを指定します。
たとえば、[ ペイロード内の区切り記号を置き換える ] を選択し、"|" 文字を入力すると、EDI 送信パイプラインを使用してインターチェンジが送信されるときに、ペイロード データ内の区切り文字が発生した場合は '|' 文字に置き換えられます。
こちらもご覧ください
EDI 処理に関する既知の問題
BizTalk Server が EDI メッセージを送信する方法
ウォークスルー (X12): EDI インターチェンジの送信