Oracle Workflow APIリファレンス リリース2.6.3.5 部品番号: B15622-01 |
![]() |
![]() |
![]() |
![]() |
![]() |
||
前へ | 次へ | 目次 | 索引 | 用語集 |
procedure Raise
(p_event_name in varchar2,
p_event_key in varchar2,
p_event_data in clob default NULL,
p_parameters in wf_parameter_list_t default NULL,
p_send_date in date default NULL);
説明
イベント・マネージャにローカル・イベントを呼び出します。 Raise()は、このイベント・インスタンスに対してWF_EVENT_T構造を作成し、指定されたイベント名、イベント・キー、イベント・データ、パラメータ・リストおよび送信日をその構造に設定します。
イベント・データは、Raise() APIをコールしたときに、イベント・マネージャに渡されます。つまり、イベント・マネージャがイベント・データを取得するタイミングは、サブスクリプションがイベント・データを必要とするかどうかをチェックし、そのイベントに対してジェネレート関数をコールしたときです。イベント・データがアプリケーションに渡されない場合のパフォーマンスを向上させるには、実行時に常にアプリケーションからイベント・データを生成するのではなく、イベント・データを必要とするサブスクリプションが存在するときにだけ、イベント・マネージャからジェネレート関数を実行してイベント・データを生成します。 『Oracle Workflow開発者ガイド』のイベントに関する項、および『Oracle Workflow開発者ガイド』のイベント・データ・ジェネレート関数の標準APIに関する項を参照してください。
送信日には、イベントのサブスクリプション処理が可能になる日時を設定することもできます。 送信日がNULLの場合、送信日はRaise()によって現在のシステム日付に設定されます。送信日をシステム日付より後の日付に設定すると、イベントを遅延することができます。この場合、イベント・メッセージはイベント・マネージャによって標準のWF_DEFERREDキューに格納され、送信日までWAIT状態になります。 送信日になると、イベント・メッセージはデキュー可能になり、エージェント・リスナーがWF_DEFERREDキュー上で実行されたときにデキューされます。
注意: イベントが呼び出されたときにイベントが遅延されていた場合、WF_DEFERREDキューからデキューされても、イベントの元の「ローカル」ソース・タイプが保持されます。
イベントが呼び出されたときにイベントが遅延されていない場合、または遅延されていたイベントがWF_DEFERREDキューからデキューされた場合は、イベント・マネージャによってイベントのサブスクリプション処理が開始されます。 イベント・マネージャは、「ローカル」ソース・タイプを持つイベントに対して、ローカル・システム単位に有効なサブスクリプションを検索および実行します。また、「ローカル」ソース・タイプを持つAnyイベントに対して、ローカル・システム単位に有効なサブスクリプションを検索および実行します。 発生したイベントに有効なサブスクリプション(Anyイベントのサブスクリプション以外)が存在しない場合、Oracle Workflowは、「ローカル」ソース・タイプを持つUnexpectedイベントに対して、ローカル・システム単位に有効なサブスクリプションを実行します。
注意: イベントが定義されていない場合、イベント・マネージャではエラーは発生しません。
イベント・マネージャはサブスクリプションを実行する前に、各サブスクリプションにイベント・データが必要かどうかをチェックします。必要なイベント・データが渡されていない場合、イベント・マネージャはそのイベントに対してジェネレート関数をコールし、イベント・データを生成します。 イベント・データを必要とするイベントにジェネレート関数が定義されていない場合、イベント名およびイベント・キーを使用してデフォルトのイベント・データが作成されます。
注意: Raise()を処理しているときに例外が発生した場合、その例外はトラップされず、Raise()プロシージャをコールしたコードに公開されます。この場合、サブスクリプションとそのルール関数によって、妥当性が検証されます。妥当性検証ロジックを直接コーディングした場合と、同じ結果を得ることができます。
引数(入力)
p_event_name | イベントの内部名。 |
p_event_key | プログラムまたはアプリケーション内でイベントが発生したときに、生成される文字列。このイベント・キーにより、イベントの特定のインスタンスが一意に識別されます。 |
p_event_data | イベントの内容を説明する一連の情報(オプション)。イベント・マネージャはサブスクリプションを実行する前に、各サブスクリプションにイベント・データが必要かどうかをチェックします。必要なイベント・データが渡されていない場合、イベント・マネージャはそのイベントに対してジェネレート関数をコールし、イベント・データを生成します。 『Oracle Workflow開発者ガイド』のイベントに関する項、および『Oracle Workflow開発者ガイド』のイベント・データ・ジェネレート関数の標準APIに関する項を参照してください。 |
p_parameters | 追加パラメータの名前と値の組合せのリスト(オプション)。 |
p_send_date | イベントのサブスクリプション処理が可能になる日付(オプション)。 |
declare l_xmldocument varchar2(32000); l_eventdata clob; l_parameter_list wf_parameter_list_t; l_message varchar2(10);
begin
/*
** If the complete event data is easily available, we can
** optionally test if any subscriptions to this event
** require it (rule data = Message).
*/
l_message := wf_event.test('<EVENT_NAME>');
/*
** If we do require a message, and we have the message now,
** set it; else we can just rely on the Event Generate
** Function callback code. Then Raise the Event with the
** required parameters.
*/
if l_message = 'MESSAGE' then
if l_xmldocument is not null then
dbms_lob.createtemporary(l_eventdata, FALSE,
DBMS_LOB.CALL);
dbms_lob.write(l_eventdata, length(l_xmldocument), 1 ,
l_xmldocument);
-- Raise the Event with the message
wf_event.raise( p_event_name => '<EVENT_NAME>',
p_event_key => '<EVENT_KEY>',
p_event_data => l_eventdata,
p_parameters => l_parameter_list);
else
-- Raise the Event without the message
wf_event.raise( p_event_name => '<EVENT_NAME>',
p_event_key => '<EVENT_KEY>',
p_parameters => l_parameter_list);
end if;
elsif
l_message = 'KEY' then
-- Raise the Event
wf_event.raise( p_event_name => <EVENT_NAME>,
p_event_key => <EVENT_KEY>,
p_parameters => l_parameter_list);
end if;
/*
** Up to your own custom code to commit the transaction
*/
commit;
/*
** Up to your own custom code to handle any major exceptions
*/
exception
when others then
null;
end;
『Oracle Workflow開発者ガイド』のUnexpectedイベントに関する項
前へ | 次へ | 目次 | 索引 | 用語集 |