次の方法で共有


動的メッセージ型の探索とスキーマの解決

Microsoft BizTalk Accelerator for SWIFT (A4SWIFT) を使用すると、SWIFT 逆アセンブラーとアセンブラーの両方で動的メッセージの種類の検出とスキーマ解決が可能になります。

SWIFT 逆アセンブラー

SWIFT 逆アセンブラー (DASM) には、受信したメッセージのメッセージの種類を動的に検出し、メッセージの解析に必要な適切なスキーマを読み込む機能があります。 この機能の最大の利点は、SWIFT 逆アセンブラーを使用して 1 つのパイプラインを構成して、任意の SWIFT メッセージの種類の SWIFT メッセージを処理できることです。 ネイティブ BizTalk フラット ファイル逆アセンブラーとは異なり、SWIFT 逆アセンブラーでは、発生する可能性があるメッセージの種類ごとに個別の受信パイプラインを作成する必要A4SWIFT。

ほとんどの場合、システムが受信するすべてのメッセージが構造的に同種のヘッダー データで始まると仮定した場合は、動的メッセージの種類の検出を使用できます。 ヘッダー データ内には、メッセージのメッセージの種類を示すフィールドがあります。 SWIFT メッセージの場合、ヘッダー データは SWIFT メッセージ ブロック 1、2、および 3 で構成され、メッセージの種類情報はブロック 2 (アプリケーション ヘッダーと呼ばれます) に含まれます。

SWIFT DASM コンポーネントでは、すべての "単一" (バッチ処理されていない) SWIFT メッセージをすぐに処理できます。どのプロパティも設定する必要はありません。 既定では、SWIFT インターチェンジ スキーマと SWIFT ヘッダー スキーマは設定されません。ただし、SWIFT DASM コンポーネントは、Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.dll に存在する SWIFT ヘッダー スキーマを使用して、SWIFT メッセージの種類を動的に検出し、メッセージを処理します。 また、BRE と XML 検証は既定で有効になっているため、処理されるメッセージはすべて完全に検証されます。 RuntimeSchemas.dll の SWIFT ヘッダーを指すように SWIFT ヘッダー スキーマ プロパティを設定すると、上記と同じ動作になります。

SWIFT 逆アセンブラーの SWIFT ヘッダー スキーマ構成プロパティが "None" (既定値) に設定されている場合、逆アセンブラーは次の手順を実行して、適切なスキーマを動的に解決して読み込みます。

  1. ユーザー指定のヘッダー スキーマ (SWIFT ヘッダー スキーマ構成プロパティで指定) を使用して、受信メッセージの先頭 (ヘッダー) を解析します。

  2. 昇格されたプロパティ フィールドの結果の "ヘッダー XML" A4SWIFT_MessageType検査します。 このフィールドが存在する場合は、フィールド値を "メッセージの種類" として使用し、手順 4 に進みます。 フィールドが存在しない場合は、手順 3 に進みます。

  3. A4SWIFT_MessageType2昇格されたプロパティ フィールドのヘッダー XML を検査します (逆アセンブラーで A4SWIFT_MessageType フィールドが見つからない場合は予期されます)。 A4SWIFT_MessageType2 フィールド値を "メッセージの種類" として使用します。

  4. 手順 2 または 3 で識別された "メッセージの種類" が "574" の場合、SWIFT 逆アセンブラーは、メッセージの種類 "574" がデュアル 型メッセージ 一覧構成プロパティ (逆アセンブラーのプロパティ) で指定されたメッセージの種類の一覧に含まれているかどうかを確認します。 はいの場合は、手順 5 に進みます。 いいえの場合は、手順 6 に進みます。

  5. A4SWIFT_SecondaryMessageType昇格されたプロパティ フィールドのヘッダー XML を検査します。 このフィールドが存在する場合、逆アセンブラーはフィールド値 ("IRSLST" など) を "message sub-type" として使用し、"メッセージの種類" ("574_IRSLST" など) に追加します。

    重要

    手順 5 の説明は、SWIFT 逆アセンブラーがメッセージ のサブタイプを評価するために実際に行うことを簡略化したものです。 実際には、SWIFT 逆アセンブラーは、次のアルゴリズムを使用して、メッセージの種類にサブタイプがあるかどうかを判断し、存在する場合は、そのサブタイプは次のようになります。

    Given MT type number nxx ...  
    if nxx is in the Dual-Type list {  
      if field 119 exists AND field 119 is NOT null/empty {  
        if n == 1 {  
          if field 119 == "STP" {  
            Use MTnxxPLUS schema  
          } else if field 119 == "REMIT" {  
            Use MTnxx schema  
          } else {  
            Use MTnxx_<field 119> schema  
          }   
        } else {  
          // n != 1  
          Use MTnxx_<field 119> schema  
        }  
      } else {  
        // field 119 does not exist or 119 does exist but is null/empty  
        Use MTnxx schema  
      }  
    } else {  
      // nxx is not a dual-type message  
      Use MTnxx schema  
    }  
    
  6. 逆アセンブラーはメッセージの種類を認識し、固定スキーマの名前付けプレフィックスとサフィックス (プレフィックスの "MT" など) を連結してインターチェンジ スキーマ名を形成できます ("MT574_IRSLST" にします。

  7. 読み込まれたスキーマを使用して、インターチェンジ スキーマを (名前で) 読み込み、メッセージ全体 を最初から解析します (つまり、逆アセンブラーはヘッダー データを 2 回解析します。1 回はヘッダー スキーマを使用し、もう一度インターチェンジ スキーマの先頭を使用します)。 インターチェンジ スキーマは、ヘッダーを含むメッセージ全体を解析できる必要があります。

    Note

    逆アセンブラーは、すべてのA4SWIFT SWIFT メッセージ スキーマを使用して、SWIFT インターチェンジ全体 (SWIFT ブロック 1、2、3、4、5) を解析できます。 逆アセンブラーは、既定の SWIFT ヘッダー スキーマを使用して、ブロック 1、2、および 3 のみを解析します。 詳細については、以下を参照してください。

    上記のスキーマ解決アルゴリズムは、動的メッセージの種類の検出を機能させるには、逆アセンブラーが昇格した次のプロパティ (A4SWIFT プロパティ スキーマ、Microsoft.Solutions.A4SWIFT.Property.PropertySchema で定義されている) を使用して昇格したフィールドを含める必要があることを意味します。

  • A4SWIFT_MessageType

  • A4SWIFT_MessageType2 ( A4SWIFT_MessageTypes を使用する場合は省略可能)

  • A4SWIFT_SecondaryMessageType (省略可能)

    これらのプロパティとその他の昇格されたプロパティの詳細については、「 A4SWIFT_* 昇格されたプロパティ」を参照してください。

Note

SWIFT ヘッダー スキーマを None に設定した場合は、SWIFT インターチェンジ スキーマ プロパティに完全な インターチェンジ スキーマ を指定する必要があります。 この場合、逆アセンブラーは、指定したインターチェンジ スキーマを使用して、A4SWIFTが受信するすべてのメッセージを解析します。 つまり、動的スキーマ解決を無効にし、指定したインターチェンジ スキーマと一致する型のメッセージのみを受信するようにパイプラインを構成します。

A4SWIFTでは、SWIFT 標準ヘッダー データを解析でき、動的スキーマ解決を容易にするために必要な昇格されたプロパティを持つ既定の SWIFT ヘッダー スキーマ (Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema) がインストールされます。

既定の SWIFT ヘッダー スキーマには、次の昇格されたフィールドがあります。

  • SWIFTHeader/ApplicationHeaderBlock_Input/MessageType。 逆アセンブラーは 、A4SWIFT_MessageType プロパティを使用してこれを昇格します。

  • SWIFTHeader/ApplicationHeaderBlock_Output/MessageType。 逆アセンブラーは 、A4SWIFT_MessageType2 プロパティを使用してこれを昇格します。

  • SWIFTHeader/UserHeaderBlock/ValidationFlag_119。 逆アセンブラーは 、A4SWIFT_MessageType プロパティを使用してこれを昇格します。

    SWIFT ヘッダー スキーマと SWIFT インターチェンジ スキーマ構成プロパティの両方を "None" に設定した場合、逆アセンブラーは既定でヘッダー スキーマとして Microsoft.Solutions.FinancialServices.SWIFT.RuntimeSchemas.HeaderSchema を使用します。

SWIFT アセンブラー

SWIFT 逆アセンブラーと同様に、SWIFT アセンブラーには、送信メッセージのメッセージの種類を動的に検出し、メッセージのシリアル化に必要な適切なスキーマを読み込む機能があります。 この機能を使用すると、SWIFT アセンブラーを使用して 1 つのパイプラインを構成して、任意の SWIFT メッセージの種類の SWIFT メッセージを処理できます。 ネイティブの BizTalk フラット ファイル アセンブラーとは異なり、SWIFT アセンブラーでは、発生する可能性があるメッセージの種類ごとに個別の送信パイプラインを作成する必要A4SWIFTありません。

SWIFT アセンブラーの動的スキーマ解決は、SWIFT 逆アセンブラーよりもはるかに簡単です。これは、アセンブラーが XML を SWIFT フラット ファイル形式にシリアル化するジョブを実行するためです。 シリアル化のために SWIFT アセンブラーに提供BizTalk Server XML には、メッセージの種類とスキーマ情報が含まれています。この情報は、SWIFT アセンブラーがシリアル化に適したスキーマを読み込むのに直接使用できます。 そのため、SWIFT アセンブラーには、ヘッダー スキーマとインターチェンジ スキーマの構成性はありません。シリアル化する XML で指定されたスキーマは常に使用されます。

参照

SWIFT 逆アセンブラーおよびアセンブラーの操作