次の方法で共有


EDI バッチ処理に関する既知の問題

このトピックでは、BizTalk Serverでのバッチ処理に関する既知の問題について説明します。

サブドキュメントの注釈が [はい] に設定されていても、サブドキュメントの分割が実行されない

症状:

HIPAA インターチェンジの HIPAA スキーマ内で、subdocument_creation_break 注釈が [はい] に設定されていても、HIPAA インターチェンジがサブドキュメントに分割されません。

考えられる原因

  • 送信側の受信バッチ処理オプションが "インターチェンジの保持" に設定されました。HIPAA スキーマ内のsubdocument_creation_break注釈が "はい" に設定されている場合でも、HIPAA ドキュメントはサブ文書に分割されません。

  • subdocument_break 注釈は [はい] に設定されていますが、subdocument_creation_break 注釈は [はい] に設定されていません。

    解像度

  • 送信側の [EDI のプロパティ] ダイアログ ボックスの [検証と ACK 生成の設定] ページで、[受信バッチ処理] オプション プロパティを [トランザクション セットとしてインターチェンジを分割する] - [エラー時にトランザクション セットを中断する] または [トランザクション セットとしてインターチェンジを分割する] - [エラー時にインターチェンジを中断] に設定します。

  • subdocument_creation_break 注釈を [はい] に設定しない場合、HIPAA ドキュメントはサブドキュメントに分割されません。

バッチ オーケストレーションがアクティブになっているときに、バッチの構成設定を変更すると、バッチの検証に失敗する場合がある

バッチ処理オーケストレーションがバッチを処理している間にバッチの構成設定を変更した場合、そのバッチに対して新しい構成設定は適用されません。 これにより、送信パイプラインで検証エラーが発生する場合があります。

これらの設定は、[EDI のプロパティ] ダイアログ ボックスの [バッチ] ページにあります。

この問題を解決するには、バッチ処理オーケストレーションに関連付けられたホスト インスタンスを再起動します。 これにより、バッチの構成設定の変更が直ちに適用されます。

BatchControlMessageRecvLoc 受信場所を実行できるのが、32 ビット コンピューター、または 64 ビット コンピューターの WOW のみである

SQL アダプターが機能するのは、32 ビット コンピューターで実行する場合、または 64 ビット コンピューター上の WOW64 エミュレーターで実行する場合のみです。 そのため、セットアップ プログラムによってインストールされ、SQL アダプターを使用する BatchControlMessageRecvLoc 受信場所が機能するのは、32 ビット コンピューターで実行する場合、または 64 ビット コンピューター上の WOW で実行する場合のみです。 この受信場所はバッチ処理に必要です。

64 ビット コンピューター上の WOW で BatchControlMessageRecvLoc 受信場所を実行する場合は、バッチ処理オーケストレーションを別のホストで実行する必要があります。 受信場所と同じホストで実行すると、バッチ処理オーケストレーションが WOW でも実行されるため、64 ビット コンピューターで実行する利点がなくなります。

予期しない送信ポートによってバッチが取得される

バッチ処理オーケストレーションがインターチェンジを発行すると、ToBeBatched = False と DestinationPartyName = <PartyName の 2 つのプロパティが昇格されます>。 これらのプロパティの一方または両方をサブスクライブする送信ポートは、これらのバッチ インターチェンジを取得できます。 送信ポートがこれらの取得対象のバッチ インターチェンジを取得するよう、送信ポートのフィルターを必ず構成してください。

バッチ要素数がバッチに必要なトランザクション セット数より多い場合に、バッチがリリースされないことがある

バッチのリリース条件が、グループまたはインターチェンジごとのトランザクション セット数に基づいている場合は、バッチ要素数が、リリースされるバッチに必要なトランザクション セット数より多くても、バッチがリリースされないことがあります。 これは、受信確認を有効にしており、その受信確認をバッチに追加するようにバッチのフィルター条件を設定している場合に発生します。 この場合、グループ (またはインターチェンジ) 内のバッチ要素数は、グループ (またはインターチェンジ) ごとのトランザクション セット数より多くなります。 その場合は、グループ (またはインターチェンジ) ごとのトランザクション セット数がバッチ リリースに必要な数より少なければ、バッチがリリースされませんが、同時に、バッチ要素数がバッチ リリースに必要なトランザクション セット数よりも多くなります。

[開始] をクリックしたときにバッチ要素が保存されない

症状:

パーティの [バッチ] ページで [開始 ] をクリックすると、バッチのメッセージは収集されませんでした。

考えられる原因

Start がクリックされた datetime は、[アクティブ化] セクションに入力した datetime よりも前でした。 その結果、オーケストレーション インスタンスはアクティブ化されましたが、バッチのメッセージは収集されませんでした。 詳細については、「 送信バッチの構成」を参照してください。

解決策

この問題が発生しているバッチ構成の [バッチ] ページで [ 停止 ] をクリックします。 [アクティブ化] を [すぐに開始] に設定するか、現在の時刻より前の日時を入力して、[開始] をクリックします。 [開始日時] を現在の時刻にリセットするように求められたら、[OK] をクリックします。 BizTalk Server は、その時点でバッチ用のメッセージの収集を開始します。

EDIFACT バッチのバイト数が、使用される文字セットによって異なる

一部の EDIFACT 文字セットで 2 バイト文字である文字が、他の EDIFACT 文字セットでは 1 バイト文字である場合があります。 そのため、インターチェンジ内の文字数に基づいてバッチのリリース条件を設定するときは、使用する文字セットによってインターチェンジ内のバイト数が異なることがあります。

文字 "" と "<&" は、バッチのエンベロープでエンコードされた形式で表す必要があります

BizTalk Serverでは、バッチ EDI インターチェンジのエンベロープ フィールドを作成するときに、リテラル形式で "" と "<&" の文字はサポートされません。

送信バッチ インターチェンジのエンベロープ フィールドで、これらの文字のいずれかをそのまま使用すると、インターチェンジのシリアル化に EdiSend パイプラインが使用されている場合にメッセージが中断されます。

バッチのエンベロープ フィールドでこれらの文字の 1 つを使用する必要がある場合は、BizTalk 管理でエンベロープ フィールドを構成するときに、次の表の適切なエンコード値を使用できます。

文字 Encoding
< <
& &

これらのエンコード形式の 1 つを使用すると、BizTalk Server 管理コンソールのパートナー アグリーメント マネージャー (PAM) 画面で、BizTalk Server が長さの制限についてフィールドを検証する場合に、エンコード形式の各文字が個別の文字と見なされます。 たとえば、エンコード "<" はバッチ EDI インターチェンジで 1 文字の "<" を表しますが、BizTalk Serverは、特定のフィールドの長さの制限に対して検証するときに、これを 4 文字としてカウントします。 これは PAM のみの問題であり、EDI アセンブラーには該当しません。

アップグレード バッチ オーケストレーションの実行中に例外が発生する

症状:

受信ドキュメントで EDI.DestinationPartyId プロパティを設定するカスタム パイプライン コンポーネントを使用する場合、アプリケーション イベント ログで、アップグレード バッチ オーケストレーションの実行中に例外が発生したことを示すエラーが受信されることがあります。

考えられる原因

ErrorMessage が "バッチが見つかりませんでした" である場合、このエラーは、アップグレード バッチ オーケストレーションで受信ドキュメント用のバッチを適切に識別できなかったことを示します。

解決策

アップグレード バッチ オーケストレーションでは、EDI.DestinationPartyId を使用してパーティ名を参照します。 その後、パーティ名、EDI.EncodingType、および文字列 “Default” を使用して文字列を構築し、一致するバッチ名のバッチ構成を検索します。 この名前のバッチ構成が存在しない場合、このエラーがアプリケーション イベント ログに記録され、オーケストレーション インスタンスが中断されます。

注意

たとえば、パーティ名が Contoso で、EDI.EncodingType が X12 である場合、オーケストレーションでは "ContosoX12Default" という名前のバッチを検索します。

この問題を解決するには、アップグレード バッチ オーケストレーションによって構築された文字列に一致する名前のバッチが存在することを確認します。

EDI.ToBeBatched = True および EDI.DestinationParties でマークされたメッセージが中断される

現象

カスタム パイプライン コンポーネントを使用して、EDI.ToBeBatched に True を設定し、EDI.DestinationParties にパーティ ID のリストを設定することによりメッセージにバッチ用のマーキングを行う場合、メッセージはサブスクライバーが存在しないことを示すルーティング エラーにより中断されます。

考えられる原因

以前のバージョンのBizTalk Serverでは、メッセージを複数のバッチ構成で処理する必要がある場合は、EDI を設定します。DestinationParties プロパティを使用して、パーティ ID のスペース区切りリストを指定します。 ルーティング オーケストレーションは、EDI.ToBeBatched が True に設定され、EDI.DestinationParties プロパティを持つメッセージをサブスクライブし、EDI.DestinationParties プロパティに含まれるパーティ ID のリストを使用して各 ID 用のメッセージを作成し、メッセージをバッチ オーケストレーションに渡していました。 パーティ ID を使用してバッチを判断していたのは、各パーティ構成が保持できるバッチ構成が 1 つだけだったからです。

BizTalk Serverでは、各パーティは複数のバッチ構成を持つことができます。そのため、パリ ID のみを使用して使用するバッチ構成を決定するだけでは十分ではなくなりました。 メッセージを複数のバッチ構成で処理する必要があることを示すには、メッセージの EDI.BatchIDs プロパティに、メッセージの送信先であるバッチ ID のスペース区切りリストを設定する必要があります。

注意

EDI.DestinationPartyId プロパティを使用して単一のパーティ ID のみによりマークされたメッセージを処理すると、メッセージはアップグレード バッチ オーケストレーションによって処理されます。 詳細については、「 バッチ EDI インターチェンジのアセンブル」を参照してください。

解像度

EDI.DestinationParties プロパティではなく EDI.BatchIDs プロパティを設定するようにカスタム パイプライン コンポーネントをアップグレードします。 特定のバッチのバッチ ID は、各パーティの EDI プロパティの [バッチ] 設定ページで確認できます。

注意

この問題は、BatchMarker パイプライン コンポーネントを使用してメッセージにバッチ用のマーキングを行う場合は発生しません。

バッチ フィルター更新タイムアウトが 15 分にハードコーディングされている

バッチ フィルター条件を変更した場合、変更が有効になるまで 15 分かかります。 この更新間隔は変更できません。 フィルターをすぐに有効にするには、BizTalk Server ホスト プロセスを再起動します。

不明な例外を報告した後に RoutingOrchestration が中断される

現象

複数のバッチ構成に送信されるドキュメントを処理する場合、XLANG/s からアプリケーション イベント ログに、不明な例外により Microsoft.BizTalk.Edi.RoutingOrchestration.BatchRoutingService で障害が発生したというエラーが送信されることがあります。

考えられる原因

このエラーは、RoutingOrchestration が BatchingOrchestration にメッセージを送信したときに、BatchingOrchestration インスタンスが起動していなかった場合に発生する可能性があります。

解像度

バッチ処理するドキュメントを送信する前に、BatchingOrchestration インスタンスが実行されていることを確認します。

多数のアクティブ バッチにより、BizTalkMsgBoxDb ログファイルが大きくなることがある

現象

複数のバッチを開始した後で、BizTalk メッセージ ボックス データベース (BizTalkMsgBoxDb) のトランザクション ログのサイズが大きくなることがあります。

考えられる原因

この問題は、バッチ リリースの間隔を短くするリリース条件 (たとえば、バッチを 1 分ごとにリリースする) で大量のバッチを開始した場合に発生する可能性があります。

バッチを開始したときに作成されるバッチ オーケストレーション インスタンスは、実行時間の長いプロセスであり、バッチのリリース後にデータベースに保持されます。 オーケストレーションが保持されるたびに、保持に含まれるトランザクションにより、トランザクション ログのサイズが大きくなります。

注意

バッチ オーケストレーションが保持されている間に、トランザクション ログは約 30 KB 大きくなります。

解決策

この問題を解決するには、バッチ リリースの間隔が長くなるようにリリース条件を変更します。 詳細については、「 バッチ処理の構成 (X12)」を参照してください。

参照

EDI 受信確認の構成
受信バッチの処理
送信 EDI メッセージのバッチ処理
EDI バッチの構成