ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Adaptive Access Manager開発者ガイド
11gリリース2(11.1.2)
B71697-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

23 OAAM Oracle BI Publisherレポートの作成

この章では、OAAMスキーマ内のデータでOracle BI Publisherレポートを作成する方法について説明します。

23.1 OAAMスキーマ内のデータでのOracle BI Publisherレポートの作成

Oracle Adaptive Access ManagerデータベースからOAAMレポートを作成する方法については、次の各項を参照してください。コード・リストでは、OAAM表とフィールドの名前は太字および斜体になっています。

23.1.1 データ・モデルの作成

新しいレポートの作成手順については、『Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド』を参照してください。

23.1.2 ユーザー定義列挙の数値型コードと読取り可能な名前のマップ

多くの表のいくつかのフィールドは、OAAMユーザー定義列挙に対応する数値型コードです。OAAMのユーザー定義列挙の詳細は、第7章「OAAM拡張共有ライブラリの使用によるOAAMのカスタマイズ」を参照してください。この項では、これらの型コードを読取り可能な名前にマップする方法について説明します。

これらの名前を解決する方法は2つあり、どちらを使用するかは、英語のみで表示するか、国際化した文字列で表示するかにより決まります。

23.1.2.1 結果表示

レポート出力に型コード値ではなく読取り可能な文字列を表示するには、ユーザー定義列挙を保持する表に結合を追加し、select句にフィールドを追加する必要があります。

23.1.2.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を追加する必要があります。

23.1.2.3 国際化したユーザー定義列挙の結果表示

次の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を追加する必要があります。

23.1.3 値リストの追加

ユーザーがレポートと対話して目的のデータをデータ・セットから指定できるよう、レポート定義にパラメータを追加します。

型コードを表す読取り可能な文字列のリストから選択できるようにするには、ユーザー定義列挙の表に対する問合せによって値リスト(LOV)を作成し、列挙名でフィルタ処理する必要があります。

23.1.3.1 値リストとしてユーザー定義列挙を使用したフィルタ処理 - 英語のみ

次のリストは、値リストにデータを移入するための問合せを作成する方法を示しています。

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_nametable.type_fieldおよびparameterは、それぞれユーザー定義列挙のプロパティ名、文字列に置き換える型コード値を格納するフィールドおよび名前付きパラメータです。レポート・パラメータの作成と設定の詳細は、Oracle BI Publisherユーザーズ・ガイドを参照してください。

23.1.3.2 値リストとしてユーザー定義列挙を使用したフィルタ処理 - 国際化

次のリストは、値リストにデータを移入するための問合せを作成する方法を示しています。

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

フィルタ処理の方法は、英語のみの場合と同じです。

23.1.4 地理的位置データの追加

OAAMスキーマには、IPアドレス範囲と位置データ(市町村、都道府県、国など)をマップする表が含まれています。関連する表は、VCRYPT_IP_LOCATION_MAPVCRYPT_CITYVCRYPT_STATEおよびVCRYPT_COUNTRYです。多くの表にIPアドレスが含まれており、VCRYPT_IP_LOCATION_MAPには、VCRYPT_CITYVCRYPT_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))

23.1.5 セッションおよびアラートの追加

セッションおよびアラートは、それぞれVCRYPT_TRACKER_USERNODE_LOGS表およびVCRYPT_ALERT表に存在します。これらはREQUEST_IDフィールドを介して相互に結合され、それぞれVCRYPT_IP_LOCATION_MAP表を使用してBASE_IP_ADDRフィールドを介して地理的位置データに結合されます。

23.1.5.1 型コードの参照

セッション表とアラート表には、ユーザー定義列挙を名前で参照して読取り可能なテキストに変換できる型コード・フィールドがいくつか含まれています。

表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のユーザー定義列挙の名前を示します。

表23-2 VCRYPT_ALERT

フィールド名 ユーザー定義列挙の名前

ALERT_LEVEL

alert.level.enum

ALERT_TYPE

alert.type.enum

ALERT_STATUS

alert.status.enum

RUNTIME_TYPE

profile.type.enum


23.1.6

このレポートには、ユーザーID、ログインID、認証ステータスおよび位置で構成されるセッション・リストが表示されます。最初に、fromDatetoDateの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

23.1.7 レポート定義へのレイアウトの追加

BI Publisherには、レポート用のテンプレートを設計するための各種オプションが用意されています。テンプレートの設計手順については、『Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド』を参照してください。

23.2 OAAMトランザクション・レポートの作成

この項では、トランザクション・レポートを作成する方法について説明します。内容は次のとおりです。

23.2.1 エンティティおよびトランザクション情報の取得

トランザクション定義キーとエンティティ定義キーを取得するには、次の手順を実行します。

  1. OAAM管理にログインし、「トランザクション」メニューに移動して、目的のトランザクション定義を検索します。

  2. 「一般」タブに移動し、トランザクションの「定義キー」を書き留めます。これがトランザクションのトランザクション定義キーです。

  3. トランザクションの「エンティティ」タブに移動し、一意のリストの「エンティティ名」でエンティティ名を書き留めます。

  4. 「エンティティ」メニュー・オプションを選択してエンティティを検索し、各エンティティの「キー」を書き留めます。これがエンティティのエンティティ定義キーです。

23.2.2 エンティティ・データのマッピング情報の取得

レポートの作成時に必要になるエンティティ・データのマッピング情報を取得するには、この項の手順に従ってください。

23.2.2.1 データ型に関する情報

参考までに、表23-3に数値データ型を示します。

表23-3 データ型に関する情報

データ型 説明

1

文字列データを表します。

2

数値データを表します。格納されるデータは(元の値 * 1000)と等しくなります。

3

日付型のデータです。データは'YYYY-MM-DD HH24:MI:SS TZH:TZMフォーマットで格納および取得されます。

4

ブール型のデータです。文字列として格納されます。「True」はTRUEを表し、「False」はFALSEを表します。


23.2.2.2 エンティティ・データの詳細(データ型、行および列のマッピングなど)の取得

レポートの作成時に必要になるエンティティ・データの詳細を取得するには、次の手順を実行します。

  1. OAAM管理コンソールでエンティティ定義を確認して、エンティティ定義キーを取得します。

  2. 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;
    

23.2.2.3 エンティティ・データのSQL問合せおよびビューの作成

前述のSQL問合せを使用すると、エンティティのデータ・フィールドとしてデータ型、行位置および列位置が一覧表示されます。その情報からエンティティを指定し、そのエンティティの次のデータに基づくSQL問合せを作成します。指定したエンティティのデータを表すビューを作成する場合も、このSQL問合せを基準にすることをお薦めします。


注意:

EntityRowNは、エンティティ・データの行を表します。前述の問合せによりエンティティの3つの異なるdata_row値が取得された場合は、3つのEntityRowを扱い、別名をEntityRow1EntityRow2のようにし、同様に、次に示すように、対応する結合を処理します。


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>

23.2.3 トランザクション・データのマッピング情報の取得

レポートの作成時に必要になるトランザクション・データのマッピング情報を取得するには、この項の手順に従ってください。

23.2.3.1 トランザクション・データの詳細(データ型、行および列のマッピングなど)の取得

レポートの作成時に必要になるエンティティ・データの詳細を取得するには、次の手順を実行します。

  1. 次の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>
    
  2. 次の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;
    

23.2.3.2 トランザクション・データのSQL問合せおよびビューの作成

前の項の情報を使用して、次のトランザクション・データを表す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.4 レポートの作成

エンティティおよびトランザクションのレポートを作成するには、この項の手順に従ってください。

23.2.4.1 エンティティ・データ・レポートの作成

23.2.2.3項「エンティティ・データのSQL問合せおよびビューの作成」の説明に従って作成したSQL問合せまたはビューを使用してください。

23.2.4.2 トランザクション・データ・レポートの作成

23.2.3.2項「トランザクション・データのSQL問合せおよびビューの作成」の説明に従って作成したSQL問合せまたはビューを使用してください。

23.2.4.3 エンティティ・データ表およびトランザクション・データ表の結合

疑似列<EntityN_Name>によって指定するVT_ENT_TRX_ MAP.MAP_OBJ_IDを使用すると、作成したトランザクション・データ・ビューとエンティティ・データ・ビューを結合できます。

23.2.5 エンティティおよびトランザクションのデータベース・ビューの生成

OAAMでは、エンティティ・データとトランザクション・データがデータベースに永続化されます。OAAMには、SQLスクリプト・ファイルを生成するためのコマンドライン・ツールが用意されています。このスクリプト・ファイルには、OAAMのエンティティおよびトランザクション用にビューを作成するためのSQL文が含まれます。

これらのビューを使用すると、特定の表の詳細を問い合せるのと比較して、データベース内のトランザクション関連データやエンティティ関連データをより簡単に表示できます。現在データベースで使用できるエンティティやトランザクションの包括的な状況に加えて、それらの関係性(トランザクションとエンティティの間、エンティティ間)に関する情報も表示されるからです。

23.2.5.1 SQLスクリプト・ファイルの生成

generateTrxEntityViewsSQLスクリプトが作成するSQLファイルを実行すると、データベース内に存在するトランザクションおよびエンティティ関連の定義とデータを表示するデータベース・ビューが作成されます。

このスクリプトでは、データベース内に存在するトランザクション定義やエンティティ定義に基づくSQLスクリプトが生成されます。

23.2.5.1.1 前提条件

スクリプトを実行する前に、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ファイルで設定する必要があるプロパティを示します。

    表23-4 generateTrxEntityViewSQLを実行する前に設定するプロパティ

    プロパティ

    oaam.db.url

    OAAMメタデータ・リポジトリ用のJDBC URL。

    oaam.trxentityview.filename

    生成されたSQLスクリプトが保存されるファイル名。デフォルト値はcreateTrxEntityViews.sqlです。


23.2.5.1.2 SQLスクリプトの生成

SQLスクリプト・ファイルを生成するには、OAAM CLIフォルダでgenerateTrxEntityViewsSQLスクリプトを実行します。

生成されるデフォルトのファイルはcreateTrxEntityViews.sqlです。このファイルには、各トランザクション定義またはエンティティ定義のビューを作成または更新するための作成と更新の問合せが含まれます。

23.2.5.2 エンティティおよびトランザクションのデータベース・ビューの作成

次の手順に従って、OAAMデータベース内に格納されているエンティティとトランザクションのデータベース・ビューを作成します。

  1. OAAMデータベースのスキーマ・ユーザーとしてデータベースにログインします。

  2. OAAMデータベースのスキーマ・ユーザーに対してGRANT CREATE VIEW権限を付与します。

  3. OAAMデータベースのスキーマ・ユーザーとしてデータベースに接続します。

    例: sqlplus <DEV_OAAM>/<PASSWORD>

  4. createTrxEntityViews.sqlを実行します。

    このスクリプトにより、OAAMデータベース内で定義されているエンティティおよびトランザクションごとにデータベース・ビューが作成されます。

23.2.5.3 エンティティ・ビューの詳細

OAAMで定義されているエンティティごとに、oaam_ent_<entity_key>という名前のビューが作成されます。<entity_key>は、OAAMで定義されているエンティティのキーに置き換えられます。作成されたビューには、エンティティで定義されているデータごとに1つの列が存在します。これらのデータ列に加えて、作成されたビューには次の列が含まれます。

  • ENTITY_ID: エンティティ・インスタンスの一意の識別子

  • CREATE_TIME: エンティティの作成時

  • UPDATE_TIME: エンティティの最終更新時

23.2.5.4 トランザクション・ビューの詳細

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: 最も近い年に切り捨てた時間を作成します

23.2.5.5 識別子

Oracleデータベースでは、表名、ビュー名、列名などの識別子の長さが30文字に制限されます。スクリプトで生成したビューがこの要件に準拠するように、次の識別子の制限に従ってエンティティ、トランザクションおよびデータフィールドの名前を付けてください。

  • エンティティ: 21(ビューの名前はoaam_ent_+<entity_key>になる)

  • トランザクション: 21(ビューの名前はoaam_trx_+<transaction_key>になる)

  • データフィールド: 28(列の名前はd_+<data_element_name>になる)

  • entity-ref: 20(列の名前は<relationship_name>+"_entity_id"になる)

スクリプトでは、上の制限値よりも長い名前の識別子がトリミングされます。作成されたビューに対するSQL問合せを書き込む際には、トリミングされた列名やビュー名に注意してください。

名前に含まれるスペース、ダッシュ(-)およびピリオド(.)は、下線に置き換えられます。

23.2.5.6 ビューを作成する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