| Oracle® Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド 11gリリース1 (11.1.1) E51906-01  | 
  | 
![]() 前  | 
![]() 次  | 
ここでは、Oracle Business Intelligence DiscovererのEULトリガーに関する情報を記載します。項目は次のとおりです。
Oracle Business Intelligence DiscovererのEULトリガーは、Discovererで特定のアクション(ユーザーによるワークブックの保存など)が発生すると特定のPL/SQLファンクションを実行するデータベースのコールです。
注意:
Discovererでは、EnableTriggersレジストリ設定がレジストリに存在し、その値が0 (ゼロ)に設定されていないかぎり、デフォルトでEULトリガーが実行可能になります。Discovererのレジストリ設定の詳細は、第21章「Discovererのレジストリ設定」を参照してください。
EULトリガーは、PL/SQLファンクションが特定の表示名(eul_trigger$post_save_documentなど)でDiscoverer Administratorに適切に登録されている場合のみ実行されます。詳細は、「DiscovererのEULトリガーで実行可能なPL/SQLファンクションの登録方法」を参照してください。
EULトリガーは、各EULトリガーに対してPL/SQLファンクションの引数が定義されている場合のみ実行されます(詳細は、「Oracle Business Intelligence DiscovererのEULトリガー・リスト」を参照)。
次の表に、Discovererで使用できるEULトリガー、トリガーが実行される時期、トリガーの引数、引数が必須かオプションか、および推奨する使用目的を示します。
| トリガー名 | 実行される時期 | 引数(データ型) | 引数(必須/オプション) | 推奨する使用目的 | 
|---|---|---|---|---|
| eul_trigger$post_login | 正常なログイン後 | ファンクションの戻りデータ型(NUMBER)
 引数なし。 注意: このファンクションから返される数値は使用されません。  | 
なし | ユーザー環境コンテキストを設定します。たとえば、データベースまたはSSOユーザー名に基づいた行レベルのセキュリティを強制します。 | 
| eul_trigger$post_save_document | ワークブックの保存時 | ファンクションの戻りデータ型(NUMBER)
 WorkbookOwner (VARCHAR) WorkbookName (VARCHAR) WorksheetName (VARCHAR) Sequence (VARCHAR) SQLSegment (VARCHAR)  | 
 必須 必須 必須 必須 必須  | 
DiscovererワークシートからSQLを自動的に抽出し、データベースの事前定義されたテーブルに保存します。 | 
| eul_trigger$pre_delete_document | ワークブックがデータベースから削除される前 | ファンクションの戻りデータ型(NUMBER)
 WorkbookOwner (VARCHAR) WorkbookName (VARCHAR)  | 
 必須 必須  | 
削除されるワークブックの名前と所有者を保持します。 | 
| eul_trigger$refresh_new_column | リフレッシュ操作による新規列の検出時 | ファンクションの戻りデータ型(VARCHAR)
 DBLink (VARCHAR) Schema (VARCHAR) Table (VARCHAR) Column Name (VARCHAR) EUL Language (VARCHAR)  | 
 必須 必須 必須 必須 必須  | 
Oracle Applicationsフィールドの適切な表示名を返します。 | 
| eul_trigger$get_developer_key | ゲートウェイまたはオンライン・ディクショナリからのビジネスエリアのロード時、データベース内にオブジェクトが作成される前 | ファンクションの戻りデータ型(VARCHAR)
 Default Developer Key (VARCHAR) Element Type (VARCHAR) DB Link (VARCHAR) Schema (VARCHAR) Table (VARCHAR) Constraint / Column (VARCHAR)  | 
 必須 必須 必須 必須 必須 必須 デフォルト識別子に製品の短縮名を付加します。たとえば、EMPLOYEEテーブル(デフォルト識別子: EMPLOYEE)に基づくフォルダをHRI製品でメンテナンスする場合、識別子はHRI_EMPLOYEEとなります。  | 
デフォルト識別子に製品の短縮名を付加します。たとえば、EMPLOYEEテーブル(デフォルト識別子: EMPLOYEE)に基づくフォルダをHRI製品でメンテナンスする場合、識別子はHRI_EMPLOYEEとなります。 | 
特定のファンクションを実行するPL/SQLファンクション(例: ワークシートの保存時にSQLをワークシートから抽出するファンクション)を登録できます。Oracle Business Intelligence DiscovererのEULトリガーによってPL/SQLファンクションが実行されるのは、PL/SQLファンクションがデータベースに存在し、Discoverer Administratorに適切に登録されている場合のみです。
注意: PL/SQLファンクションは、DiscovererのEULトリガーと同一の名前で登録する必要があります。名前が異なる場合、DiscovererのEULトリガーによるファンクションの検出または実行が行われません。したがって、PL/SQLファンクションの「表示名」フィールドの名前をPL/SQLファンクション名(eul_trigger$post_save_documentなど)に設定する必要があります。
Oracle Business Intelligence DiscovererのEULトリガーで実行可能なPL/SQLファンクションを登録する手順は、次のとおりです。
PL/SQLファンクションをデータベースに作成し、ファンクション名を指定します。
詳細は、「ワークシートの保存時にPL/SQLトリガーを使用してSQLをワークシートから抽出する方法の例」を参照してください。
Discoverer Administratorを起動し、「ツール」→「PL/SQL関数の登録」を選択すると、「PL/SQL関数」ダイアログの「関数」タブが表示されます。
このダイアログを使用してPL/SQLファンクションをインポートし、Discovererに登録します。
詳細は、「カスタムPL/SQLファンクションの登録」を参照してください。
SQLを自動抽出できるように、Discovererでは、ワークブックの保存時に必ず実行されるトリガーが有効になっています。このトリガーによってPL/SQLファンクション(eul_trigger$post_save_document)が検索されます。このファンクションが検出されない場合は、何も実行されません。PL/SQLファンクションが検出された場合は、そのファンクションに従ってSQLが保存されます。次に、使用可能なファンクションの例を示します。ただし、この機能は、顧客が各自の特定ニーズにあわせて使用できるようにオープンのままになっています。
ワークシートの保存時にPL/SQLトリガーを使用してSQLをワークシートから抽出する手順は、次のとおりです。
SQL*Plusを起動します。
次のSQL文を入力して、SQLを格納するテーブルを作成します。
注意: この例では、PL/SQLファンクションによって移入されるmy_sqlテーブルを作成します。
SQL> create table my_sql (            workbookowner              varchar2 (100),
            workbook                   varchar2 (100), 
            worksheet                  varchar2 (100),
            seg_sequence               number (10),
            sql_segment                varchar2 (2000) );
次のSQL文を入力して、POST_SAVE_DOCUMENTという名前のPL/SQLファンクションを作成します。
SQL> create or replace function POST_SAVE_DOCUMENT
          (P_WORKBOOKOWNER in varchar,
           P_WORKBOOK        in  varchar,
           P_WORKSHEET       in  varchar,
           P_SEQUENCE      in number,
           P_SQL_SEGMENT   in varchar,
)
return number as
begin
delete from my_sql;
insert into my_sql
                       (       WORKBOOKOWNER,
                               WORKBOOK
                               WORKSHEET
                               SEG_SEQUENCE
                               SQL_SEGMENT
                      
VALUES (          P_WORKBOOKOWNER,
                               P_WORKBOOK,
                               P_WORKSHEET,
                               P_SEQUENCE,
                               P_SQL_SEGMENT
                 );
return 1;
end;
次の権限をPUBLICユーザーに付与し、my_sqlテーブルおよびPL/SQLファンクションPOST_SAVE_DOCUMENTへのアクセスを許可します。SQL*Plusで次のSQL文を入力します。
SQL> grant execute on POST_SAVE_DOCUMENT to PUBLIC;
このSQL文によって、PUBLICユーザーによるPL/SQLファンクションPOST_SAVE_DOCUMENTの実行が可能になります。
SQL> grant select, insert, update on my_sql to PUBLIC;
このSQL文によって、PUBLICユーザーによるデータベース・テーブルmy_sqlに対する選択、挿入および更新が可能になります。
Discoverer Administratorを起動し、「ツール」→「PL/SQL関数の登録」を選択すると、「PL/SQL関数」ダイアログの「関数」タブが表示されます。
このダイアログを使用して、新規PL/SQLファンクションをDiscovererに登録します。
注意: 新規PL/SQLファンクションの「表示名」フィールドの名前がeul_trigger$post_save_documentに設定されていることを確認してください。
新規PL/SQLファンクションを登録します。
PL/SQLファンクションのインポート方法の詳細は、「カスタムPL/SQLファンクションを自動的に登録する方法」を参照してください。