Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース2(11.1.2) B70751-01 |
|
![]() 前 |
![]() 次 |
データベース・トリガーは、Event-Driven Publishing APIでレポートを起動するための主要なメカニズムです。Oracleデータベースでは、各種イベントに応じて起動される様々な範囲のトリガーを定義できます。データベース・ドリブン・ジョブを送信するには、これまでの項で説明したコードを、データベース・トリガー内で使用します。
イベント・ドリブンの公開には、多数の用途があります。その1つとして、権限が付与されたとき、またはユーザーがログイン/ログオフしたときに起動されるトリガーを使用して、セキュリティ・プロトコルを作成できます。また、あるタイプの変更が表内のデータに加えられた場合に実行される自動処理を作成することもできます。たとえば、経費報告書のステータスがDONE
(完了)に変わったときにデータベース・トリガーを起動し、それによって従業員の管理者にそのレポートを自動的に送信できます。
例:
CREATE TRIGGER EXP_REP_TRG
AFTER INSERT OR UPDATE on EXP_REP FOR EACH ROW myPlist SRW_PARAMLIST; myIdent SRW.JOB_IDENT;
BEGIN
IF (:new.ExpStat = 'DONE') THEN
myPlist := SRW_PARAMLIST(SRW_PARAMETER('','')); SRW.ADD_PARAMETER(myPlist,'GATEWAY','http://…'); SRW.ADD_PARAMETER(myPlist,'SERVER','fooSVR'); SRW.ADD_PARAMETER(myPlist,'REPORT','foo.RDF'); SRW.ADD_PARAMETER(myPlist,'USERID','foo/bar'); SRW.ADD_PARAMETER(myPlist,'ExpenseID',:new.ExpID); myIdent := SRW.RUN_REPORT(myPlist);
END IF;
END;
このトリガーは、EXP_REP
表が更新されるたびに起動されます。ステータスがDONE
に変わると、レポート・リクエストが実行されます。
cgicmd.dat
キー・マップ・ファイルに指定されたキーを使用してリクエストを実行する場合(詳細は、第17.13項「キー・マップ・ファイルの使用」を参照)、REPORT
パラメータのかわりにCMDKEY
パラメータを指定します。このキーにユーザーID情報が含まれている場合は、USERID
パラメータも省略できます。例:
CREATE TRIGGER EXP_REP_TRG
AFTER INSERT OR UPDATE on EXP_REP FOR EACH ROW myPlist SRW_PARAMLIST; myIdent SRW.JOB_IDENT;
BEGIN
IF (:new.ExpStat = 'DONE') THEN
myPlist := SRW_PARAMLIST(SRW_PARAMETER('','')); SRW.ADD_PARAMETER(myPlist,'GATEWAY','http://…'); SRW.ADD_PARAMETER(myPlist,'SERVER','fooSVR'); SRW.ADD_PARAMETER(myPlist,'CMDKEY','keyvalue'); SRW.ADD_PARAMETER(myPlist,'ExpenseID',:new.ExpID); myIdent := SRW.RUN_REPORT(myPlist);
END IF;
END;
さらに、配布XMLファイルを通じて拡張配布モデルを定義した場合は、DESTINATION
パラメータにそのファイルを指定できます。例:
CREATE TRIGGER EXP_REP_TRG
AFTER INSERT OR UPDATE on EXP_REP FOR EACH ROW myPlist SRW_PARAMLIST; myIdent SRW.JOB_IDENT;
BEGIN
IF (:new.ExpStat = 'DONE') THEN
myPlist := SRW_PARAMLIST(SRW_PARAMETER('','')); SRW.ADD_PARAMETER(myPlist,'GATEWAY','http://…'); SRW.ADD_PARAMETER(myPlist,'SERVER','fooSVR'); SRW.ADD_PARAMETER(myPlist,'REPORT','foo.RDF'); SRW.ADD_PARAMETER(myPlist,'USERID','foo/bar'); SRW.ADD_PARAMETER(myPlist,'DISTRIBUTE','YES'); SRW.ADD_PARAMETER(myPlist,'DESTINATION','filename.xml'); SRW.ADD_PARAMETER(myPlist,'ExpenseID',:new.ExpID); myIdent := SRW.RUN_REPORT(myPlist);
END IF;
END;
これは、この種のロジックをアプリケーションからデータベースに移し、データベースをビジネス・プロセスの中心的なストレージとして使用するための1つの方法です。
注意: Oracle Reports Servicesのインストールに含まれているsrw_test.sql デモ・スクリプトには、Event-Driven Publishing APIのその他の使用例が示されています。 |