メタオブジェクト属性構成

Connector for SWIFT は、2 種類のメタオブジェクトを認識および読み取ることができます。

動的な子メタオブジェクトの属性値は、静的なメタオブジェクトの属性値と重複し、それらをオーバーライドします。

静的メタオブジェクト

静的メタオブジェクトは、ビジネス・オブジェクトごとに定義された変換プロパティーのリストで構成されています。ビジネス・オブジェクトの変換プロパティーを定義するには、ストリング属性を作成し、構文 busObj_verb を使用してそれを命名します。例えば、動詞 Create を含む Customer オブジェクトの変換プロパティーを定義するには、Swift_MT502_Create という名前の属性を作成します。属性のアプリケーション固有テキストには、実際の変換プロパティーを指定します。

さらに、Default という名前の予約済み属性名を、メタオブジェクトに定義することもできます。この属性があると、そのプロパティーはすべてのビジネス・オブジェクトの変換プロパティーのデフォルト値として使用されます。

注:
静的メタオブジェクトが指定されないと、コネクターは、ポーリング時に所与のメッセージ・フォーマットを特定のビジネス・オブジェクト・タイプにマップできません。この場合、コネクターはビジネス・オブジェクトを指定せずに、メッセージ・テキストを構成済みのデータ・ハンドラーに渡します。データ・ハンドラーがテキストのみに基づいたビジネス・オブジェクトを作成できない場合、コネクターはこのメッセージ・フォーマットが認識されていないことを表すエラーを報告します。

表 14 に、メタオブジェクトのプロパティーを示します。

表 14. 静的メタオブジェクト・プロパティー
プロパティー名 説明
CollaborationName コラボレーション名は、ビジネス・オブジェクトと動詞の組み合わせに対する属性の、アプリケーション固有テキスト内で指定される必要があります。例えば、Create 動詞付きのビジネス・オブジェクト Customer の同期要求を処理するようにしたい場合は、静的メタデータ・オブジェクト内に Swift_MTnnn_Verb という名前の属性を設定します。ここで、nnn は SWIFT メッセージ・タイプを表します (例、Swift_MT502_Create)。Swift_MT502_Create 属性には、名前と値のペアを含む、アプリケーション固有テキストが入っていなければなりません。例えば、CollaborationName=MyCustomerProcessingCollab です。構文の詳細については、アプリケーション固有の情報 の節を参照してください。この条件が満たされていない場合は、コネクターが Customer ビジネス・オブジェクトに関する要求を同期処理しようとすると、ランタイム・エラーが発生します。
注:
このプロパティーは同期要求にのみ使用可能です。
DoNotReportBusObj オプションで、DoNotReportBusObj プロパティーを含めることができます。このプロパティーを true に設定すると、発行されるすべての PAN レポート・メッセージのメッセージ本文がブランクになります。このプロパティーは、要求が正常処理されたことは確認したいが、ビジネス・オブジェクト変更の通知は必要ない場合に使用することをお勧めします。このプロパティーは、NAN レポートには影響しません。静的メタオブジェクトにこのプロパティーがない場合、コネクターはデフォルトの false をとり、ビジネス・オブジェクトをメッセージ・レポートに取り込みます。
注:
このプロパティーは同期要求にのみ使用可能です。
InputFormat 入力フォーマットは、特定のビジネス・オブジェクトと関連付けるメッセージ・フォーマットです。検索されたメッセージがこのフォーマットである場合、メッセージは可能であれば特定のビジネス・オブジェクトに変換されます。ビジネス・オブジェクトにこのフォーマットが指定されていない場合、コネクターは特定のビジネス・オブジェクトのサブスクリプション・デリバリーを処理しません。

静的メタオブジェクト内の InputQueue プロパティーは、アダプターでメッセージが特定のビジネス・オブジェクトにマップされる際に、InputFormat プロパティーとともに基準の役割を果たします。この機能は、Adapter for SWIFT Protocol では使用されません。

OutputFormat 出力フォーマットは、指定されたビジネス・オブジェクトから作成されたメッセージで設定されます。OutputFormat プロパティーの値が指定されていない場合、使用可能であれば入力フォーマットが使用されます。動的な子メタオブジェクトに定義された OutputFormat プロパティーは、静的なメタオブジェクトに定義された値をオーバーライドします。
InputQueue コネクターが、新しいメッセージを検出するためにポーリングする入力キュー。コネクター固有のプロパティーとしての InputQueue プロパティーは、アダプターのポーリング先キューを定義します。これは、アダプターがポーリングするキューを決定するのに使用する唯一のプロパティーです。

静的メタオブジェクト内の InputQueue プロパティーは、アダプターでメッセージが特定のビジネス・オブジェクトにマップされる際に、InputFormat プロパティーとともに基準の役割を果たします。この機能は、Adapter for SWIFT Protocol では使用されません。

OutputQueue 出力キューは、特定のビジネス・オブジェクトから派生したメッセージが配信されるキューです。動的な子メタオブジェクトに定義された OutputQueue プロパティーは、静的なメタオブジェクトに定義された値をオーバーライドします。
ResponseTimeout タイムアウトまでの応答の待ち時間 (ミリ秒)。このプロパティーが未定義、または負の値の場合、コネクターは応答を待たずに即時に SUCCESS を戻します。動的子メタオブジェクトに定義された ResponseTimeout プロパティーの値は、静的メタオブジェクトに定義された値をオーバーライドします。
TimeoutFatal このプロパティーが定義されていて、値 true を含む場合、ResponseTimeout に指定された時間内に応答を受信しなければ、コネクターは APP_RESPONSE_TIMEOUT を戻します。応答メッセージを待機中のその他すべてのスレッドは、InterChange Server Express にすぐに APP_RESPONSE_TIMEOUT を戻します。これにより、InterChange Server Express はコネクターへの接続を終了します。動的な子メタオブジェクトに定義された TimeoutFatal プロパティーは、静的なメタオブジェクトに定義された値をオーバーライドします。

注:
コネクター固有のプロパティーとしての InputQueue プロパティーは、アダプターのポーリング先キューを定義します。これは、アダプターがポーリングするキューを決定するのに使用する唯一のプロパティーです。静的メタオブジェクト内の InputQueue プロパティーは、アダプターでメッセージが特定のビジネス・オブジェクトにマップされる際に、InputFormat プロパティーとともに基準の役割を果たします。 Adapter for SWIFT に対しては、この機能を使用しないでください。

アプリケーション固有の情報

アプリケーション固有の情報は、名前と値のペアで構成され、それらはセミコロンで区切られています。例えば、次のようになります。

InputFormat=ORDER_IN;OutputFormat=ORDER_OUT

アプリケーション固有の情報を使用すれば、データ・ハンドラーを入力キューにマップできます。

InputQueue へのデータ・ハンドラーのマッピング

静的メタオブジェクトのアプリケーション固有情報で InputQueue プロパティーを使用することにより、データ・ハンドラーと入力キューを関連付けることができます。この機能は、異なる書式や変換要件を持つ複数の取引先と取り引きする場合に役立ちます。それには、以下の作業を行う必要があります。

  1. コネクター固有プロパティー (InputQueueを参照) を使用して、1 つ以上の入力キューを構成する。
  2. それぞれの入力キューごとに、キュー・マネージャーおよび入力キュー名を指定し、またアプリケーション固有情報にデータ・ハンドラーのクラス名および MIME タイプを 指定する。

例えば、次に示す静的メタオブジェクトの属性は、データ・ハンドラーと、CompReceipts という名前の InputQueue を関連付けています。

[Attribute]
 Name = Swift_MT502_Create
 Type = String
 Cardinality = 1
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 AppSpecificInfo = InputQueue=//queue.manager/CompReceipts;
   DataHandlerClassName=com.crossworlds.
 DataHandlers.swift.disposition_notification;
   DataHandlerMimeType=message/
 disposition_notification
 IsRequiredServerBound = false
 [End]
 

入力フォーマットの多重定義

コネクターは通常、メッセージ検索時に入力フォーマットを特定のビジネス・オブジェクトと動詞の組み合わせと付き合わせます。次に、コネクターはそのビジネス・オブジェクト名とメッセージの内容をデータ・ハンドラーに渡します。これにより、データ・ハンドラーは、メッセージの内容がユーザーの要求するビジネス・オブジェクトと対応しているかどうかを確認できます。

ただし、2 つ以上のビジネス・オブジェクトに同一の入力フォーマットが定義されている場合は、コネクターはデータ・ハンドラーにデータを渡す前にそのデータが表すビジネス・オブジェクトを判別することはできません。このような場合、コネクターはメッセージ内容のみをデータ・ハンドラーに渡してから、生成されるビジネス・オブジェクトに基づいた変換プロパティーを検索します。したがって、データ・ハンドラーはメッセージ内容のみに基づいてビジネス・オブジェクトを判別する必要があります。

生成されるビジネス・オブジェクトの動詞が設定されていない場合、コネクターはなんらかの動詞を含む同じビジネス・オブジェクトに定義されている変換プロパティーを検索します。変換プロパティーのセットが 1 つだけ検出された場合、コネクターは特定の動詞を割り当てます。複数の変換プロパティーが検出された場合、コネクターは動詞を区別できないため、メッセージは失敗します。

静的メタオブジェクトのサンプル

以下に示す静的なメタオブジェクトは、Create および Retrieve の動詞を使用して SWIFT_MT502 ビジネス・オブジェクトを変換するようにコネクターを構成します。属性 Default はメタオブジェクトで定義されます。コネクターは以下の属性を持つ変換プロパティーを使用します。

OutputQueue=CustomerQueue1;ResponseTimeout=5000;
 TimeoutFatal=true 
 

この属性は、その他すべての変換プロパティーのデフォルト値として使用されます。したがって、ある属性によって別の指定をされたり動的な子メタオブジェクト値によってオーバーライドされる場合を除いて、コネクターはすべてのビジネス・オブジェクトをキュー CustomerQueue1 に発行し、その後応答メッセージを待機します。5000 ミリ秒内に応答が到着しない場合、コネクター はすぐに終了します。

動詞 Create を含むビジネス・オブジェクト

属性 Swift_MT502_Create は、フォーマット NEW のメッセージはすべて、動詞 Create を含むビジネス・オブジェクトに変換する必要があることをコネクターに示します。出力フォーマットは定義されていないため、コネクターは入力用に定義されたフォーマット (この場合は NEW) を使用して、このオブジェクトと動詞の組み合わせを表すメッセージを送信します。

動詞 Retrieve を含むビジネス・オブジェクト

属性 Swift_MT502_Retrieve は、動詞 Retrieve を含むビジネス・オブジェクトが、フォーマット RETRIEVE を持つメッセージとして送信される必要があることを示します。デフォルトの応答時間は、コネクターがタイムアウトまでに最大 10000 ミリ秒待機できるようにオーバーライドされているので注意してください (応答が受信されない場合も終了します)。

[ReposCopy]
 Version = 3.1.0
 Repositories = 1cHyILNuPTc=
 [End]
 [BusinessObjectDefinition]
 Name = Sample_MO
 Version = 1.0.0
  
 [Attribute]
 Name = Default
 Type = String
 Cardinality = 1
 MaxLength = 1
 IsKey = true
 IsForeignKey = false
 IsRequired = false
 AppSpecificInfo = OutputQueue=CustomerQueue1;ResponseTimeout=5000;TimeoutFatal=true
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = Swift_MT502_Create
 Type = String
 Cardinality = 1
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 AppSpecificInfo = InputFormat=NEW
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = Swift_MT502_Retrieve
 Type = String
 Cardinality = 1
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 AppSpecificInfo = OutputFormat=RETRIEVE;ResponseTimeout=10000
 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]
 

動的な子メタオブジェクト

静的なメタオブジェクトに必要なメタデータを指定することが困難または実行不可能な場合、コネクターは、ビジネス・オブジェクト・インスタンスごとに実行時に指定されたメタデータをオプションで受け入れることができます。

コネクターは、コネクターに渡されるトップレベル・ビジネス・オブジェクトに子として追加される動的なメタオブジェクトから、変換プロパティーを認識し、読み取ります。この動的な子メタオブジェクトの属性値は、コネクターの構成に使用される静的なメタオブジェクトに指定可能であった変換プロパティーと重複します。

動的な子メタオブジェクトのプロパティーは静的なメタオブジェクトから検出されるプロパティーをオーバーライドするため、動的な子メタオブジェクトを指定する場合は、静的なメタオブジェクトを指定するコネクター・プロパティーを組み込む必要はありません。つまり、動的子メタオブジェクトと静的メタオブジェクトのいずれを使用することも、両方を使用することもできます。

表 15 に、ビジネス・オブジェクト Swift_MT502_Create の静的メタオブジェクト・プロパティーの例を示します。アプリケーション固有のテキストは、セミコロンで区切られた名前と値のペアで構成されます。

表 15. Swift_MT502_Create の静的メタオブジェクト構造
属性名 アプリケーション固有のテキスト
Swift_MT502_Create InputFormat=ORDER_IN;


OutputFormat=ORDER_OUT;


OutputQueue=QueueA;


ResponseTimeout=10000;


TimeoutFatal=False

表 16 に、ビジネス・オブジェクト Swift_MT_Create の動的子メタオブジェクトの例を示します。

表 16. Swift_MT502_Create の動的子メタオブジェクト構造
プロパティー名
OutputFormat ORDER_OUT
OutputQueue QueueA
ResponseTimeout 10000
TimeoutFatal False

コネクターは、受信したトップレベルのビジネス・オブジェクトのアプリケーション固有テキストをチェックし、タグ cw_mo_conn に子メタオブジェクトが指定されているかを判別します。子メタオブジェクトが指定されている場合、動的な子メタオブジェクトの値が静的なメタオブジェクトに指定された値をオーバーライドします。

ポーリング中の動的な子メタオブジェクトの含まれるデータ

ポーリング中に検索されたメッセージについてさらに詳しい情報を InterChange Server Express に提供するため、コネクターは、作成されたビジネス・オブジェクトに動的なメタオブジェクトが定義済みである場合、その特定の属性に値を取り込みます。

表 17 に、動的な子メタオブジェクトがポーリング用に構造化される方法を示します。

表 17. ポーリング用の JMS 動的子メタオブジェクト構造
プロパティー名 サンプル値
InputFormat ORDER_IN
InputQueue MYInputQueue
OutputFormat CxIgnore
OutputQueue CxIgnore
ResponseTimeout CxIgnore
TimeoutFatal CxIgnore

表 17 に示すように、動的子メタオブジェクトで追加のプロパティー InputQueue を定義できます。このプロパティーには特定のメッセージが検索されるキューの名前が含まれます。子メタオブジェクト内にこのプロパティーが定義されていない場合、これらには値が取り込まれません。

シナリオ例:

動的な子メタオブジェクトのサンプル

[BusinessObjectDefinition]
 Name = MO_Sample_Config
 Version = 1.0.0
  
 [Attribute]
 Name = OutputFormat
 Type = String
 MaxLength = 1
 IsKey = true
 IsForeignKey = false
 IsRequired = false
 DefaultValue = ORDER
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = OutputQueue
 Type = String
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 DefaultValue = OUT
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = ResponseTimeout
 Type = String
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 DefaultValue = -1
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = TimeoutFatal
 Type = String
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 DefaultValue = false
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = InputFormat
 Type = String
 MaxLength = 1
 IsKey = true
 IsForeignKey = false
 IsRequired = false
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = InputQueue
 Type = String
 MaxLength = 1
 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]
 [BusinessObjectDefinition]
 Name = Swift_MT502
 Version = 1.0.0
 AppSpecificInfo = cw_mo_conn=MyConfig
  
 [Attribute]
 Name = FirstName
 Type = String
 MaxLength = 1
 IsKey = true
 IsForeignKey = false
 IsRequired = false
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = LastName
 Type = String
 MaxLength = 1
 IsKey = true
 IsForeignKey = false
 IsRequired = false
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = Telephone
 Type = String
 MaxLength = 1
 IsKey = false
 IsForeignKey = false
 IsRequired = false
 IsRequiredServerBound = false
 [End]
 [Attribute]
 Name = MyConfig
 Type = MO_Sample_Config
 ContainedObjectVersion = 1.0.0
 Relationship = Containment
 Cardinality = 1
 MaxLength = 1
 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]
 

JMS ヘッダー、SWIFT メッセージ・プロパティー、および動的子メタオブジェクト属性

動的メタオブジェクトに属性を追加すると、メッセージ・トランスポートの詳細情報を取得したりメッセージ・トランスポートを詳細に制御したりすることができます。このような属性を追加すると、JMS プロパティーを変更し、(アダプター・プロパティーで指定された デフォルト ReplyToQueue を使用せずに) 要求ごとに ReplyToQueue を制御したり、メッセージの CorrelationID を再ターゲットしたりすることができます。このセクションでは、これらの属性、および同期モードと非同期モードの両方におけるイベント通知と要求処理に対する影響について説明します。

以下の属性は JMS および SWIFT ヘッダー・プロパティーを反映しており、動的メタオブジェクトで認識されます。

表 18. 動的メタオブジェクト・ヘッダー属性
ヘッダー属性名 モード 対応する JMS ヘッダー
CorrelationID
 
読み取り/書き込み JMSCorrelationID
ReplyToQueue
 
読み取り/書き込み JMSReplyTo
DeliveryMode
 
読み取り/書き込み JMSDeliveryMode
Priority
 
読み取り/書き込み JMSPriority
Destination
 
読み取り JMSDestination
Expiration
 
読み取り JMSExpiration
MessageID
 
読み取り JMSMessageID
Redelivered
 
読み取り JMSRedelivered
TimeStamp
 
読み取り JMSTimeStamp
Type
 
読み取り JMSType
UserID
 
読み取り JMSXUserID
AppID
 
読み取り JMSXAppID
DeliveryCount
 
読み取り JMSXDeliveryCount
GroupID
 
読み取り JMSXGroupID
GroupSeq
 
読み取り JMSXGroupSeq
JMSProperties
 
読み取り/書き込み

読み取り専用属性は、イベント通知中にメッセージ・ヘッダーから読み取られ、動的メタオブジェクトに書き込まれます。これらのプロパティーは、要求処理中に応答メッセージが発行されたときに動的メタオブジェクトも設定します。読み取り/書き込み属性は、要求処理中に作成されるメッセージ・ヘッダーで設定されます。イベント通知中は、読み取り/書き込み属性はメッセージ・ヘッダーから読み取られ、動的メタオブジェクトを設定します。

以下のセクションでは、これらの属性の解釈および使用について説明します。

注:
上記の属性はいずれも必須ではありません。ビジネス・プロセスに関連する動的メタオブジェクトには任意の属性を追加できます。

JMS プロパティー

動的メタオブジェクトの他の属性と異なり、JMSProperties は単一カーディナリティー子オブジェクトを定義する必要があります。この子オブジェクトの各属性は、以下のように JMS メッセージ・ヘッダーの可変部分で読み取り/書き込みを行う単一プロパティーを定義する必要があります。

  1. 属性の名前はセマンティック値を持ちません。
  2. 属性のタイプは、JMS プロパティー・タイプに無関係に 必ず String でなければなりません。
  3. 属性のアプリケーション固有情報は、属性をマップする JMS メッセージ・プロパティーの名前と形式を 定義する 2 つの名前と値の組を含まなければなりません。

以下の表に、JMSProperties オブジェクトの属性に対して定義する必要があるアプリケーション固有情報プロパティーを示します。

表 19. JMS プロパティー属性のアプリケーション固有情報
名前 指定可能な値 コメント
Name 任意の有効な JMS プロパティー名 これは JMS プロパティーの名前です。ベンダーによっては、拡張機能を提供するために特定のプロパティーを予約している場合があります。一般に、ユーザーはベンダー固有の機能にアクセスする場合以外は、JMS で開始するカスタム・プロパティーを定義してはなりません。
Type StringIntBooleanFloatDoubleLongShort これは JMS プロパティーのタイプです。JMS API は、JMS メッセージに値を設定するための多くのメソッドを提供します (例: setIntPropertysetLongPropertysetStringProperty)。ここで指定される JMS プロパティーのタイプによって、これらのどのメソッドを使用してメッセージのプロパティー値を設定するかが決まります。

以下の図に、動的メタオブジェクトの属性 JMSProperties および JMS メッセージ・ヘッダー の 4 つのプロパティー (ID、GID、RESPONSE、および RESPONSE_PERSIST) の定義を示します。属性のアプリケーション固有情報はそれぞれの名前およびタイプを定義します。例えば、属性 ID はタイプ String の JMS プロパティー ID に マップされます。

図 4. 動的メタオブジェクトの JMS プロパティー属性


非同期イベント通知

ヘッダー属性を持つ動的メタオブジェクトがイベント・ビジネス・オブジェクトに存在する場合は、コネクターは、(メタオブジェクトにトランスポート関連のデータを設定するほかに) 以下のステップを実行します。

  1. メタオブジェクトの CorrelationId 属性に、メッセージの JMSCorrelationID ヘッダー・フィールドで指定された値を設定します。
  2. メタオブジェクトの ReplyToQueue 属性に、メッセージの JMSReplyTo ヘッダー・フィールドで指定されたキューを設定します。このヘッダー・フィールドはメッセージの Java オブジェクトによって表されるため、この属性にはキューの名前 (多くの場合は URI) が設定されます。
  3. メタオブジェクトの DeliveryMode 属性に、メッセージの JMSDeliveryMode ヘッダー・フィールドで指定された値を設定します。
  4. メタオブジェクトの Priority 属性に、メッセージの JMSPriority ヘッダー・フィールドを設定します。
  5. メタオブジェクトの Destination 属性に、メッセージの JMSDestination ヘッダー・フィールドの名前を設定します。Destination はオブジェクトによって表されるため、この属性には Destination オブジェクトの名前が設定されます。
  6. メタオブジェクトの Expiration 属性に、メッセージの JMSExpiration ヘッダー・フィールドの値を設定します。
  7. メタオブジェクトの MessageID 属性に、メッセージの JMSMessageID ヘッダー・フィールドの値を設定します。
  8. メタオブジェクトの Redelivered 属性に、メッセージの JMSRedelivered ヘッダー・フィールドの値を設定します。
  9. メタオブジェクトの TimeStamp 属性に、メッセージの JMSTimeStamp ヘッダー・フィールドの値を設定します。
  10. メタオブジェクトの Type 属性に、メッセージの JMSType ヘッダー・フィールドの値を設定します。
  11. メタオブジェクトの UserID 属性に、メッセージの JMSXUserID プロパティー・フィールドの値を設定します。
  12. メタオブジェクトの AppID 属性に、メッセージの JMSXAppID プロパティー・フィールドの値を設定します。
  13. メタオブジェクトの DeliveryCount 属性に、メッセージの JMSXDeliveryCount プロパティー・フィールドの値を設定します。
  14. メタオブジェクトの GroupID 属性に、メッセージの JMSXGroupID プロパティー・フィールドの値を設定します。
  15. メタオブジェクトの GroupSeq 属性に、メッセージの JMSXGroupSeq プロパティー・フィールドの値を設定します。
  16. メタオブジェクトの JMSProperties 属性に定義されたオブジェクトを検証します。アダプターは、メッセージの対応するプロパティーの値をこのオブジェクトの各属性に設定します。特定のプロパティーがメッセージで定義されていない場合は、アダプターはその属性の値を CxBlank に設定します。

同期イベント通知

同期イベント処理の場合は、アダプターはイベントを通知し、InterChange Server Express からの応答を待った後、アプリケーションに応答メッセージを送信します。ビジネス・データに対する変更は、戻される応答メッセージに反映されます。イベントを通知する前に、アダプターは、非同期イベント通知の場合と同様に動的メタオブジェクトを設定します。動的メタオブジェクトに設定される値は、以下のように応答発行ヘッダーに反映されます (動的メタオブジェクトの 他の読み取り専用属性は無視されます)。

非同期要求処理

コネクターは、動的メタオブジェクト (存在する場合) を使用して要求メッセージを設定してから発行します。コネクターは、以下のステップを実行してから要求メッセージを送信します。

  1. 属性 CorrelationID が動的メタオブジェクトに存在する場合は、コネクターは、アウトバウンド要求メッセージの CorrelationID を この値に設定します。
  2. 属性 ReplyToQueue が動的メタオブジェクトで指定されている場合は、コネクターは、応答メッセージでこのキューを渡し、このキューで応答を待ちます。これにより、コネクター構成プロパティーで指定されている ReplyToQueue 値を オーバーライドできます。さらに負の ResponseTimeout (コネクターが応答を待たないことを示す) を指定した場合は、コネクターは実際には応答を待ちませんが、応答メッセージで ReplyToQueue が設定されます。
  3. 属性 DeliveryMode2 に設定すると、メッセージは永続的に送信されます。DeliveryMode1 に設定すると、メッセージは永続的に送信されません。その他の値を設定すると、コネクターに障害が発生します。MO に DeliveryMode を指定しないと、JMS プロバイダーが永続設定を確立します。
  4. 属性 Priority を指定すると、コネクターが発信要求に値を設定します。Priority 属性には 0 から 9 までの値を設定できます。その他の値を指定すると、コネクターが終了します。
  5. 動的メタオブジェクトで属性 JMSProperties を指定した場合は、コネクターによって送信されるアウトバウンド・メッセージに、子動的メタオブジェクトで指定された対応する JMS プロパティーが設定されます。

注:
動的メタオブジェクトのヘッダー属性が定義されていない場合 または CxIgnore を指定した場合は、コネクターはデフォルト設定に従います。

同期要求処理

コネクターは、動的メタオブジェクト (存在する場合) を使用して要求メッセージを設定してから発行します。動的メタオブジェクトがヘッダー属性を含む場合は、コネクターは、応答メッセージで検出された対応する新しい値をそのヘッダー属性に設定します。コネクターは、応答メッセージを受信した後、(メタオブジェクトにトランスポート関連のデータを設定するほかに) 以下のステップを実行します。

  1. 属性 CorrelationID が動的メタオブジェクトに存在する場合は、アダプターは、応答メッセージで指定された JMSCorrelationID で この属性を更新します。
  2. 属性 ReplyToQueue が動的メタオブジェクトで定義されている場合は、アダプターは、応答メッセージで指定された JMSReplyTo の名前で この属性を更新します。
  3. 属性 DeliveryMode が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSDeliveryMode ヘッダー・フィールドの値で この属性を更新します。
  4. 属性 Priority が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSPriority ヘッダー・フィールドの値で この属性を更新します。
  5. 属性 Destination が動的メタオブジェクトで定義されている場合は、アダプターは、応答メッセージで指定された JMSDestination の名前で この属性を更新します。
  6. 属性 Expiration が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSExpiration ヘッダー・フィールドの値で この属性を更新します。
  7. 属性 MessageID が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSMessageID ヘッダー・フィールドの値で この属性を更新します。
  8. 属性 Redelivered が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSRedelivered ヘッダー・フィールドの値で この属性を更新します。
  9. 属性 TimeStamp が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSTimeStamp ヘッダー・フィールドの値で この属性を更新します。
  10. 属性 Type が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSType ヘッダー・フィールドの値で この属性を更新します。
  11. 属性 UserID が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSXUserID ヘッダー・フィールドの値で この属性を更新します。
  12. 属性 AppID が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSXAppID プロパティー・フィールドの値で この属性を更新します。
  13. 属性 DeliveryCount が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSXDeliveryCount ヘッダー・フィールドの値で この属性を更新します。
  14. 属性 GroupID が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSXGroupID ヘッダー・フィールドの値で この属性を更新します。
  15. 属性 GroupSeq が動的メタオブジェクトに存在する場合は、アダプターは、メッセージの JMSXGroupSeq ヘッダー・フィールドの値で この属性を更新します。
  16. 属性 JMSProperties が動的メタオブジェクトで定義されている場合は、アダプターは、子オブジェクトで定義されているすべてのプロパティーを、応答メッセージで検出された値で更新します。子オブジェクトで定義されているプロパティーがメッセージに存在しない場合は、値は CxBlank に設定されます。

注:
動的メタオブジェクトを使用して要求メッセージで設定された CorrelationID を変更しても、アダプターが応答メッセージを識別する方法には影響しません。アダプターは、デフォルトですべての応答メッセージの CorrelationID がアダプターによって送信された要求のメッセージ ID に等しいことを要求します。

エラー処理

JMS プロパティーをメッセージから読み取れない場合、またはメッセージに書き込めない場合は、コネクターはエラーをログに記録し、要求またはイベントは失敗します。ユーザー指定の ReplyToQueue が存在しないかアクセスできない場合は、コネクターはエラーをログに記録し、要求は失敗します。CorrelationID が無効であるか設定できない場合は、コネクターはエラーをログに記録し、要求は失敗します。いずれの場合も、ログに記録されたメッセージはコネクターのメッセージ・ファイルからのものです。

Copyright IBM Corp. 2004