Oracle Workflow APIリファレンス リリース2.6.3.5 部品番号: B15622-01 |
![]() |
![]() |
![]() |
![]() |
![]() |
||
前へ | 次へ | 目次 | 索引 | 用語集 |
procedure DequeueOutbound
(dequeuemode in number,
navigation in number default 1,
correlation in varchar2 default null,
itemtype in varchar2 default null,
payload out system.wf_payload_t,
message_handle in out raw,
timeout out boolean);
説明
エージェントが取り込めるように送信キューからメッセージをデキューします。
注意: このプロシージャをループ内でコールする場合は、戻されるメッセージ・ハンドルをNULLに設定しないと、プロシージャで同じメッセージが再度デキューされます。これは望ましくない動作であり、無限ループの原因となることがあります。
引数(入力)
dequeuemode | 番号1、2および3にそれぞれ対応するDBMS_AQ.BROWSE、DBMS_AQ.LOCKEDまたはDBMS_AQ.REMOVEという値で、デキューのロック動作を表します。DBMS_AQ.BROWSEモードでは、メッセージのロックを取得せずにキューからメッセージを読み込みます。DBMS_AQ.LOCKEDモードでは、メッセージを読み込み、トランザクションが完了するまでメッセージの書込みロックを取得します。DBMS_AQ.REMOVEモードでは、メッセージを読み込んで削除します。 |
navigation | 番号1、2にそれぞれ対応するDBMS_AQ.FIRST_MESSAGEまたはDBMS_AQ.NEXT_MESSAGEを指定し、取り出されるメッセージの場所を示します。DBMS_AQ.FIRST_MESSAGEという値では、取出し可能で相関基準と合致している最初のメッセージを取り出します。基本的には、キューの始まりが最初のメッセージとなります。DBMS_AQ.NEXT_MESSAGEという値では、取出し可能で相関基準と合致しており、キューを通して読み込める次のメッセージを取り出します。 デフォルトは1です。 |
correlation | デキューされるメッセージのオプションの相関識別子を指定します。Oracle Advanced Queuingでは、特定の相関値に基づいてメッセージのキューを検索できます。「%」などのLIKE比較演算子を使用して、識別子の文字列を指定できます。NULLの場合、ワークフロー・エンジンではWorkflowスキーマ名と項目タイプに基づいて相関識別子が作成されます。 |
itemtype | イベントの項目タイプ。 |
message_handle | デキューされる特定のイベントに対する、オプションのメッセージ・ハンドルIDを指定します。メッセージのハンドルIDを指定すると相関識別子は無視されます。 |
注意: キューから読み込むものがなくなると、タイムアウト出力はTRUEという値を戻します。
例
次の例は、送信キューをループして出力を表示するコードを示しています。
declare
event system.wf_payload_t;
i number;
msg_id raw(16);
queuename varchar2(30);
navigation_mode number;
end_of_queue boolean;
begin
queuename:=wf_queue.OUTBOUNDQUEUE;
i:=0;
LOOP
i:=i+1;
-- always start with the first message then progress to next
if i = 1 then
navigation_mode := dbms_aq.FIRST_MESSAGE;
else
navigation_mode := dbms_aq.NEXT_MESSAGE;
end if;
-- not interested in specific msg_id. Leave it null so
--as to loop through all messages in queue
msg_id :=null;
wf_queue.DequeueOutbound(
dequeuemode => dbms_aq.BROWSE,
payload => event,
navigation => navigation_mode,
message_handle => msg_id,
timeout => end_of_queue);
if end_of_queue then
exit;
end if;
-- print the correlation itemtype:itemKey
dbms_output.put_line('Msg '||to_char(i)||' = '||
event.itemtype||':'||event.itemkey
||' '||event.actid||' '
||event.param_list);
END LOOP;
end;
/
前へ | 次へ | 目次 | 索引 | 用語集 |