ヘッダーをスキップ

Oracle Workflow APIリファレンス
リリース2.6.3.5

部品番号: B15622-01
前へ 次へ       目次 索引 用語集
         前へ  次へ          目次  索引  用語集

DequeueOutbound

構文

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;
/


          前へ   次へ           目次   索引   用語集



Oracleロゴ
Copyright © 2003, 2004, Oracle. All rights reserved.