を使用します。これらのエレメントが使用される理由は、エレメントに各データベースの ID データが含まれており、そのデータがカスタマーごとに固有であるためです。以下の表は、リレーションシップ内の異なるデータベースを、
フル・リレーションシップ名は
http://CustomerModule/ID です。フル・ロール名は以下のとおりです。
- http://CustomerModule/ClarifyCustomer
- http://CustomerModule/SapCustomer
- http://CustomerModule/SiebelCustomer
3 つのデータベースすべてに格納されているビジネス・オブジェクト内部のデータを、定義済みのリレーションシップを使用することによって互いに関係付けることができます。各データベースのカスタマー ID データは、インスタンス ID を共用することにより、他のデータベースのカスタマー・データと関係付けることができます。例えば、Tara McLean は Clarify では
clarify_3 ID で、SAP では
sap_8 で、Siebel では
siebel_8 で、それぞれ識別されます。固有の ID は、
WebSphere ESB リレーションシップ・サービスによって生成されます。
注: Derby データベースのビューを使用してリレーションシップ・インスタンス表を操作することはできません。ただし、このビューを使用してリレーションシップ表の内容を表示することはできます。
共通データベースで作成したビューを使用することにより、複数のリレーションシップ・インスタンスを定義できます。(前述の命名規則を使用した) ビュー名からそれに対応するリレーションシップ・ロールへのマッピングは、共通データベースの
RELN_VIEW_META_T 表に取り込まれます。以下の表に、
ClarifyCustomer、
SapCustomer、および
SiebelCustomer ロールのビュー名の例を示します。
表 7. RELN_VIEW_META_T 表VIEW_NAME |
RELATIONSHIP_NAME |
ROLE_NAME |
V_ID_CLARIFYCUSTOMER_098 |
http://CustomerModule/ID |
http://CustomerModule/ClarifyCustomer |
V_ID_SAPCUSTOMER_515 |
http://CustomerModule/ID |
http://CustomerModule/SapCustomer |
V_ID_SIEBELCUSTOMER_411 |
http://CustomerModule/ID |
http://CustomerModule/SiebelCustomer |
V_USASTATE_ ABBREVIATION_DE8 |
http://CustomerModule/USASTATE |
http://CustomerModule/Abbreviation |
V_USASTATE_CODE_B32 |
http://CustomerModule/USASTATE |
http://CustomerModule/Code |
V_USASTATE_NAME_933 |
http://CustomerModule/USASTATE |
http://CustomerModule/FullName |
表 14 に説明されているビューの列定義には、以下のプロパティーと共に
ROLE_ATTRIBUTE_COLUMN が入ります。
表 8. ビューの列定義列名 |
データ型 |
値 |
説明 |
KEY_ATTRIBUTE_NAME |
キー属性タイプにより異なる |
ヌル以外 |
これは、ロール・インスタンス・データの格納先です。ID リレーションシップの場合、列の名前はキー属性の名前になります。例えば、SAPCUSTOMER_SAPID では、キー属性名として sapid を使用し、ビジネス・オブジェクト名として sapcustomer を使用します。キー属性ごとに 1 つの列を定義します。
静的リレーションシップの場合、列の名前は DATA になります。 |
以下の表では、ID リレーションシップの共通データベースでのビューを示します。
表 9. ビューの列定義Clarify ロールのビュー |
SAP ロールのビュー |
Siebel ロールのビュー |
INSTANCEID |
INSTANCEID |
INSTANCEID |
CLARIFYCUSTOMER_CLARIFYID |
SAPCUSTOMER_SAPID |
SIEBELCUSTOMER_SIEBELID |
STATUS |
STATUS |
STATUS |
LOGICAL_STATE |
LOGICAL_STATE |
LOGICAL_STATE |
LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
ROLEID |
ROLEID |
ROLEID |
注: このビューの列名は、キー属性の列名を除き、すべて一致します。
ビューに対して SQL を実行し、ロール・インスタンス・データを操作するには、ロールの実行時テーブル・ビューの名前を知っておく必要があります。以下の SQL スクリプトは、DB2 Universal Database™ の使用例を示しています。この例では、各データベースのすべてのデータがリレーションシップ・データベースにコピーされていることが前提になっています。データをコピーするには、
SELECT INTO SQL ステートメントを使用します。
// 3 つすべてのアプリケーションからの ID 値をカスタマーごとに保管する表を作成し、
// 固有のインスタンス ID を各カスタマーと関連付けます。
// この表を基本のソース表として使用し、
// リレーションシップ表にデータを取り込みます。
CREATE TABLE joint_t (instanceid INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
clarify_id VARCHAR(10) NOT NULL,
sap_id VARCHAR(10) NOT NULL,
siebel_id VARCHAR(10) NOT NULL)
// 名前と自宅電話番号を 3 つのアプリケーション表にまたがって比較します。
// 一致する人物が見つかったら、その人物の ID 値を各アプリケーション表から
// joint_t 表に挿入します。3 つの ID 値を固有 ID に関連付けます。この ID は、
// 後でリレーションシップ・インスタンス ID として使用します。
INSERT INTO joint_t (clarify_id,sap_id,siebel_id)
SELECT A.ID, B.ID, C.ID
FROM clarifycustomer A,sapcustomer B, siebelcustomer C
WHERE A.homephone=B.homephone AND
B.homephone=C.homephone, AND
B.givenname=C.firstname AND
B.lastname=C.lastname AND
A.fullname=C.firstname CONCAT ' ' CONCAT C.lastname
// 各アプリケーションのシーケンスを作成します。このシーケンスは、後で
// 各ロール表のロール ID として使用します。
CREATE SEQUENCE clarify_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE sap_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE siebel_roleid MINVALUE 1 ORDER CACHE 100
// CLARIFY ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
create_timestamp, update_timestamp)
FROM joint_t
// SAP ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_SAPCUSTOMER_515 (instanceid, roleid, sapcustomer_sapid,
status, logical_state, logical_state_timestamp, create_timestamp,
update_timestamp)
SELECT instanceid NEXTVAL FOR sap_roleid, sap_id, 0, 0, current
timestamp, current timestamp, current timestamp
FROM joint_t
// SIEBEL ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_SIEBELCUSTOMER_AFC (instanceid, roleid, siebelcustomer_siebelid,
status, logical_state, logical_state_timestamp, create_timestamp, update_timestamp)
SELECT instanceid, NEXTVAL FOR siebel_roleid, sap_id, 0, 0, current timestamp,
current timestamp, current timestamp
FROM joint_t
joint_t 表は、キー値を一時的に保管するために作成されます。リソースの保存が終了したら、必要に応じて表を削除できます。または、ビュー・テーブルまたは一時テーブルを作成することもできます。