このトピックでは、BizTalk Server でのバッチ処理に関する既知の問題について説明します。
サブ文書注釈が [はい] に設定されている場合でも、サブ文書分割が実行されませんでした
症状:
HIPAA インターチェンジの HIPAA スキーマ内のsubdocument_creation_break注釈が "はい" に設定されている場合でも、HIPAA インターチェンジはサブ文書に分割されませんでした。
考えられる原因
送信側の受信バッチ処理オプションが "インターチェンジの保持" に設定されました。HIPAA スキーマ内のsubdocument_creation_break注釈が "Yes" に設定されている場合でも、HIPAA ドキュメントはサブ文書に分割されません。
subdocument_break注釈は "Yes" に設定されましたが、subdocument_creation_break注釈は "Yes" に設定されていませんでした。
解決策
送信側の [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 つのプロパティが昇格されます。 これらのプロパティのいずれかまたは両方をサブスクライブする送信ポートは、これらのバッチインターチェンジを取得できます。 送信ポートのフィルターが構成されていることを確認して、送信ポートが取得を意図したバッチインターチェンジを取得するようにします。
バッチ要素の数がバッチに必要なトランザクション セットの数を超える場合、バッチリリースを求められない可能性があります
バッチ解放基準がグループまたはインターチェンジごとのトランザクション セットの数に基づいている場合、バッチ要素の数がバッチのリリースに必要なトランザクション セットの数を超えても、バッチが解放されない可能性があります。 これは、受信確認を有効にし、バッチ フィルター条件を設定してそれらの受信確認をバッチに追加した場合に発生する可能性があります。 この例では、グループ (またはインターチェンジ) 内のバッチ要素の数が、グループ (またはインターチェンジ) ごとのトランザクション セットの数を超えます。 その場合、グループごとのトランザクション セット (またはインターチェンジ) の数がバッチリリースに必要な数より少ない場合、バッチは解放されませんが、同時にバッチ要素の数がバッチリリースに必要なトランザクションセットの数よりも多くなる可能性があります。
開始がクリックされたときにバッチ要素が保存されませんでした
症状:
パーティーの [バッチ] ページで [開始 ] をクリックすると、バッチのメッセージは収集されませんでした。
考えられる原因
[開始] がクリックされた日時は、[アクティブ化] セクションに入力した日時よりも前でした。 その結果、オーケストレーション インスタンスはアクティブ化されましたが、バッチのメッセージは収集されませんでした。 詳細については、「 送信バッチの設定」を参照してください。
解決策
この問題が発生しているバッチ構成の [バッチ] ページで [停止] をクリックします。 アクティブ化を [すぐに開始] に設定するか、現在の時刻より前の日時を入力して、[開始] をクリックします。 [開始日時] を現在の時刻にリセットするように求められたら、[OK] をクリックします。 BizTalk Server は、その時点でバッチのメッセージの収集を開始します。
EDIFACT バッチ内のバイト数は、使用される文字セットによって異なります
一部の EDIFACT 文字セットの文字は 2 バイト文字であるのに対し、他の EDIFACT 文字セットでは 1 バイト文字である場合があります。 このため、インターチェンジ内の文字数に基づいてバッチのリリース基準を設定すると、インターチェンジ内のバイト数が使用される文字セットによって異なる場合があります。
文字 "" と "&" は、バッチのエンベロープでエンコードされた形式で表す必要があります
BizTalk Server では、バッチ EDI インターチェンジのエンベロープ フィールドを作成する場合、リテラル形式で "<" と ">" の文字はサポートされません。
EdiSend パイプラインを使用してインターチェンジをシリアル化する場合、これらの文字のいずれかを送信バッチインターチェンジのエンベロープ フィールドで文字どおり使用すると、中断メッセージが発生します。
バッチのエンベロープ フィールドでこれらの文字のいずれかを使用する必要がある場合は、BizTalk 管理者でエンベロープ フィールドを構成するときに、次の表の適切なエンコードされた値を使用できます。
キャラクター | [エンコード] |
---|---|
< | < |
および | および |
これらのエンコードされたフォームのいずれかを使用する場合、BizTalk Server 管理コンソールの Partner Agreement Manager (PAM) 画面でフィールドの長さの制限が検証されると、エンコードされたフォームの各文字が個々の文字としてカウントされます。 たとえば、エンコード "<" はバッチ 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に対するメッセージを作成し、それらのメッセージをバッチングオーケストレーションに渡します。 各パーティ構成にバッチ構成が 1 つだけ含まれる可能性があるため、パーティ ID を使用してバッチを決定する方法が使用されました。
BizTalk Server では、各パーティが複数のバッチ構成を持つ可能性があるため、使用するバッチ構成を決定するためにパリ ID のみを使用するだけでは十分ではなくなりました。 メッセージを複数のバッチ構成で処理する必要があることを示すには、メッセージに EDI が必要です。メッセージの送信先となるバッチ ID のスペース区切りリストに設定された BatchIDs プロパティ。
注
EDI を使用して単一のパーティ ID のみでマークされたメッセージを処理する場合。DestinationPartyId プロパティでは、メッセージはアップグレードバッチオーケストレーションによって処理されます。 詳細については、「 バッチ EDI インターチェンジのアセンブル」を参照してください。
解決策
EDI.BatchIDs プロパティを設定するようにカスタム パイプライン コンポーネントをアップグレードし、EDI.DestinationParties ではなくします。 特定のバッチのバッチ 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) を参照してください。