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

Adapter for WebSphere Commerce は、2 種類のメタオブジェクトを認識し、読み取ることができます。

動的子メタオブジェクトの属性値は、静的メタオブジェクトの属性値をコピーしてオーバーライドします。

静的メタオブジェクト

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

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

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

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

表 16. WebSphere Commerce の静的メタオブジェクトのプロパティー
プロパティー名 説明
CollaborationName
注:
これは、同期イベント処理専用のプロパティーです (同期イベント処理は、このバージョンのアダプターではサポートされていません)。
DataEncoding

DataEncoding は、メッセージの読み取り/書き込みに使用するエンコードです。このプロパティーが静的メタオブジェクトで指定されていない場合、コネクターは特定のエンコードを使用せずにメッセージの読み取りを試みます。動的子メタオブジェクトで定義されている DataEncoding は、静的メタオブジェクトで定義されている値をオーバーライドします。デフォルト値は Text です。この属性の値のフォーマットは、messageType[:enc] です。つまり、有効な値は、Text:ISO8859_1Text:UnicodeLittleTextBinary です。

DataHandlerConfigMO

構成情報を提供するためにデータ・ハンドラーに渡すメタオブジェクト。このプロパティーが静的メタオブジェクトで指定されている場合は、DataHandlerConfigMO コネクター・プロパティーで指定されている値がオーバーライドされます。このプロパティーが動的子メタオブジェクトで定義されている場合は、コネクター・プロパティーと静的メタオブジェクトのプロパティーがオーバーライドされます。指定するビジネス・オブジェクトは、アダプターでサポートされていなければなりません。

DataHandlerMimeType

特定の MIME タイプに基づいてデータ・ハンドラーを指定します。アダプターが WebSphere Commerce とやり取りするためには、MIME タイプとして text/xml を使用しなければなりません。

このプロパティーが静的メタオブジェクトで指定されている場合は、DataHandlerMimeType コネクター・プロパティーで指定されている値がオーバーライドされます。このプロパティーが動的子メタオブジェクトで定義されている場合は、コネクター・プロパティーと静的メタオブジェクトのプロパティーがオーバーライドされます。DataHandlerConfigMO で指定するビジネス・オブジェクトは、このプロパティーの値に対応する属性を持っていなければなりません。

DoNotReportBusObj

DoNotReportBusObj プロパティーは、必要に応じて取り込むことができます。このプロパティーを true に設定すると、発行されるすべての PAN レポート・メッセージのメッセージ本体がブランクになります。要求側が、要求が正常に処理されたことは確認したいが、ビジネス・オブジェクトに対する変更の通知は必要としない場合に、このプロパティーの設定をお勧めします。これは NAN レポートには影響しません。

このプロパティーが静的メタオブジェクトで指定されていない場合、アダプターによってデフォルトの false に設定され、メッセージ・レポートにビジネス・オブジェクトが取り込まれます。

注:
これは、同期イベント処理専用のプロパティーです (同期イベント処理は、このバージョンのアダプターではサポートされていません)。
InputFormat

InputFormat は、所定のビジネス・オブジェクトに関連付けるメッセージ・フォーマットです。取得したメッセージがこのフォーマットであると、そのメッセージは可能な限り所定のビジネス・オブジェクトに変換されます。

OutputFormat

OutputFormat は、所定のビジネス・オブジェクトから作成するメッセージに対するプロパティーです。OutputFormat が指定されていない場合は、入力フォーマットが使用されます (使用可能な場合)。OutputFormat が動的子メタオブジェクトで定義されている場合、静的メタオブジェクトで定義されている値はオーバーライドされます。

InputQueue コネクターが新規メッセージを検出するためにポーリングする入力キュー。複数の InputQueues を構成するため、また状況に応じて、別のデータ・ハンドラーを各キューにマップするために、コネクター固有プロパティーを使用することができます。
OutputQueue

OutputQueue は、所定のビジネス・オブジェクトから生成されたメッセージを引き渡す出力キューです。OutputQueue が動的子メタオブジェクトで定義されている場合、静的メタオブジェクトで定義されている値はオーバーライドされます。

ResponseTimeout

応答を待機する場合のタイムアウト時間 (ミリ秒単位) を指定します。この値が定義されていなかったり、値がゼロより小さい場合、アダプターは応答を待機せずに即時に SUCCESS を戻します。ResponseTimeout が動的子メタオブジェクトで定義されている場合、静的メタオブジェクトで定義されている値はオーバーライドされます。

TimeoutFatal

このプロパティーが定義され、値が True の場合、ResponseTimeout で指定されている時間内に応答を受け取らないと、アダプターは APP_RESPONSE_TIMEOUT を戻します。応答メッセージを待機しているその他のスレッドはすべて、即時に InterChange Server Express に APP_RESPONSE_TIMEOUT を戻します。これにより、InterChange Server Express はアダプターを終了します。TimeoutFatal が動的子メタオブジェクトで定義されている場合、静的メタオブジェクトで定義されている値はオーバーライドされます。


表 17. Customer_Create の場合の JMS の静的メタオブジェクト構造
属性名 アプリケーション固有のテキスト
Customer_Create DataEncoding=Text:UnicodeLittle; InputFormat=CUST_IN; OutputFormat=CUST_OUT; OutputQueue=QueueA; ResponseTimeout=10000; TimeoutFatal=False

アプリケーション固有のテキスト

アプリケーション固有のテキストは、セミコロンを区切り文字とする name-value 形式で指定します。例えば、次のようになります。

InputFormat=CUST_IN;OutputFormat=CUST_OUT
 

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

静的メタオブジェクトのアプリケーション固有情報の InputQueue プロパティーを使用して、データ・ハンドラーと入力キューを関連付けることができます。この機能は、それぞれが異なるフォーマットと変換要件を持つ複数の取り引き先パートナーを処理する際に便利です。これを行うには、以下の手順を実行する必要があります。

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

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

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

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

メッセージを取得する場合、コネクターは通常、入力フォーマットを、ビジネス・オブジェクトと動詞の組み合わせに固有のフォーマットと突き合わせます。そして、アダプターは、ビジネス・オブジェクトの名前とメッセージの内容をデータ・ハンドラーに渡します。これで、データ・ハンドラーは、メッセージの内容が、ユーザーが必要とするビジネス・オブジェクトに対応するかどうかを検証することができます。

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

生成されたビジネス・オブジェクトで動詞が設定されていない場合は、コネクターは、任意の動詞を使って、このビジネス・オブジェクトに対して定義されている変換プロパティーを探します。見つかった変換プロパティー・セットが 1 つだけの場合は、コネクターは、その指定した動詞を割り当てます。複数のプロパティーが見つかった場合は、コネクターは動詞を見分けることができないので、メッセージを異常終了します。

サンプル・メタオブジェクト

以下に示すメタオブジェクトでは、動詞 Create を使用して Customer ビジネス・オブジェクトを変換するようにコネクターが構成されます。

[BusinessObjectDefinition]
 Name = MO_WebSphereCommerceConfig
 Version = 3.0.0
  
    [Attribute]
    Name = Default
    Type = String
    MaxLength = 1
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = OutputQueue=queue://<Queue Manager
     Name>/WCS_Serial_Inbound?targetClient=1;
      OutputFormat=MQSTR
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = WCS_Create_WCS_Customer_Create
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = OutputQueue=queue://<Queue Manager
     Name>/WCS_Serial_Inbound?targetClient=1;
      OutputFormat=MQSTR
    IsRequiredServerBound = false
    [End]
    [Attribute]
    Name = WCS_Report_NC_PurchaseOrder_Create
    Type = String
    MaxLength = 255
    IsKey = false
    IsForeignKey = false
    IsRequired = false
    AppSpecificInfo = InputFormat=MQSTR
    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]
 

動的子メタオブジェクト

静的メタオブジェクトからメタデータを指定できない場合、コネクターは、ビジネス・オブジェクトのインスタンスごとにランタイムで指定されるメタデータを受け入れることができます。

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

動的子メタオブジェクトのプロパティーは、静的メタオブジェクトのプロパティーをオーバーライドするので、動的子メタオブジェクトを指定する場合は、静的メタオブジェクトを指定するコネクター・プロパティーを取り込む必要はありません。したがって、動的子メタオブジェクトは、静的メタオブジェクトとは切り離して使用することができます (静的メタオブジェクトを動的子メタオブジェクトと切り離して使用することもできます)。

表 17 および 表 18 に、ビジネス・オブジェクト Customer_Create の静的メタオブジェクトと動的子メタオブジェクトのサンプルを示します。アプリケーション固有のテキストは、セミコロンを区切り文字とする name-value の形式で構成されることに注意してください。

表 18. Customer_Create の場合の WebSphere Commerce の動的子メタオブジェクト構造
属性名
DataEncoding Text:UnicodeLittle
DataHandlerMimeTypea text/delimited
OutputFormat CUST_OUT
OutputQueue QueueA
ResponseTimeout 10000
TimeoutFatal False

a. DataHandlerConfigMO は、コネクター構成プロパティーまたは静的メタオブジェクトのいずれかで指定されているものと見なします。

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

ポーリング時の活動

ポーリング時に取得したメッセージの詳細情報をコラボレーションに提供するために、コネクターは動的メタオブジェクトの特定の属性を生成します (作成したビジネス・オブジェクトですでに定義されている場合)。

表 19 に、ポーリング時の動的子メタオブジェクトの構造を示します。

表 19. ポーリング時の JMS の動的子メタオブジェクトの構造
属性名 サンプル値
InputFormat CUST_IN
InputQueue MYInputQueue
OutputFormat CxIgnore
OutputQueue CxIgnore
ResponseTimeout CxIgnore
TimeoutFatal CxIgnore

表 19 に示すように、動的子メタオブジェクトでは、追加属性 InputQueue を定義することができます。この属性には、所定のメッセージの取得先のキューの名前が入ります。このプロパティーは、子メタオブジェクトで定義されていない場合は生成されません。

シナリオ例:

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

[BusinessObjectDefinition]
 Name = MO_Sample_Config
 Version = 1.0.0
  
    [Attribute]
    Name = OutputFormat
    Type = String
    MaxLength = 1
    IsKey = true
    IsForeignKey = false
    IsRequired = false
    DefaultValue = CUST
    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 = Delete
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
  
    [Verb]
    Name = Update
    [End]
 [End]
 [BusinessObjectDefinition]
 Name = Customer
 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 = Delete
    [End]
  
    [Verb]
    Name = Retrieve
    [End]
  
    [Verb]
    Name = Update
    [End]
 [End]
 

Copyright IBM Corp. 2004