このトピックでは、検証に関する既知の問題について説明します。
EDI 検証が無効になっている状態でメッセージが中断される
症状:
ペアのルールが違反され、検証が無効になっていますが、メッセージは中断されています(メッセージがシリアル化される予定です)。
考えられる原因
[EDI プロパティ] ダイアログ ボックスの [検証と ACK 生成設定] ノードで EDI 型プロパティの選択が解除されている場合でも、フィールド間/セグメントの検証が実行されます。 検証は、スキーマ注釈で有効になっているために発生します。
解決策
スキーマ注釈の検証を無効にします。
スキーマを編集して再デプロイした後、BizTalk サービスを再起動する必要があります
症状:
BizTalk Server では、スキーマの編集と再デプロイ後に有効なメッセージが正常に処理されません。
考えられる原因
BizTalk Server は、タイムアウトに制限なくスキーマをキャッシュします。
解決策
スキーマを編集して再デプロイしたら、BizTalk Server アプリケーション サービスを再起動します。 また、再デプロイされたスキーマを使用しているパイプラインをホストしているホスト インスタンスを再起動する必要があります。
1 つのパーティーの単一のエンコードの種類のメッセージの処理が中止されました
症状:
1 つのパーティに対する 1 つのエンコードの種類 (X12 や EDIFACT など) のすべてのメッセージの処理が中止されました。 同じパーティの別のエンコードの種類のメッセージ、または別のパーティのメッセージの処理は影響を受けません。
考えられる原因
インターチェンジ、グループ、またはトランザクション セットの制御番号の長さが、許容される最大長を超えています。
X12 メッセージの場合、制御番号の最大長は 9 桁です。 EDIFACT メッセージの場合、制御番号の最大長は 3 つのフィールドに対して 14 桁です。
解決策
影響を受けるパーティの [EDI プロパティ] ダイアログ ボックスの適切なプロパティ ページで、コントロール番号をリセットします。 コントロール番号は、次のプロパティ ページで編集できます。
X12 インターチェンジ制御番号: X12 プロパティの [ISA セグメント定義] ページ(「インターチェンジ受信者」としてのパーティ ノード内)
X12 グループまたはトランザクション セット制御番号: GS および ST セグメント定義ページ (X12 プロパティのインターチェンジ受信側ノードのパーティ)
EDIFACT インターチェンジ制御番号: UNB セグメント定義ページ (EDIFACT プロパティのインターチェンジ受信者ノードとしてのパーティ)
EDIFACT グループまたはトランザクション セット制御番号: UNG および UNH セグメント定義ページ (EDIFACT プロパティのインターチェンジ受信者ノードとしてパーティ内)
BizTalk Server は、7 つのデータ要素を持つ UNH セグメントを持つスキーマを使用して検証します
以前のバージョンの EDIFACT では、UNH セグメントには、UNH セグメントが新しいバージョンで持つ 7 つの要素 (そのうち 3 つは省略可能) ではなく、4 つの要素があります。 BizTalk Server では、検証に 7 つの要素を含む新しいバージョンが使用されます。
複数のクロスフィールド検証ルールに対して生成されたエラー メッセージは、ルールに固有ではありません
メッセージ内のデータ要素に対してスキーマに複数のクロスフィールド検証規則が含まれており、データ要素でエラーが発生した場合は、検証規則ごとに個別のエラーが生成されます。 ただし、これらのエラーはそれぞれ同じエラー コードと説明を持ちます。エラーは検証規則に固有ではありません。
受信時に EDI 型の検証が無効になり、送信時に有効になっている場合、送信パイプラインはメッセージをシリアル化できません
受信側で EDI 型の検証をオフにすると、EDI 受信パイプラインは、メッセージが有効かどうかに関係なく、受信した EDI メッセージから XML メッセージを生成します。 送信側で EDI 検証が有効になっている場合、XML ファイルにエラーが含まれている場合、EDI 送信パイプラインは XML を有効な EDI ファイルに再処理できず、結果としてエラーが生成されます。
EDI 昇格されたプロパティは、アプリケーションが BizTalk EDI アプリケーションへの参照を持っている場合にのみ使用できます
症状:
EDI 名前空間の下の昇格されたプロパティは、オーケストレーションや送信ポートのフィルター条件など、使用しようとしている昇格されたプロパティの一覧には表示されません。
考えられる原因
使用している BizTalk アプリケーションには、BizTalk EDI アプリケーションへの参照がありません。 EDI 昇格されたプロパティのプロパティ スキーマは、BizTalk EDI アプリケーションの Resources フォルダーに含まれる Microsoft.BizTalk.Edi.BaseArtifacts.dllにあります。
解決策
作業中の BizTalk アプリケーションに、BizTalk EDI アプリケーションへの参照を追加します。
コンテキスト プロパティ名のデータ要素名にピリオドではなくアンダースコアが含まれている
EDI セグメント内のデータ要素の名前には、UNB2 Sender セグメントの識別フィールドである UNB2.1 などのピリオドが含まれています。 ただし、データ要素名が EDI コンテキスト プロパティの一部として含まれている場合、ピリオドはアンダースコアに置き換えられます。 たとえば、Sender Identification データ要素のコンテキストプロパティは EDI.UNB2_1 であり、EDI.UNB2.1 ではありません。 その理由は、コンテキスト プロパティ名でピリオドがサポートされていないためです。
無関係な文字列がインスタンス検証エラー メッセージに追加される
インスタンスの検証中にエラーが発生するたびに、エラー メッセージに文字列 "BEC 2004" が追加されます。 この文字列は無視してかまいません。
EDIFACT スキーマ名が Case-Sensitive
スキーマの root_reference データ要素に示されているように、EDIFACT スキーマのスキーマ名は大文字と小文字を区別します。 たとえば、EFACT_D98B_ORDERSとEFACT_d98B_Ordersは 2 つの異なるスキーマになります。
EDI の種類の検証が無効になっている場合でも、無効な EDI メッセージが中断される可能性がある
EDI 構造検証は、EDI の種類の検証が無効になっている場合でも実行されます。 EDI の種類の検証が無効になっている場合でも、基本的な構造検証に失敗したインターチェンジは中断されます。
EDI アセンブラーは、エンベロープ ヘッダーで区切り文字が使用されている場合でも、バッチ処理されていないインターチェンジをシリアル化します。
ヘッダー フィールドとトレーラー フィールドを区切るために使用される区切り文字は、インターチェンジレシーバーとしてパーティに定義されているインターチェンジ、グループ、またはトランザクション セットヘッダーまたはトレーラーフィールドの定義で使用しないでください。 その場合、インターチェンジは、送信側 BizTalk Server の EDI アセンブラーまたは受信側の逆アセンブラーで処理に失敗します。 送信バッチの場合、インターチェンジは EDI アセンブラーで失敗します。これは、アセンブラーがヘッダー コントロール (サービス) スキーマに対してエンベロープを検証するためです。 インターチェンジがバッチ処理されていない場合、EDI アセンブラーによってシリアル化されますが、受信側の逆アセンブラーでの処理は失敗します。
文字セットが一致しない場合、インターチェンジが中断される可能性があります
発信インターチェンジに使用される文字セットは、インターチェンジに挿入されたトランザクション セットの作成に使用される文字セットと同じである必要があります。 そうでない場合は、無効な文字があることを示すエラー メッセージが表示され、インターチェンジが中断される可能性があります。
たとえば、UNOA 文字セットを使用して EDIFACT バッチを作成するが、バッチに追加されたトランザクション セットに小文字が含まれている場合、UNOA では小文字が許可されないため、バッチ処理オーケストレーションによってメッセージが中断されます。
別の例として、X12 インターチェンジに対して "Basic" 文字セットを使用して EDI 送信パイプラインを構成したが、X12 バッチインターチェンジに小文字が含まれる場合、インターチェンジ受信者としてパーティの X12 インターチェンジ開発生成ページで選択された X12 文字セットが "Extended" または "UTF8/Unicode" に設定されているため、エンベロープ設定が適用されると、バッチ処理されたメッセージは中断されます。
UNH2.5 をスキーマ解決に使用するには、スキーマの更新が必要です
受信 EDIFACT インターチェンジのスキーマ解決に UNH2.5 (アソシエーション割り当てコード) を使用する場合は、\Program Files\Microsoft BizTalk Server 20xx\Schema フォルダー内の関連するドキュメント スキーマを更新する必要があります。 root_reference、display_reference、および xs:element 名の既存の値に UNH2.5 の値を追加する必要があります。 たとえば、UNH2.5 が "EAN008" で、EFACT_D96A_INVOIC スキーマを使用している場合は、root_reference、display_reference、および xs:element 名を "EFACT_D96A_INVOIC_EAN008" に設定します。
アップグレードが実行されると、スキーマの圧縮ファイルが置き換えられます
Microsoft BizTalk Server を後のビルドにアップグレードすると、インストール内の MicrosoftEdiXSDTemplates.exe ファイルは、アップグレードに関連付けられている MicrosoftEdiXSDTemplates.exe ファイルに置き換えられます。 古い圧縮ファイルのスキーマを引き続き使用する場合は、古い圧縮ファイルをバックアップしない限り、アップグレード後に圧縮ファイルにアクセスできなくなります。
グループに複数の X12 トランザクション セットが含まれている場合、すべてが同じ種類である必要があります
BizTalk Server では、同じグループ内の異なるトランザクション セットの混在はサポートされていません。 グループに複数のトランザクションが含まれている場合、ST01 の値はすべてのトランザクションで同じである必要があります。
ASCII 以外の区切り記号を含む X12 インターチェンジを受信すると、メッセージが中断される可能性があります
症状:
ASCII 以外の区切り記号値を使用する X12 インターチェンジを受信すると、メッセージが中断され、エラーがアプリケーション イベント ログに書き込まれる可能性があります。
考えられる原因
この問題は、インターチェンジが UTF-8 としてエンコードされていない場合に発生する可能性があります。
解決策
ASCII 以外の区切り記号を含む受信 X12 インターチェンジが UTF-8 としてエンコードされていることを確認します。
こちらもご覧ください
EDI 処理に関する既知の問題
EDI メッセージング
EDI メッセージの検証
EDI スキーマ
EDI スキーマの開発