受信 AS2 メッセージの処理
AS2 受信パイプラインでは、AS2 を経由して受信メッセージを処理します。 AS2EdiReceive 受信パイプラインでは、EDI 逆アセンブラーを使用して EDI エンコード メッセージを処理します。 AS2Receive 受信パイプラインでは、AS2 逆アセンブラーを使用して、EDI でエンコードされていないメッセージを処理します。 これらの 2 つのパイプラインは、それぞれ異なる方法で AS2 メッセージのペイロードを処理し、MDN を生成します。ただし、どちらの受信パイプラインも、AS2 デコーダーを使用して AS2 メッセージを処理します。
AS2EdiReceivePipeline が EDI ペイロードを持つ AS2 メッセージを処理するときは、EDI 処理の実行前に受信メッセージの AS2 処理が行われます。 パイプラインが AS2 メッセージの EDI ペイロードに対して EDI 受信確認を生成するときは、接続が AS2 応答によって閉じられるので、EDI 受信確認を非同期で返す必要があります。
受信ポート
HTTP 受信ポートは、EDI または非 EDI ペイロードを持つ AS2 メッセージを受信するために使用されます。 MDN が同期的に返される場合、受信ポートは要求 - 応答のポートである必要があります。
MDN は、同期または非同期で返すことができます。 これは、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブで [メッセージ ヘッダーの代わりに検証と MDN にアグリーメント設定を使用する] プロパティが選択されていない限り、AS2 メッセージの Disposition-notification-to ヘッダーによって決定されます。 プロパティが選択されている場合、MDN の返し方は、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [送信者 MDN 設定] ページの [非同期 MDN の要求] プロパティによって決まります。 詳細については、「 AS2 メッセージ と MDN メッセージ」を参照してください。
MDN が同期で返される場合は、双方向の受信場所の送信ポートを経由して返されます。 この MDN は、たとえばメッセージの正常な受信を示す 200OK などの HTTP 応答として機能します。
MDN が非同期に返される場合、別の送信ポートを経由して MDN を返す必要があります。 動的な送信ポートを使用する場合は、Disposition-notification-to ヘッダーに含まれるアドレスに MDN が送信されます。
Note
AS2 メッセージの受信に使用される双方向受信ポートを、MDN メッセージの受信に使用しないでください。 MDN メッセージは、静的な一方向の受信ポートで受信する必要があります。 非同期で返された MDN に要求/応答受信ポートを使用すると、着信 MDN に応答する 200OK メッセージが返されなくなるため、MDN 送信の不要な再試行が行われます。
AS2 受信パイプラインの機能方法
AS2 受信パイプラインは、次の手順により受信 AS2 メッセージを処理します。
[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [識別子] ページで、メッセージの AS2 ヘッダーの AS2-From 値と AS2-From リストの値を照合して、送信側パーティを決定します。 これに失敗した場合は、受信メッセージに設定されている AS2-From コンテキスト プロパティとパーティ名を照合することによって、送信パーティの決定が試行されます。 一致が見つかり、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 アグリーメント] タブで [メッセージ ヘッダーの代わりに検証と MDN に契約設定を使用する] プロパティが選択されている場合、BizTalk Serverは、AS2 メッセージを処理するためにパーティの契約に関連付けられている AS2 プロパティを使用します。 プロパティが選択されていない場合、受信パイプラインは受信メッセージ内の AS2 ヘッダー タグを使用します。 アグリーメントが見つからない場合、パイプラインは処理を中止し、メッセージを保留して例外を発生させます。
Note
メッセージ ヘッダー プロパティではなく検証と MDN にアグリーメント設定を使用 すると、受信メッセージに署名、暗号化、圧縮の各プロパティ (一方向アグリーメントの [検証] タブでこれらのプロパティが指定されている場合) があることを検証し、一方向アグリーメントの [ 検証 ] タブで指定されている場合は、メッセージを中断してエラーを投稿することができます。 これらの変更は、送信元パーティのアグリーメントとネゴシエートする必要があります。 詳細については、「 AS2 プロパティの構成」を参照してください。
送信元パーティのアグリーメントが決定された後、受信パイプラインが AS2 メッセージを処理しようとしたときにエラーが発生した場合は、パイプラインによって AS2 メッセージのコンテキスト プロパティ MessageDestination が SuspendQueue に設定されます。 その後、受信パイプラインは MessageBox 内のメッセージを保留します。 受信パイプラインでは、コンテキスト プロパティも True に設定
EdiIntAS.IsAS2FailedMessage
されます。 [契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [送信者 MDN 設定] ページで [MDN の要求] を設定して MDN が有効になっている場合、パイプラインは送信者に適切な MDN を返します。 MDN が要求された場合、パイプラインは常に MDN を返そうとします。[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [検証] ページで [内の重複するメッセージを確認する] オプションが選択されている場合に、メッセージが重複しているかどうかを判断します。 メッセージの重複の検出は、受信メッセージの AS2-From、AS2-To、および Message-ID 値と、前に受信したメッセージの値を照合することによって行われます。 3 つの値がすべて一致する場合、受信パイプラインはコンテキスト プロパティの値を
EdiIntAs.IsAS2MessageDuplicate
true に設定します。 [検証] ページで [重複するメッセージを中断する] オプションも選択されている場合、メッセージは中断され、エラーがログに記録されます。添付ファイルがあれば、各ファイルの名前を取得し、コンテキスト プロパティに昇格させます。
メッセージ (ワイヤ形式) のコピーを作成し、受信の否認不可データベースに保存します (一方向の AS2 アグリーメント プロパティで有効になっている場合)。
MIME 処理を実行します。この処理には、署名の確認とメッセージの解読 (ヘッダー タグに基づく) も含まれます。
受信メッセージが圧縮されている場合は、圧縮解除します。
同期の要求/応答モードで MDN に付けられる HTTP 応答、または非同期モードでスタンドアロン応答として送信される HTTP 応答を生成します。
要求に応じて MDN 応答を生成します。 パイプラインでは、アグリーメントプロパティに基づいて MDN が生成されます。 メッセージ ヘッダープロパティではなく検証と MDN の使用設定 が設定されている場合は 、そのプロパティが設定されていない場合はコンテキストプロパティから生成されます。 受信メッセージの構成設定とヘッダーの間に一貫性がない場合、パイプラインは否定 MDN を生成します。
メッセージが EDI エンコードであり、受信確認が有効になっていた場合は、AS2EdiReceive 受信パイプラインの EDI 逆アセンブラーによって EDI 受信確認が生成されます。 パイプラインは、EDI 受信確認を MessageBox にルーティングします。そこで、動的な送信ポートがこの受信確認を取得して非同期で送信します。 EDI 受信確認は、AS2 トランスポートを経由して、常に非同期で送信されます。これは、MDN 応答または HTTP 応答のどちらかが同期で送信されるためです。
MDN のコピーを作成し、受信の否認不可データベースに保存します (一方向の AS2 アグリーメント プロパティで有効になっている場合)。
デコードされたメッセージのコピーを作成し、受信の否認不可データベースに保存します (一方向の AS2 アグリーメント プロパティで有効になっている場合)。
AS2 エラーが発生した場合、受信メッセージに対するそれ以上の処理は行われません。 ただし、MDN 応答は、受信パイプラインによって生成されます。