次の方法で共有


受信 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 メッセージの Disposition-notification-to ヘッダーによって決定されます。ただし、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブで [メッセージ ヘッダーの代わりに検証と MDN にアグリーメント設定を使用する] プロパティが選択されている場合を除きます。 このプロパティが選択されている場合、MDN の返し方は、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [送信者 MDN 設定] ページの [非同期 MDN の要求] プロパティによって決まります。 詳細については、「 AS2 メッセージMDN メッセージ」を参照してください。

MDN が同期的に返される場合、MDN は双方向の受信場所の送信ポート経由で返されます。 この MDN は HTTP 応答として機能します。たとえば、メッセージが正常に受信されたことを示す 200OK です。

MDN が非同期的に返される場合は、MDN を別の送信ポート経由で返す必要があります。 動的送信ポートが使用されている場合、MDN は Disposition-notification-to ヘッダーに含まれるアドレスに送信されます。

AS2 メッセージの受信に使用される双方向の受信ポートは、MDN メッセージの受信には使用しないでください。 MDN メッセージは、静的な一方向の受信ポートで受信する必要があります。 非同期的に返された MDN の要求/応答受信ポートを使用すると、受信 MDN に応答して 200OK メッセージが返されるのを防ぎ、MDN 送信の不要な再試行が発生します。

AS2 受信パイプラインのしくみ

AS2 受信パイプラインが受信 AS2 メッセージの処理で実行する手順は次のとおりです。

  • メッセージの AS2 ヘッダーの AS2-From 値を、[契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [識別子] ページの AS2-From リストの値と照合して、送信側を決定します。 失敗した場合は、受信メッセージに設定されている AS2-From コンテキスト プロパティとパーティの名前を照合して、送信側の特定を試みます。 一致するものが見つかり、[契約のプロパティ] ダイアログ ボックスの一方向 AS2 契約タブで [メッセージ ヘッダーのプロパティではなく検証と MDN の使用契約設定] が選択されている場合、BizTalk Server は、パーティの契約に関連付けられている AS2 プロパティを使用して AS2 メッセージを処理します。 プロパティが選択されていない場合、受信パイプラインは受信メッセージで AS2 ヘッダー タグを使用します。 契約が見つからない場合、パイプラインは処理を中止し、メッセージを中断し、例外を発生させます。

    メッセージ ヘッダー プロパティの代わりに検証と MDN の使用契約設定を使用 すると、受信メッセージに署名、暗号化、圧縮のプロパティがあることを検証できます (これらのプロパティが一方向アグリーメントの [ 検証 ] タブで契約で指定されている場合)、それ以外の場合はメッセージを中断してエラーを投稿できます。 これらの変更は、送信側の契約とネゴシエートする必要があります。 詳細については、「 AS2 プロパティの構成」を参照してください。

  • 送信側の契約が決定されたが、受信パイプラインが AS2 メッセージを処理しようとしたときにエラーが発生した場合、パイプラインは AS2 メッセージのコンテキスト プロパティ MessageDestination を SuspendQueue に設定します。 その後、受信パイプラインは MessageBox 内のメッセージを中断します。 受信パイプラインでは、 EdiIntAS.IsAS2FailedMessage コンテキスト プロパティも True に設定されます。 [契約のプロパティ] ダイアログ ボックスの一方向 AS2 契約タブの [送信者 MDN 設定] ページで [要求 MDN] を設定して MDN が有効になっている場合、パイプラインは適切な MDN を送信者に返します。 要求された場合、パイプラインは常に MDN の返しを試みます。

  • [契約のプロパティ] ダイアログ ボックスの [一方向 AS2 契約] タブの [検証] ページで [内の重複メッセージのチェック] オプションが選択されている場合に、メッセージが重複しているかどうかを判断します。 重複メッセージ検出は、受信メッセージの AS2 From、AS2-To、および Message-ID の値を、以前に受信したメッセージの値と照合することによって実現されます。 3 つの値がすべて一致する場合、受信パイプラインは EdiIntAs.IsAS2MessageDuplicate コンテキスト プロパティの値を true に設定します。 [検証] ページで [重複メッセージの中断] オプションも選択されている場合、メッセージは中断され、エラーがログに記録されます。

  • 各添付ファイルのファイル名 (存在する場合) を取得し、これをコンテキスト プロパティに昇格します。

  • メッセージのコピーを (ワイヤ形式で) 作成し、一方向 AS2 アグリーメント プロパティで有効になっている場合は、否認不可のレシート データベースにコピーを格納します。

  • 署名の検証やメッセージの暗号化解除 (ヘッダー タグに基づく) など、MIME 処理を実行します。

  • 受信したメッセージが圧縮されている場合は展開します。

  • HTTP 応答を生成し、同期要求応答モードで MDN に追加するか、非同期モードでスタンドアロン応答として送信します。

  • 要求された場合は MDN 応答を生成します。 パイプラインは、契約プロパティに基づいて MDN を生成します。メッセージ ヘッダー プロパティではなく検証と MDN の使用契約設定 が設定されている場合、またはそのプロパティが設定されていない場合はコンテキスト プロパティから生成されます。 受信メッセージの構成設定とヘッダーに一貫性がない場合、パイプラインによって否定 MDN が生成されます。

  • メッセージが EDI エンコードされ、受信確認が有効になっている場合、AS2EdiReceive 受信パイプラインの EDI 逆アセンブラーによって EDI 受信確認が生成されます。 パイプラインは EDI 受信確認を MessageBox にルーティングし、そこから動的送信ポートが受信確認を取得して非同期的に送信します。 MDN または HTTP 応答が同期的に送信されるため、EDI 受信確認は常に AS2 トランスポート経由で非同期的に送信されます。

  • MDN のコピーを作成し、片方向 AS2 契約のプロパティで有効に設定されている場合には、否認防止のためのレシートデータベースに格納します。

  • デコードされたメッセージのコピーを作成し、一方向 AS2 アグリーメント プロパティで有効になっている場合は、否認不可のレシート データベースにコピーを格納します。

    AS2 エラーが発生した場合、受信したメッセージに対してそれ以上の処理は行われません。 ただし、受信パイプラインは MDN 応答を生成します。

こちらもご覧ください

BizTalk Server が AS2 メッセージを受信する方法
AS2 メッセージ
MDN メッセージ