SWIFT メッセージとビジネス・オブジェクトのデータ・マッピング

IBM WebSphere Business Integration Server Express Adapter for SWIFT は、以下の種類のマッピングをサポートしています。

トップレベル・ビジネス・オブジェクトの構造

SWIFT メッセージのトップレベル・ビジネス・オブジェクト、Msg BO の構造は、SWIFT メッセージの構造を反映します。WebSphere では、各 SWIFT ブロックにビジネス・オブジェクトが必要です。表 22 に示されているように、トップレベル・ビジネス・オブジェクトには、少なくとも各 SWIFT ブロックごとに 1 つずつ、合わせて 5 つの属性が必要です。

注:
表 22 には、結果の属性プロパティーだけが示されています。すべての属性プロパティーのリストは、"トップレベル・ビジネス・オブジェクト (Msg BO) 定義のサンプル"を参照してください。

表 22. トップレベル・ビジネス・オブジェクトの構造
名前 タイプ キー 必須 アプリケーション固有情報
UUID (MQSA が前に付加された) String はい いいえ block=0;parse=no
Swift_01Header Swift_BasicHeader なし はい block=1;
parse=fixlen
Swift_02Header Swift_Application
Header
なし いいえ block=2;
parse=fixlen
Swift_03Header Swift_UserHeader なし いいえ block=3;
parse=delim
Swift_Data Swift_Text なし いいえ block=4;parse=field
Swift_05Trailer String なし いいえ block=5;parse=no
Swift_BlockS (MQSA が付加された) String なし いいえ block=6;parse=no

次の規則は、トップレベル・ビジネス・オブジェクトに適用されます。

注:
ブロック 3 をテンプレートとして使用して、ブロック 5 およびブロック S のビジネス・オブジェクトを作成することもできます。

属性アプリケーション固有の情報については、表 21 を参照してください。

図 6 に、SWIFT メッセージのトップレベル・ビジネス・オブジェクトのビジネス・オブジェクト定義を示します。この Msg BO 定義は、WebSphere 開発環境で作成されました。

アプリケーション固有の情報には、各属性のブロック番号と構文解析パラメーターが含まれています。属性アプリケーション固有テキストの詳細については、表 21 を参照してください。Swift_ 属性は、次の各セクションで説明する子ビジネス・オブジェクトに対応しています。このサンプル・ビジネス・オブジェクト定義の完全な仕様は、"トップレベル・ビジネス・オブジェクト (Msg BO) 定義のサンプル"を参照してください。データ・ブロック属性 Swift_MT502Data のタイプに特に注意してください。これは、SWIFT メッセージ・タイプ 502 で、購買または販売のオーダーを示しています。この属性は、SWIFT メッセージのブロック 4 を表す トップレベル Msg BO の子オブジェクトに対応しています。子オブジェクトは、メッセージ・データ・ビジネス・オブジェクト (MsgData BO) です。

SWIFT トップレベル・ビジネス・オブジェクト定義はすべて、図 6 に示されている定義と同じですが、Swift_MT502Data として示されているブロック 4 が 特定の SWIFT メッセージの実際のデータ定義を反映する点だけは異なります。

図 6. SWIFT メッセージのトップレベル・ビジネス・オブジェクトの定義


注:
SWIFT メッセージのトップレベル・ビジネス・オブジェクト定義を作成するには、Business Object Designer Express を起動し、まずすべての子オブジェクトを作成する必要があります。

トップレベル・ビジネス・オブジェクト (Msg BO) 定義のサンプル

このセクションでは、タイプ MT502 (購買または販売のオーダー) の SWIFT メッセージに対する トップレベル・ビジネス・オブジェクト (Msg BO) の定義のサンプルを示します。

[BusinessObjectDefinition]
 Name = Swift_MT502
 Version = 1.1.0
  
    [Attribute]
    Name = UUID
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=0;parse=no
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_01Header
    Type = Swift_BasicHeader
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=1;parse=fixlen
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_02Header
    Type = Swift_ApplicationHeader
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=2;parse=fixlen
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_03Header
    Type = Swift_UserHeader
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=3;parse=delim
    IsRequiredServerBound = false
    [End]
    [Attribute]
 Name = Swift_MT502Data
 Type = Swift_MT502Data
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=4;parse=field
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_05Trailer
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=5;parse=no
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_BlockS
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = block=6;parse=no
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
 

ブロック 1 ビジネス・オブジェクトの構造

MsgBlck BO、Swift_BasicHeader のフォーマットと属性が、表 23 に示されています。SWIFT データ・ハンドラーは、このブロック内の SWIFT フィールドを それぞれ Swift_BasicHeader ビジネス・オブジェクト内の属性に変換します。このビジネス・オブジェクトには、属性アプリケーション固有の情報はありません。

注:
表 23 には、結果の属性プロパティーだけが示されています。すべての属性プロパティーのリストは、"ブロック 1 ビジネス・オブジェクト定義のサンプル"を参照してください。

表 23. ブロック 1 ビジネス・オブジェクトの構造
名前 タイプ キー 外部キー 必須 カーディナリティー デフォルト 最大長
BlockIdentifier String はい なし はい 1 1:a 2
ApplicationIdentifier String なし なし はい 1
1
ServiceIdentifier String なし なし はい 1
2
LTIdentifier String なし なし はい 1
12
SessionNumber String なし なし はい 1
4
SequenceNumber String なし なし いいえ 1
4
a BlockIdentifier 属性には、「1:」のように、区切り文字「:」が含まれています。

属性アプリケーション固有の情報については、表 21 を参照してください。

図 7 に、WebSphere 開発環境で手動で作成されたブロック 1 ビジネス・オブジェクト定義を示します。各属性名 (ApplicationIdentifierServiceIdentifier など) は、この SWIFT メッセージ・ブロック内のフィールドに対応しています。この SWIFT メッセージ・ブロックの詳細については、付録 C, SWIFT メッセージ構造および「All Things SWIFT: the SWIFT User Handbook」を参照してください。各名前付き属性に対して、型 String を指定してください。このビジネス・オブジェクトのコンポーネントには、属性アプリケーション固有の情報はありません。

注:
この固定長ブロック・ビジネス定義では、属性名に必ず正しい MaxLength 値を指定してください。

図 7. ブロック 1 ビジネス・オブジェクト定義


注:
SWIFT メッセージに対してブロック 1 ビジネス・オブジェクト定義を作成するには、Business Object Designer Express を起動し、"ブロック 1 ビジネス・オブジェクト定義のサンプル"に示された属性の値を入力します。

ブロック 1 ビジネス・オブジェクト定義のサンプル

このセクションでは、タイプ MT502 (購買または販売のオーダー) の SWIFT メッセージに対する ブロック 1 ビジネス・オブジェクトの定義のサンプルを示します。

[BusinessObjectDefinition]
 Name = Swift_BasicHeader
 Version = 1.1.0
  
    [Attribute]
    Name = BlockIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 2
    IsKey = true
    IsForeignKey = false
    IsRequired = true
    DefaultValue = 1:
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ApplicationIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ServiceIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 2
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = LTIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 12
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = SessionNumber
    Type = String
    Cardinality = 1
    MaxLength = 4
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = SequenceNumber
    Type = String
    Cardinality = 1
    MaxLength = 6
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
 

ブロック 2 ビジネス・オブジェクトの構造

ブロック 2 MsgBlk BO、Swift_ApplicationHeader のフォーマットと属性が 表 24 に示されています。SWIFT データ・ハンドラーは、このブロック内の SWIFT フィールドを それぞれ Swift_ApplicationHeader ビジネス・オブジェクト内の属性に変換します。このビジネス・オブジェクトには、属性アプリケーション固有の情報はありません。

注:
表 24 には、結果の属性プロパティーだけが示されています。すべての属性プロパティーのリストは、"ブロック 2 ビジネス・オブジェクト定義のサンプル"を参照してください。

表 24. ブロック 2 ビジネス・オブジェクトの構造
名前 タイプ キー 必須 カーディナリティー デフォルト 最大長
Block Identifier String なし はい 1 2:a 2
IOIdentifier String なし はい 1
1
MessageType String なし はい 1
3
I_ReceiverAddress String なし はい 1
12
I_MessagePriority String なし はい 1
1
I_DeliveryMonitoring String なし いいえ 1
1
I_ObsolescencePeriod String なし いいえ 1
3
O_InputTime String なし はい 1
4
O_MessageInputReference String なし はい 1
28
O_OutputDate String なし いいえ 1
6
O_OutputMessagePriority String なし いいえ 1
6
a BlockIdentifier 属性には、「2」のように、区切り文字「:」が含まれています。

表 24 の最初の 3 つの属性は I/O 属性です。I_ で始まる属性は入力属性であり、SWIFT からビジネス・オブジェクトへの変換中にデータが取り込まれます。O_ で始まる属性は出力属性であり、ビジネス・オブジェクトから SWIFT への変換中にデータが取り込まれます。CxIgnore プロパティーは、ビジネス・オブジェクトから SWIFT への変換に対して 設定する必要があります。

属性アプリケーション固有の情報については、表 21 を参照してください。

図 8 に、WebSphere 開発環境で手動で作成されたブロック 2 ビジネス・オブジェクト定義を示します。各属性名 (BlockIdentifier、IOIdentifier など) は、この SWIFT メッセージ・ブロック内のフィールドに対応しています。示されている定義は、入力属性 (I_) の定義であり、SWIFT からビジネス・オブジェクトへの変換中にデータが取り込まれます。この SWIFT メッセージ・ブロックの詳細については、付録 C, SWIFT メッセージ構造および「All Things SWIFT: the SWIFT User Handbook」を参照してください。各名前付き属性に対して、型 String を指定してください。このビジネス・オブジェクトのコンポーネントには、属性アプリケーション固有の情報はありません。

注:
この固定長ブロック・ビジネス定義では、属性名に必ず正しい MaxLength 値を指定してください。

図 8. ブロック 2 ビジネス・オブジェクト定義


注:
SWIFT メッセージに対してブロック 2 ビジネス・オブジェクト定義を作成するには、Business Object Designer Express を起動し、"ブロック 2 ビジネス・オブジェクト定義のサンプル"に示された属性の値を入力します。

ブロック 2 ビジネス・オブジェクト定義のサンプル

このセクションでは、タイプ MT502 (購買または販売のオーダー) の SWIFT メッセージに対する ブロック 2 ビジネス・オブジェクトの定義のサンプルを示します。

[BusinessObjectDefinition]
 Name = Swift_ApplicationHeader
 Version = 1.1.0
  
    [Attribute]
    Name = BlockIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 2
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    DefaultValue = 2:
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = IOIdentifier
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    DefaultValue = O
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = MessageType
    Type = String
    Cardinality = 1
    MaxLength = 3
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = O_InputTime
    Type = String
    Cardinality = 1
    MaxLength = 4
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = O_MessageInputReference
    Type = String
    Cardinality = 1
    MaxLength = 28
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = O_OutputDate
    Type = String
    Cardinality = 1
    MaxLength = 6
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = O_OutputTime
    Type = String
    Cardinality = 1
    MaxLength = 4
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = O_OutputMessagePriority
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = I_ReceiverAddress
    Type = String
    Cardinality = 1
    MaxLength = 12
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = I_MessagePriority
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = I_DeliveryMonitoring
    Type = String
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = I_ObsolescencePeriod
    Type = String
    Cardinality = 1
    MaxLength = 3
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
 

ブロック 3 ビジネス・オブジェクトの構造

ブロック 3 MsgBlk BO、Swift_UserHeader のフォーマットと属性が 表 25 に示されています。このビジネス・オブジェクトには、属性アプリケーション固有の情報、Tag パラメーターがあります。Tag パラメーターについては、表 21 を参照してください。

注:
表 25 には、結果の属性プロパティーだけが示されています。すべての属性プロパティーのリストは、"ブロック 3 ビジネス・オブジェクト定義のサンプル"を参照してください。

表 25. ブロック 3 ビジネス・オブジェクトの構造
名前 タイプ キー 外部 必須 カーディナリティー アプリケーション固有情報 最大長
Tag103 String はい なし いいえ 1 Tag=103 6
Tag113 String なし なし いいえ 1 Tag=113 6
Tag108 String なし なし いいえ 1 Tag=108 6
Tag119 String なし なし いいえ 1 Tag=119 6
Tag115 String なし なし いいえ 1 Tag=115 6

図 9 に、WebSphere 開発環境で手動で作成されたブロック 3 ビジネス・オブジェクト定義を示します。各属性名 (Tag103Tag113 など) は、この SWIFT メッセージ・ブロック内のフィールドに対応しています。この SWIFT メッセージ・ブロックの詳細については、付録 C, SWIFT メッセージ構造および「All Things SWIFT: the SWIFT User Handbook」を参照してください。各名前付き属性に対して、型 String を指定してください。このビジネス・オブジェクトのコンポーネントのアプリケーション固有の情報は、SWIFT タグです。

図 9. ブロック 3 ビジネス・オブジェクト定義


注:
SWIFT メッセージに対してブロック 3 ビジネス・オブジェクト定義を作成するには、Business Object Designer Express を起動し、"ブロック 3 ビジネス・オブジェクト定義のサンプル"に示された属性の値を入力します。

ブロック 3 ビジネス・オブジェクト定義のサンプル

このセクションでは、タイプ MT502 (購買または販売のオーダー) の SWIFT メッセージに対する ブロック 3 ビジネス・オブジェクトの定義のサンプルを示します。

[BusinessObjectDefinition]
 Name = Swift_UserHeader
 Version = 1.1.0
  
    [Attribute]
    Name = Tag103
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=103
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Tag113
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=113
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Tag108
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=108
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Tag119
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=119
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Tag115
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=115
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    Cardinality = 1
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
 

ブロック 4 ビジネス・オブジェクトの構造

SWIFT ブロック 4 には、SWIFT メッセージの本文が含まれています。ブロック 4 は、一方ではメッセージ・タグとその内容のフィールドから構成され、もう一方ではメッセージ・タグのシーケンスから構成されます。このデータ内容は、ブロック 1、2、および 3 の構造とは異なる、ブロック 4 ビジネス・オブジェクト構造を作成します。ブロック 4 ビジネス・オブジェクトは、メッセージ・データのビジネス・オブジェクト (MsgData BO) です。

SWIFT メッセージ内のすべてのタグとシーケンスが、MsgData BO の子ビジネス・オブジェクトとしてモデル化されます。したがって、MsgData BO は、Field ビジネス・オブジェクト (MsgField BO) と Sequence ビジネス・オブジェクト (MsgSeq BO) の 2 種類の子オブジェクトを持ちます。これらのビジネス・オブジェクトは、SWIFT データがブロック 4 でフォーマットされる方法を反映します。具体的には、これらのビジネス・オブジェクト内の属性は、SWIFT メッセージ・フォーマット仕様で 指定された内容 (メッセージ・タグとその内容) と順序 (シーケンス) をモデル化します。メッセージ・タグのシーケンスは、ビジネス・オブジェクト定義が SWIFT メッセージを忠実に表す場合に重要です。MsgField BO および MsgSeq BO の詳細については、"Sequence ビジネス・オブジェクトと Field ビジネス・オブジェクト" を参照してください。

例として、「SWIFT Standards Release Guide」 から MT502 (購買または販売のオーダー) のフォーマット仕様を見てみましょう。後述の図 10 に、MT502 に対応するビジネス・オブジェクト定義の一部が示されています。ビジネス・オブジェクト定義は、SWIFT メッセージ内のメッセージ・タグとシーケンスの 構造を反映しています。

MsgData BO フォーマット

MsgData BO のフォーマットの要約を以下の各セクションで示します。

MsgData BO 名

SWIFT メッセージのブロック 4 を表す MsgData BO の命名規則は次のとおりです。

      Swift_MT<message_type>Data
 

例えば、次のようになります。

   Name = Swift_MT502Data
 

MsgData BO 属性名

MsgData BO の各属性は、次のいずれかを表します。

したがって、属性名は MsgSeq BO および MsgField BO の属性名と同じになります。MsgField BO 属性の命名規則は次のとおりです。

      Swift_<tag_number>_<position_in_the_SWIFT_message>
 

例えば、次のようになります。

      Name = Swift_94_1
 

MsgSeq BO 属性の命名規則は次のとおりです。

      Swift_MT<message_type>_<SWIFT_sequence_name>
 

例えば、次のようになります。

   Name = Swift_MT502_B
 

詳細については、"Sequence ビジネス・オブジェクトの構造"および"Field ビジネス・オブジェクト定義"を参照してください。

MsgData BO 属性のタイプ

MsgData 属性のタイプは次のとおりです。

MsgField BO 属性:

      Swift_Tag_<tag_number>
 

例えば、次のようになります。

      Type = Swift_Tag_94
 

MsgSeq BO 属性:

      Swift_MT<message_type>_<SWIFT_sequence_name>
 

例えば、次のようになります。

   Type = Swift_MT502_B
 

MsgData BO 属性の ContainedObjectVersion

MsgData BO およびその MsgSeq BO 属性に対して組み込まれたオブジェクト・バージョンは 1.1.0 です。例えば、次のようになります。

[Attribute]
 Name = Swift_MT502_B
 Type = Swift_MT502_B
  
 ...
  
 ContainedObjectVersion = 1.1.0
  
 ...
  
 [End]
 
注:
MsgField BO 属性は単純な属性であり、ContainedObjectVersion を持ちません。

MsgData BO 属性の関係

MsgData BO およびその MsgSeq BO 属性の関係属性プロパティーは、Containment です。例えば、次のようになります。

[Attribute]
 Name = Swift_MT502Data
 Type = Swift_MT502Data
  
 ...
  
 Relationship = Containment
  
 ...
  
 [End]
 

MsgData BO 属性のカーディナリティー

MsgData BO およびその MsgSeq BO 属性のカーディナリティー・プロパティーは n です。フィールドの繰り返しを表す MsgField BO 属性のカーディナリティーも n です。その他の属性のカーディナリティーはすべて 1 です。例えば、次のようになります。

[Attribute]
 Name = Swift_16_1
 Type = Swift_Tag_16
  
 ...
  
 Cardinality = n
  
 ...
  
 [End]
 

MsgData BO 属性の IsKey

各 MsgData BO 定義に、キー属性として定義された属性が少なくとも 1 つ含まれている 必要があります (IsKey = true)。規則では、各 BO 定義内の最初の単一カーディナリティー属性をキー属性として定義する必要があります。

例えば、次のようになります。

[Attribute]
 Name = Swift_16.1
 Type = Swift_Tag_16
  
 ...
  
 Cardinality = 1
  
 IsKey = true
  
 [End]
 

MsgData BO 属性の AppSpecificInfo

MsgData BO 定義では、MsgField BO 属性だけがアプリケーション固有の情報を持ちます。MsgSeq BO 属性では、このプロパティーは常にヌルです。MsgField BO 属性の場合、アプリケーション固有の情報の規則は次のとおりです。

      Tag=nn;Letter=xx;Content=string
 

ここで、nn はフィールドの SWIFT タグ番号、xx はタグに対してサポートされる 1 つ以上の文字オプション、string表 21 で説明されている非汎用フィールドの修飾子の値です。例えば、次のようになります。

[Attribute]
 Name = Swift_16_22
 Type = Swift_Tag_16
  
 ...
  
 AppSpecificInfo = Tag=16;Letter=S;Content=OTHRPRTY
  
 ...
  
 [End]
 

MsgField BO 属性が MsgSeq BO に表示され、アプリケーション固有の情報に次のものが示されている場合は、

...;Union=True
 

DataField 属性の代わりに MsgField 子オブジェクト (TagUnion ビジネス・オブジェクトと その子オブジェクトである TagLetterOption オブジェクト) に値が取り込まれます。TagUnion ビジネス・オブジェクトの詳細については、"Field ビジネス・オブジェクト定義"を参照してください。

Sequence ビジネス・オブジェクトと Field ビジネス・オブジェクト

前述のように、コネクターは SWIFT メッセージ内のシーケンスとタグを それぞれ Sequence ビジネス・オブジェクト (MsgSeq BO) および Field ビジネス・オブジェクト (MsgField BO) としてモデル化します。図 11 に、これらのビジネス・オブジェクトの階層関係を示します。

図 11. (ブロック 4) MsgData BO 内の Field ビジネス・オブジェクト と Sequence ビジネス・オブジェクト


図 12 に、フィールド属性とシーケンス属性を含むシーケンスを示す SWIFT メッセージ (MT502) の定義の一部を示します。シーケンス属性 Swift_MT02_B_Order_Details には、タイプ Tag の いくつかの属性 (例えば、Swift_Tag_16Swift_Tag_94) だけでなく、サブシーケンス Swift_MT502_B1_Price も含まれています。このサブシーケンスはオプションのシーケンスの繰り返しであり、そのプロパティーはこれを反映します (Required= no; Cardinality=n)。サブシーケンスにはアプリケーション固有の情報は含まれていません。

図 12. タグ属性とサブシーケンス属性を含むシーケンス


Sequence ビジネス・オブジェクトの構造

図 13 に示されているように、各 Sequence ビジネス・オブジェクト (MsgSeq BO) 属性は、次のいずれかのものを示します。

MsqSeq BO がネストできるサブシーケンスの数に制限はありません。

図 13. MsgSeq BO 内の Field ビジネス・オブジェクトと Subsequence ビジネス・オブジェクト


図 14 に、MsgSeq BO の別の抜粋を示します。この抜粋では、Swift_Tag_ 属性が MsgField BO を示しています。Swift_MT502_A1_Linkages 属性は、サブシーケンス MsgSeq BO の子オブジェクトに対して使用されています。

図 14. Sequence ビジネス・オブジェクト (MsgSeq BO) からの抜粋


Sequence ビジネス・オブジェクトには次の規則が適用されます。

Sequence ビジネス・オブジェクトのサンプルは、"Sequence ビジネス・オブジェクト定義のサンプル"を参照してください。

MsgSeq BO フォーマット

MsgData BO と同様に、MsgSeq BO は、MsgSeq BO または MsgField BO のいずれかの属性から構成されます。これらの属性のフォーマットについては、"MsgData BO フォーマット"を参照してください。

Sequence ビジネス・オブジェクト定義のサンプル

このセクションでは、タイプ MT502 (購買または販売のオーダー) の SWIFT メッセージに対する MsgSeq BO の定義のサンプルを示します。この定義は、「Mandatory Sequence A Order to Buy or Sell」のものです。

[BusinessObjectDefinition]
 Name = Swift_MT502_A_General_Information
 Version = 1.0.0
  
    [Attribute]
    Name = Start_Of_Block
    Type = Swift_Tag_16
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = true
    IsForeignKey = false
    IsRequired = true
    AppSpecificInfo = Tag=16;Letter=R;Content=GENL
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Senders_Reference
    Type = Swift_Tag_20
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    AppSpecificInfo = Tag=20;Letter=C
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Function_Of_The_Message
    Type = Swift_Tag_23
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    AppSpecificInfo = Tag=23;Letter=G
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Preparation_DateTime
    Type = Swift_Tag_98
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Tag=98;Letter=A|C
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Indicator
    Type = Swift_Tag_22
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = n
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    AppSpecificInfo = Tag=22;Letter=F
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = Swift_MT502_A1_Linkages
    Type = Swift_MT502_A1_Linkages
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = n
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = End_Of_Block
    Type = Swift_Tag_16
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 1
    IsKey = false
    IsForeignKey = false
    IsRequired = true
    AppSpecificInfo = Tag=16;Letter=S;Content=GENL
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
 

Field ビジネス・オブジェクト定義

WebSphere は、すべての SWIFT タグを Field ビジネス・オブジェクト (MsgField BO) として 表します。各 MsgField BO は、フィールドが非汎用であっても、SWIFT 汎用フィールド構造を使用してモデル化されます。WebSphere は 2 つの追加のビジネス・オブジェクト・モデルを使用して、SWIFT メッセージ・コンポーネントの表示と結合に使用される文字とオプションの組み合わせをビジネス・オブジェクト内のサブフィールドとして表します。

MsgField BO フォーマット

図 15 に示されているように、各 MsgField BO には 5 つの属性があります。このうち、TagUnion BO が 1 つだけ含まれており、そのデータ型は以下で括弧 () 内に示されています。

図 15. MsgField BO の属性とビジネス・オブジェクト


SWIFT Qualifier および Issuer Code (IC) 以外のすべてのサブフィールドの内容と順序が、DataField の子オブジェクトに取り込まれます。これは、TagUnion BO およびその子オブジェクト TagLetterOption BO です。図 15 に示されている属性およびビジネス・オブジェクトについては、以下で説明します。

MsgField BO、TagUnion BO、および TagLetterOption BO の名前

MsgField BO の命名規則は次のとおりです。

      Swift_Tag_<N>
 

ここで、N はメッセージ番号を表します。例えば、次のようになります。

      Name = Swift_Tag_22
 

TagUnion BO の命名規則は次のとおりです。

      Swift_Tag_Union_<tag_number>
 

ここで、tag_number はタグ番号の数値表現です。例えば、次のようになります。

      Name = Swift_Tag_Union_20
 

TagLetterOption BO の命名規則は次のとおりです。

      Swift_Tag_Union_<tag_number>_Opt_[<letter_option>]
 

ここで、tag_number はタグ番号の数値表現、[<letter_option>] はタグが文字に関連付けられている場合の文字オプションです。タグに文字が関連付けられていない場合、名前は Opt で終わります。例えば、次のようになります。

      Name = Swift_Tag_Union_20_Opt_C
 

MsgField BO、TagUnion BO、および TagLetter BO Attribute の名前

MsgField BO 内の 5 つの属性の名前は次のとおりです。

TagUnion BO 内の属性の名前は次のとおりです。

      Swift_<tag_number>_[<letter_option>]
 

ここで、tag_number はタグ番号の数値表現、大括弧は、文字がタグに関連付けられている場合のみ付加されることを示します。例えば、次のようになります。

      Swift_20_C
 

TagLetterOption BO 内の属性の名前は、SWIFT フォーマット仕様テーブルに示されているサブフィールド名のワードを連結したものです。SWIFT フォーマット仕様でのワードのスペルに関わりなく、連結されたストリング内の各ワードの先頭文字は常に大文字であり、後続の文字は小文字です。スペースおよび英字記号以外の記号は連結名から除外されます。フィールドにサブフィールドがない場合は、Subfield が属性名として使用されます。例えば、95R 内のサブフィールド「Proprietary」の場合、TagLetterOption BO Swift_Tag_Union_95_Opt_R の定義内の対応する属性名は次のようになります。

      Name = ProprietaryCode
 

MsgField BO、TagUnion BO、および TagLetterOption BO 属性タイプ

MsgField 属性のタイプは次のとおりです。

例えば、MsgField BO 定義では、Swift_Tag_20 属性のタイプは次のように示されます。

   [Attribute]
    Name = DataField
 Type = Swift_Tag_Union_20
 

TagUnion BO 内の属性のタイプは、TagLetterOption BO 子オブジェクトの名前になります。例えば、Swift_Tag_Union_20 の TagUnion BO 定義では、TagLetterOption 属性のタイプは次のようになります。

   [Attribute]
 Name = Swift_20_C
 Type = Swift_Tag_Union_20_Opt_C
 

TagLetterOption BO 内の属性のタイプは常に String です。

MsgField BO、TagUnion BO、および TagLetterOption BO ContainedObjectVersion

MsgField BO、TagUnion BO、および TagLetterOption BO に対して組み込まれているオブジェクト・バージョンは 1.1.0 です。例えば、次のようになります。

また、MsgSeq BO 属性の場合も 1.1.0 です。例えば、次のようになります。

[Attribute]
 Name = Swift_20_C
 Type = Swift_Tag_Union_20_Opt_C
  
 ...
  
 ContainedObjectVersion = 1.1.0
  
 ...
 [End]
 
注:
MsgField BO 属性は単純な属性であり、ContainedObjectVersion を持ちません。

MsgField BO、TagUnion BO、および TagLetterOption BO 属性のカーディナリティー

TagUnion BO および TagLetterOption BO 内の属性のカーディナリティーは、常に 1 に設定されます。例えば、次のようになります。

[Attribute]
 Name = Swift_20_C
 Type = Swift_Tag_Union_20_Opt_C
  
 ...
  
 Cardinality = 1
  
 ...
  
 [End]
 

MsgField BO、TagUnion BO、および TagLetterOption BO 属性の IsKey

各 MsgField BO で、属性 Letter をキー属性として定義する必要があります。

例えば、次のようになります。

[Attribute]
  
 Name = Letter
 Type = String
 IsKey = true
  
 ...
  
 [End]
 

TagUnionBO の最初の属性がキーとして定義されます。

TagLetterOption BO の最初の属性がキーとして定義されます。

TagLetterOption BO 属性の AppSpecificInfo

TagLetterOption BO の AppSpecificInfo 属性の定義は、ビジネス・オブジェクト・サブフィールドに重要な SWIFT メッセージ・フォーマット情報を 提供します。AppSpecificInfo 属性には、次の情報が含まれている必要があります。

   Format=***;Delim=$$$
 

ここで、以下のように説明されます。

*** は、区切り文字情報を除外した SWIFT サブフィールド・フォーマット仕様を表します。

$$$ は、現在のサブフィールドと次のサブフィールドの間の区切り文字を 構成する 1 つ以上の文字を表します。

区切り文字が CrLf である場合は、シンボル・ストリング CrLf が、復帰文字のすぐ後に改行文字が続くことを指定します。

例えば、TagLetterOption BO、Swift_Tag_Union_95_Opt_CAppSpecificInfo 属性は次のように表示されます。

[Attribute]
  
 Name = CountryCode
 Type = String
  
 ...
  
 AppSpecificInfo = Format=2!a;Delim=/
  
 ...
  
 [End]
 

サンプル・オブジェクトと属性定義は、"MsgField BO、TagUnion BO、および TagLetterOption BO の定義のサンプル"を参照してください。

MsgField BO、TagUnion BO、および TagLetterOption BO の定義のサンプル

このセクションでは、TagUnion および TagLetterOption の属性とオブジェクトを示す MsgField BO 定義のサンプルを示します。

サンプル MsgField BO、Swift_Tag_21 は次のとおりです。

[BusinessObjectDefinition]
 Name = Swift_Tag_21
 Version = 3.0.0
  
    [Attribute]
    Name = Letter
    Type = String
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Qualifier
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = IC
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Data
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = DataField
    Type = Swift_Tag_Union_21
    ContainedObjectVersion = 3.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Delete
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
  
    [Verb]
    Name = Update
    [End]
 [End]
 

DataField 属性が、Type 属性によって名前を定義された TagUnion BO、Swift_Tag_Union_21 を表していることに注意してください。次に、その TagUnion BO を示します。これは、Swift_Tag_21 のすべての文字オプションを属性として示します。

[BusinessObjectDefinition]
 Name = Swift_Tag_Union_21
 Version = 1.1.0
  
    [Attribute]
    Name = Swift_21
    Type = Swift_Tag_Union_21_Opt
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_A
    Type = Swift_Tag_Union_21_Opt_A
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_B
    Type = Swift_Tag_Union_21_Opt_B
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_C
    Type = Swift_Tag_Union_21_Opt_C
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_D
    Type = Swift_Tag_Union_21_Opt_D
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_E
    Type = Swift_Tag_Union_21_Opt_E
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_F
    Type = Swift_Tag_Union_21_Opt_F
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_G
    Type = Swift_Tag_Union_21_Opt_G
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_N
    Type = Swift_Tag_Union_21_Opt_N
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_P
    Type = Swift_Tag_Union_21_Opt_P
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = Swift_21_R
    Type = Swift_Tag_Union_21_Opt_R
    ContainedObjectVersion = 1.0.0
    Relationship = Containment
    Cardinality = 1
    MaxLength = 0
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
  
 [End]
 

上記の TagUnion BO の最初の属性 Swift_21 で、IsKey = true であることに注意してください。

属性 Swift_21_A は、子オブジェクト TagLetterOption BO を示しています。この子オブジェクトの名前は、属性の Type 属性によって定義されます (Swift_Tag_Union_21_Opt_A)。次に、その TagLetterOption BO を示します。

[BusinessObjectDefinition]
 Name = Swift_Tag_Union_21_Opt_A
 Version = 1.0.0
  
    [Attribute]
    Name = ReferenceOfTheIndividualAllocation
    Type = String
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Format=16x
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
 

この TagLetterOption BO の唯一の属性である ReferenceOfTheIndividualAllocation が、このタグ・オプションの対応する SWIFT サブフィールド名の連結であることに注意してください。各ワードの先頭文字は大文字です。Qualifier サブフィールドおよび Issuer Code サブフィールドは、TagLetterOption BO の属性から除外されます。この属性では、IsKey プロパティーも true です。

注:
TagUnion BO には、汎用フィールドと非汎用フィールドの両方が含まれています。非汎用フィールドにはサブフィールドがありません。

TagLetterOption BO は、単純および複雑な SWIFT フィールドおよびサブフィールドのフォーマットを表すことができます。次に、Swift_Tag_Union_22_Opt のビジネス・オブジェクト定義、TagLetterOption BO を示します。この属性とアプリケーション固有の情報は、SWIFT Field 22、送信側と受信側との Common Reference 機能のサブフィールド・フォーマットを指定します。FunctionAppSpecificInfo が、SWIFT メッセージでのデータの解析に使用されるフォーマットと区切り文字を指定することに注意してください。CommonReference は、サブフィールド名の連結です。CommonReferenceAppSpecificInfo は、図 16 に示されている内容に対応します。

[BusinessObjectDefinition]
 Name = Swift_Tag_Union_22_Opt
 Version = 1.0.0
  
    [Attribute]
    Name = Function
    Type = String
    MaxLength = 255
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Format=8a;Delim=/
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = CommonReference
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = Format=4!a2!c4!n4!a2!c
    IsRequiredServerBound = false
    [End]
  
    [Attribute]
    Name = ObjectEventId
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    IsRequiredServerBound = false
    [End]
  
    [Verb]
    Name = Create
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
 [End]
 

図 16. SWIFT フィールド定義


Copyright IBM Corp. 2004