バッチ EDI インターチェンジのアセンブル
個々のトランザクション セット バッチ要素を EDI インターチェンジにアセンブルするには、EDI と AS2 をBizTalk Serverすると、次の処理が行われます。
バッチ処理用のバッチ要素を識別する。
受信時に個々のバッチ要素を検証しバッファーする。
リリース条件が満たされた時点で、特定のバッチ要素を取得し、バッチ インターチェンジをアセンブルする。
個々のメッセージが収集されバッチに追加される開始時刻は、バッチ アクティベーション条件により決定されます。 バッチがリリースされる時刻は、バッチ リリース条件により決定されます。 これら 2 つの条件セットの詳細については、「 出力バッチの構成」を参照してください。
送信バッチ メッセージのメッセージ フロー
送信メッセージをバッチ処理するよう BizTalk Server を構成すると、BizTalk Server コンポーネントは次の一連の手順を実行して、送信用のバッチ メッセージを準備します。 この一連の手順では、BatchMarker パイプライン コンポーネントを備えた EDIReceive パイプラインが、送信用にバッチ処理されるトランザクション セットを含む受信インターチェンジを処理するケースを説明します。
EDIReceive パイプラインの BatchMarker パイプライン コンポーネントが、パーティのプロパティの EDI バッチ フィルター設定から、どのメッセージをバッチ処理する必要があるか判断します (このコンポーネントは、バッチ フィルター設定を参照し、それに基づいて処理を行う唯一のバッチ処理コンポーネントです)。
1 つのバッチ構成のみのフィルター設定がメッセージをサブスクライブする場合、BatchMarker コンポーネントは プロパティ
EDI.ToBeBatched = True
を昇格させます。 これにより、バッチ処理オーケストレーションはメッセージを確実に取得します。複数のバッチ構成のフィルター設定がメッセージのコンテキストと一致する場合、BatchMarker コンポーネントはプロパティ
EDI.ToBeRouted = True
を昇格させ、プロパティをEDI.BatchIds
、一致するバッチ ID を含むスペース区切りリストに設定します。 これにより、ルーティング オーケストレーションはメッセージを確実にサブスクライブします。Note
カスタム受信パイプラインまたはカスタム オーケストレーションで、適切なコンテキスト プロパティを昇格させることができます。 カスタム受信パイプラインは、BatchMarker パイプライン コンポーネントを使用したり、BatchMarker パイプライン コンポーネントを使用せずにプロパティを昇格したりできます。
ルーティング オーケストレーションは、 と が昇格される
EDI.ToBeRouted = True
EDI.BatchIds
トランザクション セットを取得し、トランザクション セットのコピーを作成して、 に含まれるEDI.BatchIds
各バッチ ID のコピーがあることを確認します。 ルーティング オーケストレーションは を設定EDI.ToBeBatched = True
しEDI.BatchId
、トランザクション セットのコピーごとに一致するバッチ構成のバッチ ID に設定されます。 これにより、バッチ処理用のバッチ処理オーケストレーションはトランザクション セットを確実に取得します。バッチ処理オーケストレーションは、次のプロパティが昇格されているすべてのメッセージを取得します。
EDI.ToBeBatched = True
と、EDI.BatchId = バッチ処理オーケストレーションのこのインスタンスに関連付けられたバッチのバッチ ID。EDI.ToBeBatched = True
と EDI.BatchName = 構成されているバッチの名前、さらに EDI.DestinationPartyName = バッチ構成を含むパーティの名前。(BatchMarker パイプライン コンポーネントを備えた) EDIReceive パイプラインにより着信メッセージが処理される場合、バッチ処理オーケストレーションは、X12 または EDIFACT でエンコードされたトランザクション セットのみをバッチ処理します。
Note
アクティブなバッチ構成ごとにバッチ処理オーケストレーションのインスタンスが 1 つ存在し、個々のインスタンスが特定のバッチ ID をサブスクライブしています。 [契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページの [識別] セクションで新しいバッチ構成を作成すると、バッチ ID の値が自動的に設定されます。
バッチ処理オーケストレーションが、バッチ処理対象の各トランザクション セットを検証します。 トランザクション セットが検証に失敗した場合、コンテキスト プロパティは
EDI.BatchItemValidationFailure
"True" に設定されます。 BatchSuspend オーケストレーションは、そのコンテキスト プロパティに基づいてメッセージを取得し、エラー情報を投稿した後、中断されます。バッチのリリース条件が満たされている場合、バッチ処理オーケストレーションはバッチ要素をバッチにアセンブルし、エンベロープを作成します。
バッチ処理オーケストレーションは、インターチェンジのバッチ処理を完了した後、そのインターチェンジの次のプロパティを昇格します。EDI.DestinationPartyName = %PartyName%、EDI.BatchEncodingType = X12 または EDIFACT、および EDI.ToBeBatched = False。
送信ポートは、EDI に基づいてバッチ処理されたトランザクション セットを取得します。DestinationPartyName = <PartyName>、 EDI。BatchEncodingType = EDIFACT または X12、EDI。ToBeBatched = False。
バッチ処理オーケストレーションのコントロール メッセージ
バッチ処理オーケストレーションは、次のコントロール メッセージによりアクティブ化、終了、またはオーバーライドされます。
BatchActivation: オーケストレーションがこのメッセージを受信すると、バッチ処理オーケストレーションのインスタンスが作成され、(バッチアクティブ化条件を満たしている場合) バッチ要素を受信するためにオーケストレーションがアクティブになります。 このコントロール メッセージは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページで、バッチ構成の [開始] ボタンをクリックして送信されます。
BatchTermination: オーケストレーションは、このメッセージを受信すると、既存のバッチ要素からバッチを作成し、メッセージを MessageBox に発行して終了します。 このコントロール メッセージは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページで、バッチ構成の [停止] ボタンをクリックして送信されます。
Note
オーケストレーションは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページの [終了] セクションの [終了] プロパティに指定された時間に達した場合も終了します。
BatchOverride: オーケストレーションは、このメッセージを受信すると、既存の要素からバッチを作成し、メッセージを MessageBox に発行してから、次のバッチのメッセージを待機します。 このコントロール メッセージは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページで、バッチ構成の [オーバーライド] ボタンをクリックして送信されます。
バッチ処理オーケストレーションは、BatchControlMessageRecvLoc 受信場所を介してコントロール メッセージを受信します。 この SQL 受信場所のポーリング間隔は既定で 30 秒に設定されていますが、受信場所の [SQL トランスポートのプロパティ ] ダイアログ ボックスで変更できます。 ポーリング間隔を短くすると、コントロール メッセージを送信するアクションを実行した後すぐに (バッチ処理オーケストレーションを開始した場合など)、BatchControlMessageRecvLoc 受信場所でコントロール メッセージが受信されます。
バッチ オーケストレーションを開始すると、次の手順が実行されます。
[スタート] ボタンをクリックすると、BizTalk Serverは、バッチ オーケストレーションをアクティブ化するパーティとバッチ ID を示すレコードをテーブルに作成します。
BatchControlMessageRecvLoc 受信場所に関連付けられている SQL アダプターがポーリングを実行し、データベース内にレコードが存在しているかどうかを確認します。
レコードが存在している場合、SQL アダプターは、レコード内の情報を使用してコントロール メッセージを構築します。
Note
このような方法でコントロール メッセージが構築されるので、オーケストレーションを無効なコントロール メッセージで開始することはできません。
BatchControlMessageRecvLoc 受信場所でコントロール メッセージが受信され、BizTalk Server によりバッチ処理オーケストレーション インスタンスがアクティブ化されます。
バッチ コンポーネント
BIZTALK SERVER EDI では、次のコンポーネントを使用して XML トランザクション セットを EDI インターチェンジにバッチ処理します。
EDI 受信パイプラインの BatchMarkerReceivePipelineComponent
ルーティング オーケストレーション
バッチ処理オーケストレーション
バッチ処理オーケストレーションのアップグレード
BatchSuspend オーケストレーション
EDI 送信パイプライン
これらのコンポーネントは、EDI と AS2 BizTalk Serverインストールして構成するときに DLL としてインストールされます。
Note
BIZTALK SERVER EDI と AS2 のバッチ処理コンポーネントでは、バッチ内のトランザクション セットの順序が保証されません。
BatchMarkerReceivePipelineComponent
EDI 受信パイプラインの BatchMarkerReceivePipelineComponent により、バッチ処理オーケストレーションは、バッチ処理対象のメッセージを取得できます。 このパイプライン コンポーネントは、EDI 受信パイプラインの逆アセンブラーの後に適用されます。 コンポーネントは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ処理の構成] ページの [フィルター] セクションで設定されたフィルター条件を評価し、ルーティングおよびバッチ処理オーケストレーションで処理するための次のコンテキスト プロパティを使用してトランザクション セットをマークします。
単一のパーティがバッチ処理されるメッセージをサブスクライブすると、メッセージが昇格
ToBeBatched = True
され、BatchId は一致するバッチ構成のバッチ ID の値に設定されます。 これにより、バッチ処理オーケストレーションによる取得が可能になります。複数のバッチがバッチ処理されるメッセージをサブスクライブすると、 が昇格
ToBeRouted = True
され、プロパティセットがEDI.BatchIds
スペース区切りのバッチ ID のリストに設定されます。 これにより、ルーティング オーケストレーションによる取得が可能になります。サブスクリプションが存在していない場合、コンテキスト プロパティの昇格は実行されません。 したがって、トランザクション セットはバッチ処理されません。
パイプライン コンポーネントは、XML 以外のメッセージと、 プロパティを持つ
ReuseEnvelope
メッセージ (保存されたバッチ) を無視します。 受信確認がバッチ処理されない場合、パイプライン コンポーネントは ACK メッセージの種類 (CONTRL、TA1、および 997) を無視します。 ルーティングオーケストレーションとバッチ処理オーケストレーションの処理を最適化するために、メッセージ コンテキスト プロパティMessageDestination
が逆アセンブラーによって "SuspendedQueue" に設定されている場合、BatchMarkerPipelineComponent はメッセージを MessageBox に渡します。EDIReceive パイプラインではなくカスタム パイプラインを使用している場合、そのカスタム パイプラインで BatchMarker コンポーネントを使用できます。 EDIReceive パイプラインを使用せず、オーケストレーションからメッセージを発行する場合は、いずれかのコンポーネントでアクティブなバッチの ID と を昇格
ToBeBatched = True
BatchID
させる必要があります。
ルーティング オーケストレーション
ルーティング オーケストレーションは、コンテキスト プロパティとEDI.BatchIds
コンテキスト プロパティToBeRouted = True
をバッチ ID のスペース区切りリストに設定して、任意のメッセージをサブスクライブします。 これは、複数のバッチ フィルターがバッチ処理対象のメッセージをサブスクライブする場合に実行されます。 ルーティング オーケストレーションは、 に含まれる EDI.BatchIds
各バッチ ID のメッセージのコピーを作成します。 ルーティング オーケストレーションは、2 つの新しいコンテキスト プロパティを各コピーに設定します。
EDI.BatchID
は、このメッセージが対象とするバッチの ID に設定されます。EDI.ToBeBatched
は、True に設定されます。その後、そのコピーはメッセージ ボックスにルーティングされ、バッチ処理オーケストレーションにより取得されます。 各宛先バッチ ID は、同じオーケストレーションのシングルトン インスタンスを使用し、特定のバッチ ID にフィルターを適用します。
バッチ処理オーケストレーション
バッチ処理オーケストレーションはステートフル サービスで、バッチ要素 (トランザクション セット) を一定期間バッファーし、インターチェンジにアセンブルしてから、リリース条件に基づいてそのインターチェンジを送信パイプラインにリリースします。
アクティブ化された後、バッチ処理オーケストレーションのインスタンスは、特定のエンコードの種類のメッセージのバッチ処理を特定のパーティに開始できます ( Start datetime が経過した場合)。 各パーティ用のバッチ処理オーケストレーションのインスタンスは、同時に多数存在することができます (アクティブなバッチ構成ごとに 1 つずつ)。 バッチ処理オーケストレーションの 1 つのインスタンスは、1 つのバッチ構成に対して複数のバッチを解放できます。 終了条件が満たされると、バッチ処理オーケストレーション インスタンスは終了します。 バッチ処理オーケストレーションの新しいインスタンスは、[ 開始 ] ボタンを使用して取引先管理 (TPM) から手動で作成する必要があります。
バッチ オーケストレーションは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページの [アクティブ化] セクションに表示される開始日時より前に開始された場合、アクティブ化範囲で指定されたメッセージのみを受信します。 開始日時の前に送信されたメッセージは受信しません。
バッチ処理オーケストレーションは以下を実行します。
コンテキスト プロパティ
EDI.ToBeBatched = True
とEDI.BatchId
バッチ構成の ID、またはEDI.ToBeBatched = True
EDI を使用して XML バッチ要素をサブスクライブします。BatchName = 構成されたバッチと EDI の名前。DestinationPartyName = バッチ構成を含むパーティ名。 ループ内の Receive アクション操作を使用してバッチ要素を 受け取ります 。Note
バッチ処理オーケストレーションは、[契約のプロパティ] ダイアログ ボックスの [一方向アグリーメント] タブの [バッチ構成] ページの [フィルター] セクションで設定されたフィルター条件に基づいてトランザクション セットをバッチ処理しません。 バッチ処理オーケストレーションは、前のコンテキスト プロパティが設定されているトランザクション セットをサブスクライブします。 BatchMarker パイプライン コンポーネントは、パーティのプロパティのフィルター設定に基づいて、これらのコンテキスト プロパティを設定し、昇格します。
コンテキスト プロパティで識別されたパーティのバッチ構成設定を
BatchId
取得します。パーティの設定に基づいてバッチ要素 (トランザクション セット) を検証します。
バッチ要素にエラーが発生した場合、バッチ処理オーケストレーションでは、そのトランザクション セットに対して 次のプロパティが昇格されます。
EDI.BatchItemValidationFailure = True
BatchElementSuspend オーケストレーションは、このプロパティが昇格されたトランザクション セットをサブスクライブします。 このオーケストレーションは、インターチェンジのバッチ処理において最初に発生したエラーの詳細なエラー情報を提供します。バッチ要素にエラーがない場合、そのバッチ要素への参照を保持します。
適切な制御メッセージを受信するか、バッチ処理リリース条件が満たされると、Receive アクション ループから抜 け 出し、MessageBox からすべてのバッチ要素を取得し、インターチェンジをアセンブルします。
インターチェンジのコンテキスト プロパティとコンテキスト プロパティ
ToBeBatched = False
DestinationPartyName = %PartyName% を設定します。%PartyName% はメッセージの対象となるパーティの名前です。Note
送信ポートがプロパティ
EDI.ToBeBatched = False
と EDI のいずれかまたは両方にサブスクライブする場合。DestinationPartyName = %PartyName%。送信ポートはバッチインターチェンジを取得できます。 必ず、送信ポートがこれらの取得対象のバッチ インターチェンジのみを取得するように送信ポートのフィルターを構成してください。Note
バッチ処理オーケストレーションによって MessageBox にドロップされたインターチェンジには、プロパティ
EDI.ToBeBatched = False
である EDI のみが含まれます。DestinationPartyName = %PartyName%、および EDI。BatchEncodingType = "X12" または "EDIFACT" がコンテキストに昇格しました。 元のトランザクション セットのすべてのコンテキスト プロパティは失われます。X12 でエンコードされたインターチェンジの場合、次のプロパティをエンベロープに適用します。
ISA6: インターチェンジの送信者 ID
ISA8: インターチェンジの受信者 ID
ISA15: 使用状況インジケーター
ISA_Blob (コンテキストに書き込み)
EDIFACT でエンコードされたインターチェンジの場合、次のプロパティをエンベロープに適用します。
UNB2.1: インターチェンジの送信者 ID
UNB3.1: インターチェンジの受信者 ID
UNB2.3: 逆ルーティングのアドレス
UNB11: 使用状況インジケーター
UNA_Blob (コンテキストに書き込み)
UNB_Blob (コンテキストに書き込み)
バッチ インターチェンジを、EDI 送信パイプラインが取得できるようにメッセージ ボックスに配送します。
UpgradeBatching オーケストレーション
UpgradeBatching オーケストレーションは、プロパティが true に設定されている EDI.ToBeBatched
が、プロパティが設定されていないメッセージを EDI.BatchID
処理します。
以前のバージョンのBizTalk Serverでは、各パーティはバッチ構成を 1 つだけ持つことができます。 true に設定された EDI.ToBeBatched
メッセージを処理するときに、 EDI.DestinationPartyId
を使用してパーティを特定した後、バッチ構成が契約プロパティから読み取られました。
BizTalk Serverでは、各パーティに複数のバッチ構成を関連付けることができるためEDI.DestinationPartyId
、 では、使用するバッチ構成を決定するのに十分な情報が提供されません。 BizTalk Serverがメッセージを受信すると、 プロパティをEDI.BatchId
使用して、メッセージの処理中に使用する必要がある特定のバッチ構成を識別します。
BizTalk Serverにアップグレードした後も、 プロパティを使用EDI.DestinationPartyId
してパーティ構成を指定するカスタム パイプラインが存在する場合があります。 が true に設定され、EDI の代わりに 設定されている EDI.ToBeBatched
メッセージを EDI.DestinationPartyID
受信した場合。BatchID:UpgradeBatching オーケストレーションは、使用するバッチ構成の決定を試みます。
UpgradeBatching オーケストレーションは次のサブスクリプション フィルターを使用して、バッチ処理の対象として設定されており、バッチ ID が指定されていないドキュメントをサブスクライブします。
EDI.ToBeBatched=True
EDI.EncodingType
存在EDI.DestinationPartyId
存在このオーケストレーションは、メッセージを受け取ると、パーティ名とエンコードの種類を使用して、メッセージ用の一致するバッチ構成を見つけようとします。 プロパティは
EDI.DestinationPartyID
パーティ名を決定するために使用され、オーケストレーションは PartyName> + EncodingType> +< Default と一致<するバッチ名を検索します。 たとえば、パーティ名が Contoso で、 のEDI.EncodingType
値が X12 の場合、オーケストレーションは ContosoX12Default という名前のバッチを検索します。一致するバッチ構成が見つかった場合、メッセージには次のプロパティが設定されてメッセージ ボックスに戻されます。
EDI.ToBeBatched = True
EDI.ToBeRouted = False
EDI.BatchId = 一致するバッチのバッチ ID
その後、バッチ処理オーケストレーションはメッセージを処理します。
Note
一致するバッチが見つからない場合は、次の処理が行われます。
- メッセージは BatchSuspend オーケストレーションに送信されません。
- UpgradeBatching オーケストレーションのインスタンスとメッセージが中断されます。
- バッチが見つからなかったことを示すエラーがイベント ログに記録されます。
BatchSuspend オーケストレーション
BatchSuspend オーケストレーションは、バッチ処理オーケストレーションが受信した無効なメッセージを処理します。 BatchSuspend オーケストレーションが必要な理由は、オーケストレーションのインスタンスの実行を停止することなく、オーケストレーション (この場合、バッチ処理オーケストレーション) からのメッセージを中断する直接的な方法がないためです。
バッチ処理オーケストレーションのインスタンスは、メッセージを受信すると、それを検証しようとします。 メッセージの検証に失敗した場合、バッチ処理オーケストレーションは BatchSuspend オーケストレーションのインスタンスを作成し、コンテキスト プロパティを EDI.BatchItemValidationFailure
True に設定します。 BatchSuspend オーケストレーションは、このコンテキスト プロパティが True に設定されたすべてのメッセージをサブスクライブします。 無効なトランザクション セットが BatchSuspend オーケストレーションにルーティングされると、BatchSuspend オーケストレーション インスタンスは中断されます。
最初に発生したエラーに関する詳細なエラー情報は BatchSuspend オーケストレーションにより提供されます。
カスタム オーケストレーションを作成して、バッチ処理オーケストレーションによって検証に失敗するトランザクション セットを処理するには、フィルターの プロパティを使用 EDI.BatchElementValidationFailure
します。
EDI 送信パイプライン
EDI 送信パイプラインは、バッチ処理オーケストレーションからバッチ インターチェンジを受信した後、以下を実行します。
X12 でエンコードされたインターチェンジの場合、送信パイプラインは、次のプロパティをエンベロープに適用します。
ISA2: 認証情報
ISA4: セキュリティ情報
ISA9: インターチェンジ日付
ISA10: インターチェンジ時刻
ISA13: インターチェンジ制御番号
GS4: 日付
GS5: 時刻
GS6: グループ制御番号
ST2: トランザクション セット制御番号
EDIFACT でエンコードされたインターチェンジの場合、送信パイプラインは、次のプロパティをエンベロープに適用します。
UNB4.1: 日付
UNB4.2: 時刻
UNB5: インターチェンジ制御参照
UNB6.1: 受信者の参照/パスワード
UNG4.1: 日付
UNG4.2: 時刻
UNG5: 機能グループの参照
UNG8: アプリケーションのパスワード
関連アダプターを使用してメッセージを配信します。