Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド 11gリリース2 (11.1.2) B71697-03 |
|
![]() 前 |
![]() 次 |
この章では、OAAMデータベース・スキーマ内のデータでOracle BI Publisherレポートを作成する方法について説明します。
この章は次の項で構成されています:
Oracle Adaptive Access ManagerデータベースからOAAMレポートを作成する方法については、次の各項を参照してください。コード・リストでは、OAAM表とフィールドの名前は太字および斜体になっています。
新しいレポートの作成手順については、『Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド』を参照してください。
多くの表のいくつかのフィールドは、OAAMユーザー定義列挙に対応する数値型コードです。OAAMのユーザー定義列挙の詳細は、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。この項では、これらの型コードを読取り可能な名前にマップする方法について説明します。
これらの名前を解決する方法は2つあり、どちらを使用するかは、英語のみで表示するか、国際化した文字列で表示するかにより決まります。
次のSQLコードは、問合せに結合基準を追加する方法を示しています。
SELECT … FROM … LEFT OUTER JOIN ( SELECT enumElement.num_value, enumElement.label FROM v_b_enum enum INNER JOIN v_b_enum_elmnt enumElement ON on enum.enum_id = enum_element.enum_id WHERE enum.prop_name = 'enum name') alias ON table.type_field = alias.num_value …
このコード中のtable.type_field
は、文字列に置き換える型コード値を格納するフィールドです。aliasは、内部select句に渡す名前です。最後に、enum_name
は、ユーザー定義列挙のプロパティ名です。
レポートに表示するには、select句にalias
.labelを追加する必要があります。
次のSQLコードは、問合せに結合基準を追加する方法を示しています。
SELECT … FROM … LEFT OUTER JOIN ( SELECT t0.config_value, element.num_value FROM v_b_config_rb t0 INNER JOIN ( SELECT enum_element.num_value, enum_element.str_value, enum.prop_name FROM v_b_enum enum INNER JOIN v_b_enum_elmnt enum_element ON enum.enum_id = enum_element.enum_id WHERE enum.prop_name = 'enum name') element ON t0.config_name=element.prop_name || '.' || element.str_value || '.name' WHERE t0.locale_id = ( SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND country = substr(:xdo_user_ui_locale, 4, 2) AND (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr(:xdo_user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_user_ui_locale, 4, 2) IN ('CN', 'TW'))) UNION SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND NOT EXISTS(SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND country = substr(:xdo_user_ui_locale, 4, 2)) AND country IS NULL AND (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr(:xdo_user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_user_ui_locale, 4, 2) IN ('CN', 'TW'))) UNION SELECT locale_id FROM v_b_locale WHERE language = 'en' AND NOT (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr(:xdo_user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_user_ui_locale, 4, 2) IN ('CN', 'TW')))) ORDER BY t0.config_name) alias ON table.type_field = alias.num_value …
このコード中のtable.type_field
は、文字列に置き換える型コード値を格納するフィールドです。aliasは、内部select句に渡す名前です。最後に、enum_name
は、ユーザー定義列挙のプロパティ名です。
レポートに表示するには、select句にalias
.config_valueを追加する必要があります。
ユーザーがレポートと対話して目的のデータをデータ・セットから指定できるよう、レポート定義にパラメータを追加します。
型コードを表す読取り可能な文字列のリストから選択できるようにするには、ユーザー定義列挙の表に対する問合せによって値リスト(LOV)を作成し、列挙名でフィルタ処理する必要があります。
次のリストは、値リストにデータを移入するための問合せを作成する方法を示しています。
SELECT enumElement.label, enumElement.num_value
FROM v_b_enum enum
INNER JOIN v_b_enum_elmnt enumElement ON on enum.enum_id =
enumElement.enum_id
WHERE enum.prop_name = 'enum name'
ORDER BY enumElement.label
次のリストは、このLOVに基づいてレポートをフィルタ処理する方法を示しています。
WHERE … AND (:parameter IS NULL OR :parameter = table.type_field)
これらのリスト中のenum_name
、table.type_field
およびparameterは、それぞれユーザー定義列挙のプロパティ名、文字列に置き換える型コード値を格納するフィールドおよび名前付きパラメータです。レポート・パラメータの作成と設定の詳細は、Oracle BI Publisherユーザーズ・ガイドを参照してください。
次のリストは、値リストにデータを移入するための問合せを作成する方法を示しています。
SELECT t0.config_value, element.num_value FROM v_b_config_rb t0 INNER JOIN ( SELECT enum_element.num_value, enum_element.str_value, enum.prop_name FROM v_b_enum enum INNER JOIN v_b_enum_elmnt enum_element ON enum.enum_id = enum_element.enum_id WHERE enum.prop_name = 'enum name') element ON t0.config_name=element.prop_name || '.' || element.str_value || '.name' WHERE t0.locale_id = ( SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND country = substr(:xdo_user_ui_locale, 4, 2) AND (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr (:xdo_user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_ user_ui_locale, 4, 2) IN ('CN', 'TW'))) UNION SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND NOT EXISTS(SELECT locale_id FROM v_b_locale WHERE language = substr(:xdo_user_ui_locale, 1, 2) AND country = substr(:xdo_user_ui_locale, 4, 2)) AND country IS NULL AND (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr(:xdo_user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_user_ui_locale, 4, 2) IN ('CN', 'TW'))) UNION SELECT locale_id FROM v_b_locale WHERE language = 'en' AND NOT (substr(:xdo_user_ui_locale, 1, 2) in ('de', 'en', 'es', 'fr', 'it', 'ja', 'ko') OR (substr(:xdo_user_ui_locale, 1, 2) = 'pt' AND substr(:xdo_ user_ui_locale, 4, 2) = 'BR') OR (substr(:xdo_user_ui_locale, 1, 2) = 'zh' AND substr(:xdo_ user_ui_locale, 4, 2) IN ('CN', 'TW')))) ORDER BY t0.config_name
フィルタ処理の方法は、英語のみの場合と同じです。
OAAMデータベース・スキーマには、IPアドレス範囲と位置データ(市町村、都道府県、国など)をマップする表が含まれています。関連する表は、VCRYPT_IP_LOCATION_MAP
、VCRYPT_CITY
、VCRYPT_STATE
およびVCRYPT_COUNTRY
です。多くの表にIPアドレスが含まれており、VCRYPT_IP_LOCATION_MAP
には、VCRYPT_CITY
、VCRYPT_STATE
およびVCRYPT_COUNTRY
のそれぞれに対応する外部キーが含まれています。
OAAMでは、IPアドレスは長い数値として格納されます。次のリストは、IPアドレスを含む表をVCRYPT_IP_LOCATION_MAP
に結合する方法を示しています。
SELECT ... FROM vcrypt_tracker_usernode_logs logs INNER JOIN vcrypt_ip_location_map loc ON ( logs.remote_ip_addr >= loc.from_ip_addr AND logs.remote_ip_addr <= loc.from_ip_addr )
ユーザー入力や表示目的では、一般に4つの要素で構成される標準IPアドレスを使用します。次のリストは、数値IPアドレスを標準IPとして表示する方法を示しています。ipField
は、表示する数値IPアドレスを含むフィールドまたはパラメータです。
… to_char(to_number(substr(to_char(ipField, 'XXXXXXXX'), 1, 3), 'XX')) || '.' || to_char(to_number(substr(to_char(ipField, 'XXXXXXXX'), 4, 2), 'XX')) || '.' || to_char(to_number(substr(to_char(ipField, 'XXXXXXXX'), 6, 2), 'XX')) || '.' || to_char(to_number(substr(to_char(ipField, 'XXXXXXXX'), 8, 2), 'XX')) ...
次のリストは、標準IPアドレスを長い数値フォーマットに変換する方法を示しています。
… to_number(substr(ipField, 1, instr(ipField, '.')-1))*16777216 + to_number(substr(ipField, instr(ipField, '.', 1, 1)+1, instr(ipField, '.', 1, 2)-instr(ipField, '.', 1, 1)-1))*65536 + to_number(substr(ipField, instr(ipField, '.', 1, 2)+1, instr(ipField, '.', 1, 3)-instr(ipField, '.', 1, 2)-1))*256 + to_number(substr(ipField, instr(ipField, '.', 1, 3)+1))
セッションおよびアラートは、それぞれVCRYPT_TRACKER_USERNODE_LOGS
表およびVCRYPT_ALERT
表に存在します。これらはREQUEST_ID
フィールドを介して相互に結合され、それぞれVCRYPT_IP_LOCATION_MAP
表を使用してBASE_IP_ADDR
フィールドを介して地理的位置データに結合されます。
セッション表とアラート表には、ユーザー定義列挙を名前で参照して読取り可能なテキストに変換できる型コード・フィールドがいくつか含まれています。
表23-1に、型コードの各フィールドと、VCRYPT_TRACKER_USERNODE_LOGSのユーザー定義列挙の名前を示します。
表23-1 VCRYPT_TRACKER_USERNODE_LOGS
フィールド名 | ユーザー定義列挙の名前 |
---|---|
AUTH_STATUS |
auth.status.enum |
AUTH_CLIENT_TYPE_CODE |
auth.client.type.enum |
表23-2に、型コードの各フィールドと、VCRYPT_ALERTのユーザー定義列挙の名前を示します。
このレポートには、ユーザーID、ログインID、認証ステータスおよび位置で構成されるセッション・リストが表示されます。最初に、fromDate
とtoDate
の2つの日付パラメータを作成する必要があります。問合せは次のようになります。
SELECT s.request_id, s.user_id, s.user_login_id, auth.label, country.country_name, state.state_name, city.city_name FROM vcrypt_tracker_usernode_logs s INNER JOIN vcrypt_ip_location_map loc ON s.base_ip_addr = loc.base_ip_addr INNER JOIN vcrypt_country country ON loc.country_id = country.country_id INNER JOIN vcrypt_state loc ON loc.state_id = country.state_id INNER JOIN vcrypt_city city ON loc.city_id = city.city_id LEFT OUTER JOIN ( SELECT enumElement.num_value, enumElement.label FROM v_b_enum enum INNER JOIN v_b_enum_elmnt enumElement ON on enum.enum_id = enum_element.enum_id WHERE enum.prop_name = 'auth.status.enum') auth ON s.auth_status = auth.num_value WHERE (:fromDate IS NULL OR s.create_time >= :fromDate) AND (:toDate IS NULL OR s.create_time <= :toDate) ORDER BY s.create_time DESC
この項では、トランザクション・レポートを作成する方法について説明します。内容は次のとおりです。
トランザクション定義キーとエンティティ定義キーを取得するには、次の手順を実行します。
OAAM管理にログインし、「トランザクション」メニューに移動して、目的のトランザクション定義を検索します。
「一般」タブに移動し、トランザクションの「定義キー」を書き留めます。これがトランザクションのトランザクション定義キーです。
トランザクションの「エンティティ」タブに移動し、一意のリストの「エンティティ名」でエンティティ名を書き留めます。
「エンティティ」メニュー・オプションを選択してエンティティを検索し、各エンティティの「キー」を書き留めます。これがエンティティのエンティティ定義キーです。
レポートの作成時に必要になるエンティティ・データのマッピング情報を取得するには、この項の手順に従ってください。
レポートの作成時に必要になるエンティティ・データの詳細を取得するには、次の手順を実行します。
OAAM管理コンソールでエンティティ定義を確認して、エンティティ定義キーを取得します。
SQL問合せを使用して、エンティティ・データのマッピングの詳細を取得します。
SELECT label, data_row, data_col, data_type FROM vt_data_def_elem WHERE status =1 AND data_def_id = (SELECT data_def_id FROM vt_data_def_map WHERE relation_type ='data' AND parent_obj_type =3 AND parent_object_id IN (SELECT entity_def_id FROM vt_entity_def WHERE entity_def_key=<Entity Definition Key> AND status =1 ) ) ORDER BY data_row ASC, data_col ASC;
前述のSQL問合せを使用すると、エンティティのデータ・フィールドとしてデータ型、行位置および列位置が一覧表示されます。その情報からエンティティを指定し、そのエンティティの次のデータに基づくSQL問合せを作成します。指定したエンティティのデータを表すビューを作成する場合も、このSQL問合せを基準にすることをお薦めします。
注意: EntityRowNは、エンティティ・データの行を表します。前述の問合せによりエンティティの3つの異なる |
SELECT ent.ENTITY_ID, ent.EXT_ENTITY_ID, ent.ENTITYNAME, ent.ENTITY_KEY, ent.ENTITY_TYPE, EntityRowN<row>.DATA<col> <column_name>, (EntityRowN<row>.NUM_DATA<col>/ 1000.0) <numeric_column_name>, to_timestamp_tz(EntityRowN<row>.DATA<col>, 'YYYY-MM-DD HH24:MI:SS TZH:TZM') <date_column_name>, ent.CREATE_TIME, ent.UPDATE_TIME, ent.EXPIRY_TIME, ent.RENEW_TIME FROM VT_ENTITY_DEF entDef, VT_ENTITY_ONE ent LEFT OUTER JOIN VT_ENTITY_ONE_PROFILE EntityRowN ON (EntityRowN.ENTITY_ID = ent.ENTITY_ID AND EntityRowN.ROW_ORDER = <row> AND EntityRowN.EXPIRE_TIME IS NULL) LEFT OUTER JOIN VT_ENTITY_ONE_PROFILE EntityRowN+1 ON (EntityRowN+1.ENTITY_ID = ent.ENTITY_ID AND EntityRowN+1.ROW_ORDER = <row+1> AND row1.EXPIRE_TIME IS NULL) WHERE ent.ENTITY_DEF_ID = entDef.ENTITY_DEF_ID and entDef.ENTITY_DEF_KEY=<Entity Definition Key>
レポートの作成時に必要になるトランザクション・データのマッピング情報を取得するには、この項の手順に従ってください。
レポートの作成時に必要になるエンティティ・データの詳細を取得するには、次の手順を実行します。
次のSQLを使用して、エンティティ定義のマッピングIdに対するトランザクションのリストを取得します。
SELECT map_id FROM vt_trx_ent_defs_map, vt_trx_def WHERE vt_trx_ent_defs_map.trx_def_id = vt_trx_def.trx_def_id AND vt_trx_def.trx_def_key =<Transaction Definition Key>
次のSQL問合せを使用して、すべてのトランザクション・データ・フィールド、データ型、行および列のマッピングの詳細を取得します。
SELECT label, data_row, data_col, data_type FROM vt_data_def_elem WHERE status =1 AND data_def_id = (SELECT data_def_id FROM vt_data_def_map WHERE relation_type ='data' AND parent_obj_type =1 AND parent_object_id IN (SELECT trx_def_id FROM vt_trx_def WHERE trx_def_key='mayo_pat_rec_acc' AND status =1 ) ) ORDER BY data_row ASC, data_col ASC;
前の項の情報を使用して、次のトランザクション・データを表すSQL問合せを作成します。
注意: レポートの作成が容易になるよう、この問合せを基準にしてビューを作成することをお薦めします。エンティティおよびトランザクションのビューの作成方法については、第23.2.5項「エンティティおよびトランザクションのデータベース・ビューの生成」を参照してください。
SELECT trx.LOG_ID, trx.USER_ID, trx.REQUEST_ID, trx.EXT_TRX_ID, trx.TRX_TYPE, trx.STATUS, trx.SCORE, trx.RULE_ACTION, trx.TRX_FLAG, trx.POST_PROCESS_STATUS, trx.POST_PROCESS_RESULT, TxnDataRowN<row>.DATA<col> <data_column_name>, (TxnDataRowN<row>.NUM_DATA<col>/ 1000.0) <numeric_column_name>, to_timestamp_tz(TxnDataRowN<row>.DATA<col>, 'YYYY-MM-DD HH24:MI:SS TZH:TZM') <date_column_name>, (SELECT entTrxMap.MAP_OBJ_ID FROM VT_ENT_TRX_MAP entTrxMap WHERE entTrxMap.DEF_MAP_ID = <Transaction to Entity Mapping Id of Entity1_Name> AND entTrxMap.TRX_ID = trx.LOG_ID ) <EntityN_Name>, (SELECT entTrxMap.MAP_OBJ_ID FROM VT_ENT_TRX_MAP entTrxMap WHERE entTrxMap.DEF_MAP_ID = <Transaction to Entity Mapping Id of Entity2_Name> AND entTrxMap.TRX_ID = trx.LOG_ID ) <EntityN+1_Name>, trx.CREATE_TIME, trx.UPDATE_TIME, TRUNC(trx.create_time, 'HH24') created_hour, TRUNC(trx.create_time, 'DDD') created_day, TRUNC(trx.create_time, 'DAY') created_week, TRUNC(trx.create_time, 'MM') created_month, TRUNC(trx.create_time, 'YYYY') created_year FROM VT_TRX_DEF trxDef, VT_TRX_LOGS trx LEFT OUTER JOIN VT_TRX_DATA TransactionDataRowN ON (TransactionDataRowN.TRX_ID = trx.LOG_ID AND TransactionDataRowN.ROW_ORDER = <rowN>) LEFT OUTER JOIN VT_TRX_DATA TransactionDataRowN+1 ON (TransactionDataRowN+1.TRX_ID = trx.LOG_ID AND TransactionDataRowN+1.ROW_ORDER = <rowN+1>) WHERE trx.TRX_DEF_ID = trxDef.TRX_DEF_ID and trxDef.TRX_DEF_KEY=<Transaction Definition Key>
エンティティおよびトランザクションのレポートを作成するには、この項の手順に従ってください。
23.2.3.2項「トランザクション・データのSQL問合せおよびビューの作成」の説明に従って作成したSQL問合せまたはビューを使用してください。
OAAMでは、エンティティ・データとトランザクション・データがデータベースに永続化されます。OAAMには、SQLスクリプト・ファイルを生成するためのコマンドライン・ツールが用意されています。このスクリプト・ファイルには、OAAMのエンティティおよびトランザクション用にビューを作成するためのSQL文が含まれます。
これらのビューを使用すると、特定の表の詳細を問い合せるのと比較して、データベース内のトランザクション関連データやエンティティ関連データをより簡単に表示できます。現在データベースで使用できるエンティティやトランザクションの包括的な状況に加えて、それらの関係性(トランザクションとエンティティの間、エンティティ間)に関する情報も表示されるからです。
generateTrxEntityViewsSQL
スクリプトが作成するSQLファイルを実行すると、データベース内に存在するトランザクションおよびエンティティ関連の定義とデータを表示するデータベース・ビューが作成されます。
このスクリプトでは、データベース内に存在するトランザクション定義やエンティティ定義に基づくSQLスクリプトが生成されます。
スクリプトを実行する前に、OAAM CLI環境が設定されていることを確認します。CLI環境の設定手順については、『Oracle Fusion Middleware Oracle Adaptive Access Manager管理者ガイド』を参照してください。
Oracle Enterprise Manager Fusion Middleware Control(<host>:<port>/em)を使用して、次の情報をCSFまたは資格証明ストアに追加する必要があります。
OAAMデータベース・ユーザー名とパスワード(マップoaamの下でキー名としてoaam_db_keyを指定)。
表23-4に、ビューを生成する前に、oaam_cli.properties
ファイルで設定する必要があるプロパティを示します。
次の手順に従って、OAAMデータベース内に格納されているエンティティとトランザクションのデータベース・ビューを作成します。
OAAMデータベースのスキーマ・ユーザーとしてデータベースにログインします。
OAAMデータベースのスキーマ・ユーザーに対してGRANT CREATE VIEW権限を付与します。
OAAMデータベースのスキーマ・ユーザーとしてデータベースに接続します。
例: sqlplus DEV_OAAM
/PASSWORD
createTrxEntityViews.sql
を実行します。
このスクリプトにより、OAAMデータベース内で定義されているエンティティおよびトランザクションごとにデータベース・ビューが作成されます。
OAAMで定義されているエンティティごとに、oaam_ent_entity_key
という名前のビューが作成されます。entity_key
は、OAAMで定義されているエンティティのキーに置き換えられます。作成されたビューには、エンティティで定義されているデータごとに1つの列が存在します。これらのデータ列に加えて、作成されたビューには次の列が含まれます。
ENTITY_ID: エンティティ・インスタンスの一意の識別子
CREATE_TIME: エンティティの作成時
UPDATE_TIME: エンティティの最終更新時
OAAMで定義されているトランザクションごとに、oaam_trx_
transaction_key
という名前のビューが作成されます。transaction_key
は、OAAMで定義されているトランザクションのキーに置き換えられます。作成されたビューには、トランザクションで定義されているデータごとに1つの列が存在します。
作成されたビューには、トランザクションで参照されているエンティティごとに1つの列が存在します。ここに、参照されたエンティティのentity_idが格納されます。たとえば、oaam_ent_
entity_key
ビューのentity_id
列があります。インスタンス名に含まれるスペースは、列名では下線に置き換えられます。
LOG_ID
: トランザクションの一意の識別子
USER_ID
: トランザクションの実行ユーザー
REQUEST_ID
: このトランザクションが実行されたセッション
EX_TRX_ID
: このトランザクションの外部ID
STATUS
: トランザクションのステータス
CREATE_TIME
: エンティティが作成された時間
UPDATE_TIME
: エンティティの最終更新時間
CREATED_HOUR
: 最も近い時間に切り捨てた時間を作成します
CREATED_DAY
: 最も近い日に切り捨てた時間を作成します
CREATED_WEEK
: 最も近い週に切り捨てた時間を作成します
CREATED_MONTH
: 最も近い月に切り捨てた時間を作成します
CREATED_YEAR
: 最も近い年に切り捨てた時間を作成します
Oracleデータベースでは、表名、ビュー名、列名などの識別子の長さが30文字に制限されます。スクリプトで生成したビューがこの要件に準拠するように、次の識別子の制限に従ってエンティティ、トランザクションおよびデータフィールドの名前を付けてください。
entity
: 21 (ビューの名前は"oaam_ent_" + <entity_key>
になる)
トランザクション
: 21 (ビューの名前は"oaam_trx_" + <transaction_key>
になる)
datafield
: 28 (列の名前は"d_" + <data_element_name>
になる)
entity-ref
: 20 (列の名前は<relationship_name> + "_entity_id
"になる)
スクリプトでは、上の制限値よりも長い名前の識別子がトリミングされます。作成されたビューに対するSQL問合せを書き込む際には、トリミングされた列名やビュー名に注意してください。
名前に含まれるスペース、ダッシュ(-)およびピリオド(.)は、下線に置き換えられます。
エンティティ定義Addressに基づいてビューを作成する、一般的なSQL問合せを次に示します。このSQL問合せでは、oaam_ent_ADDRESS
というビューが作成されます。
create or replace force view oaam_ent_ADDRESS as (select (ent.ENTITY_ID, ent.EXT_ENTITY_ID, ent.ENTITYNAME, ent.ENTITY_KEY, ent.ENTITY_TYPE,ent.CREATE_TIME, ent.UPDATE_TIME, ent.EXPIRY_TIME, ent.RENEW_TIME from VT_ENTITY_DEF entDef, VT_ENTITY_ONE ent left outer join VT_ENTITY_ONE_PROFILE row0 on (row0.ENTITY_ID = ent.ENTITY_ID and row0.ROW_ORDER = 0 and row0.EXPIRE_TIME is null) where entDef.ENTITY_DEF_KEY='Address' and ent.ENTITY_DEF_ID = entDef.ENTITY_DEF_ID);
表23-5に、このビューで使用されている表を示します。
表23-5 エンティティ・ビューのエンティティ表
表 | 説明 |
---|---|
VT_ENTITY_DEF |
この表には、あらゆるエンティティの定義が含まれます。 |
VT_ENTITY_ONE |
この表には、エンティティ・キー、名前、一意のIDおよび有効期限が含まれます。 |
VT_ENTITY_ONE_PROFILE |
この表には、エンティティ・データが格納されています。 |
ビューは、特定のトランザクション定義やエンティティ定義に関する全情報、およびそれらの定義に関連付けられているすべてのデータを表示する単一のビューを提供します。スクリプトの実行後は、ビュー内のデータをいつでも必要に応じて参照できます。このビューを使用すると、様々な表からデータをマッピングするかわりに、1つの場所にまとめた統合ビューでデータを参照できます。表23-6に、oaam_ent_ADDRESS
ビューを示します。
表23-6 oaam_ent_ADDRESS
フィールド名 | DB型 | 説明 |
---|---|---|
ENTITY_ID |
BIGINT |
エンティティのID |
EXT_ENTITY_ID |
VARCHAR |
外部エンティティID(クライアント提供) |
ENTITYNAME |
TEXT |
エンティティの名前(エンティティ定義に従ってnamegenスキームで生成されたエンティティの名前)。 |
ENTITY_KEY |
TEXT |
エンティティのキー(エンティティ定義に従ってkeygenスキームで生成されたエンティティのキー)。このキーは、DB内に対象エンティティが存在するかどうかを調べる参照を実行する際に使用されます。 |
ENTITY_TYPE |
INT |
エンティティのタイプ |
CREATE_TIME |
DATETIME |
オブジェクトが作成された日時 |
UPDATE_TIME |
TIMESTAMP |
日付値 |
EXPIRY_TIME |
DATETIME |
有効期限値。事前構成されたプロパティに従って設定されます(リクエスト時間からの日数)。 |
RENEW_TIME |
DATETIME |
更新日付値。この時間を過ぎてもエンティティが使用されている場合は、有効期限とrenew_timeが延長されます。 |
ROW_ORDER |
INT |
行順序(どんな数値データにも対応できるように0から始まります。10列をすべて使用し尽くした場合は、row_order 1の別のレコードが挿入されます。) |
EXPIRE_TIME |
DATETIME |
プロファイルの有効期限が切れる日時 |
ENTITY_DEF_KEY |
TEXT |
エンティティのキー。住所、企業名などの情報です。 |
ENTITY_DEF_ID |
BIGINT |
エンティティ定義のID |