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