95: p_return_code := 0;
96:
97: /* Create queue table */
98: BEGIN
99: DBMS_AQADM.CREATE_QUEUE_TABLE(
100: queue_table => p_queue_table,
101: queue_payload_type => p_payload,
102: sort_list => 'priority,enq_time',
103: storage_clause => lv_storage);
110: End;
111:
112: -- Create the queue
113: BEGIN
114: DBMS_AQADM.CREATE_QUEUE(
115: queue_name => p_queue_name,
116: queue_table => p_queue_table,
117: max_retries => p_max_retries);
118: Exception
123: end if;
124: End;
125:
126: -- Enable enqueue and dequeue operations for SimpleQ.
127: DBMS_AQADM.START_QUEUE(p_queue_name);
128:
129: -- Create an exception queue
130: IF p_expq_name IS NOT NULL THEN
131: BEGIN
128:
129: -- Create an exception queue
130: IF p_expq_name IS NOT NULL THEN
131: BEGIN
132: DBMS_AQADM.CREATE_QUEUE(
133: queue_name => p_expq_name,
134: queue_table => p_queue_table,
135: queue_type => DBMS_AQADM.EXCEPTION_QUEUE,
136: comment => 'Exception queue for '||p_queue_name);
131: BEGIN
132: DBMS_AQADM.CREATE_QUEUE(
133: queue_name => p_expq_name,
134: queue_table => p_queue_table,
135: queue_type => DBMS_AQADM.EXCEPTION_QUEUE,
136: comment => 'Exception queue for '||p_queue_name);
137: Exception
138: when others then
139: /* ignore queue exists error*/
142: end if;
143: End;
144:
145: /* Enable dequeue operations for exceptionQ.*/
146: DBMS_AQADM.START_QUEUE(p_expq_name,FALSE,TRUE);
147: END IF;
148:
149:
150: EXCEPTION
172: BEGIN
173:
174: p_return_code := 0;
175: FOR lv_aq_rec IN lc_aq LOOP
176: DBMS_AQADM.STOP_QUEUE(queue_name => lv_aq_rec.internal_q_name);
177: END LOOP;
178:
179: EXCEPTION
180: WHEN OTHERS THEN
199: BEGIN
200:
201: p_return_code := 0;
202: FOR lv_aq_rec IN lc_aq LOOP
203: DBMS_AQADM.DROP_QUEUE_TABLE(
204: queue_table => lv_aq_rec.queue_table_name,
205: force => TRUE);
206:
207: END LOOP;
224: p_return_code OUT NOCOPY NUMBER,
225: p_error_description OUT NOCOPY VARCHAR2)
226: IS
227: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
228: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
229: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
230: lv_MsgID RAW(16);
231: lv_date date := sysdate;
232:
225: p_error_description OUT NOCOPY VARCHAR2)
226: IS
227: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
228: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
229: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
230: lv_MsgID RAW(16);
231: lv_date date := sysdate;
232:
233: BEGIN
243: NULL,
244: NULL);
245:
246: -- Enqueue it with the commit on a seperate transaction.
247: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
248: lv_MessageProperties.exception_queue := 'XDP_PENDING_ORDER_EXPQ';
249: lv_MessageProperties.priority := NVL(p_priority,100);
250: if p_prov_date > lv_date then
251: lv_MessageProperties.delay :=
253: else
254: lv_MessageProperties.delay := 0;
255: end if;
256:
257: DBMS_AQ.ENQUEUE(
258: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
259: enqueue_options => lv_EnqueueOptions,
260: message_properties => lv_MessageProperties,
261: payload =>lv_wf_object,
295: PROCEDURE Pending_Order_DQ
296: IS
297: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
298: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
299: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
300: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
301: lv_MsgID RAW(16);
302: lv_return_code NUMBER;
303: lv_count2 NUMBER;
296: IS
297: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
298: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
299: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
300: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
301: lv_MsgID RAW(16);
302: lv_return_code NUMBER;
303: lv_count2 NUMBER;
304: lv_order_id NUMBER;
325: lv_queue_state := Get_Queue_State('XDP_PENDING_ORDER_QUEUE');
326:
327: IF lv_queue_state = 'ENABLED' THEN -- proceed
328: savepoint pending_q_tag;
329: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
330: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
331: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
332: lv_DequeueOptions.MSGID := NULL;
333: lv_DequeueOptions.MSGID := v_GetPendingOrders.msgid;
326:
327: IF lv_queue_state = 'ENABLED' THEN -- proceed
328: savepoint pending_q_tag;
329: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
330: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
331: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
332: lv_DequeueOptions.MSGID := NULL;
333: lv_DequeueOptions.MSGID := v_GetPendingOrders.msgid;
334:
327: IF lv_queue_state = 'ENABLED' THEN -- proceed
328: savepoint pending_q_tag;
329: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
330: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
331: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
332: lv_DequeueOptions.MSGID := NULL;
333: lv_DequeueOptions.MSGID := v_GetPendingOrders.msgid;
334:
335: BEGIN
334:
335: BEGIN
336: -- Set Dequeue time out to be 1 second
337: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
338: DBMS_AQ.DEQUEUE(
339: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
340: dequeue_options => lv_DequeueOptions,
341: message_properties => lv_MessageProperties,
342: payload => lv_wf_object,
424: p_ERROR_DESCRIPTION => lv_err);
425: raise_application_error(-20530,lv_err);
426: ELSE
427: lv_DequeueOptions.msgid := lv_MsgID;
428: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
429: DBMS_AQ.DEQUEUE(
430: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
431: dequeue_options => lv_DequeueOptions,
432: message_properties => lv_MessageProperties,
425: raise_application_error(-20530,lv_err);
426: ELSE
427: lv_DequeueOptions.msgid := lv_MsgID;
428: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
429: DBMS_AQ.DEQUEUE(
430: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
431: dequeue_options => lv_DequeueOptions,
432: message_properties => lv_MessageProperties,
433: payload => lv_tmp,
466: x_queue_timed_out OUT NOCOPY VARCHAR2 )
467: IS
468: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
469: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
470: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
471: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
472: lv_MsgID RAW(16);
473: lv_return_code NUMBER;
474: lv_count2 NUMBER;
467: IS
468: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
469: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
470: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
471: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
472: lv_MsgID RAW(16);
473: lv_return_code NUMBER;
474: lv_count2 NUMBER;
475: lv_order_id NUMBER;
486:
487: BEGIN
488:
489: savepoint pending_q_tag;
490: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
491: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
492: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
493: lv_DequeueOptions.MSGID := NULL;
494: lv_DequeueOptions.correlation := p_correlation_id;
487: BEGIN
488:
489: savepoint pending_q_tag;
490: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
491: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
492: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
493: lv_DequeueOptions.MSGID := NULL;
494: lv_DequeueOptions.correlation := p_correlation_id;
495:
488:
489: savepoint pending_q_tag;
490: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
491: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
492: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
493: lv_DequeueOptions.MSGID := NULL;
494: lv_DequeueOptions.correlation := p_correlation_id;
495:
496: BEGIN
495:
496: BEGIN
497: -- Set Dequeue time out
498: lv_DequeueOptions.wait := p_message_wait_timeout;
499: DBMS_AQ.DEQUEUE(
500: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
501: dequeue_options => lv_DequeueOptions,
502: message_properties => lv_MessageProperties,
503: payload => lv_wf_object,
589: p_ERROR_DESCRIPTION => lv_err);
590: raise_application_error(-20530,lv_err);
591: ELSE
592: lv_DequeueOptions.msgid := lv_MsgID;
593: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
594: DBMS_AQ.DEQUEUE(
595: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
596: dequeue_options => lv_DequeueOptions,
597: message_properties => lv_MessageProperties,
590: raise_application_error(-20530,lv_err);
591: ELSE
592: lv_DequeueOptions.msgid := lv_MsgID;
593: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
594: DBMS_AQ.DEQUEUE(
595: queue_name => G_XDP_SCHEMA||'.'||'XDP_PENDING_ORDER_QUEUE',
596: dequeue_options => lv_DequeueOptions,
597: message_properties => lv_MessageProperties,
598: payload => lv_tmp,
623: p_wf_item_key IN Varchar2)
624:
625: IS
626: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
627: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
628: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
629: lv_MsgID RAW(16);
630:
631: lv_date date := sysdate;
624:
625: IS
626: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
627: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
628: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
629: lv_MsgID RAW(16);
630:
631: lv_date date := sysdate;
632:
642: NULL,
643: NULL);
644:
645: -- Enqueue it with the commit on a seperate transaction.
646: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
647: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_ORDER_PROCESSOR_EXPQ';
648: lv_MessageProperties.priority := NVL(p_priority,100);
649:
650: if p_prov_date > lv_date then
656:
657: -- Set the Correlation ID Message Property
658: lv_MessageProperties.correlation := p_order_type;
659:
660: DBMS_AQ.ENQUEUE(
661: queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROC_QUEUE',
662: enqueue_options => lv_EnqueueOptions,
663: message_properties => lv_MessageProperties,
664: payload =>lv_wf_object,
697: PROCEDURE Start_OrderProcessor_Workflow
698: IS
699: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
700: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
701: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
702: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
703: lv_MsgID RAW(16);
704: lv_return_code NUMBER;
705: lv_count2 NUMBER;
698: IS
699: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
700: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
701: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
702: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
703: lv_MsgID RAW(16);
704: lv_return_code NUMBER;
705: lv_count2 NUMBER;
706: lv_error_description VARCHAR2(2000);
715: lv_queue_state := Get_Queue_State('XDP_ORDER_PROC_QUEUE');
716: IF lv_queue_state = 'ENABLED' THEN -- proceed
717: savepoint order_q_tag;
718:
719: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
720: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
721: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
722: lv_DequeueOptions.MSGID := NULL;
723:
716: IF lv_queue_state = 'ENABLED' THEN -- proceed
717: savepoint order_q_tag;
718:
719: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
720: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
721: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
722: lv_DequeueOptions.MSGID := NULL;
723:
724: BEGIN
717: savepoint order_q_tag;
718:
719: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
720: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
721: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
722: lv_DequeueOptions.MSGID := NULL;
723:
724: BEGIN
725: -- Set Dequeue time out to be 1 second
724: BEGIN
725: -- Set Dequeue time out to be 1 second
726: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
727:
728: DBMS_AQ.DEQUEUE(
729: queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROC_QUEUE',
730: dequeue_options => lv_DequeueOptions,
731: message_properties => lv_MessageProperties,
732: payload => lv_wf_object,
760:
761: if lv_state IN ('READY') THEN
762: BEGIN
763: lv_DequeueOptions.msgid := lv_MsgID;
764: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
765:
766: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROC_QUEUE',
767: dequeue_options => lv_DequeueOptions,
768: message_properties => lv_MessageProperties,
762: BEGIN
763: lv_DequeueOptions.msgid := lv_MsgID;
764: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
765:
766: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROC_QUEUE',
767: dequeue_options => lv_DequeueOptions,
768: message_properties => lv_MessageProperties,
769: payload => lv_tmp,
770: msgid => lv_MsgID);
818:
819: IS
820: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
821: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
822: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
823: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
824: lv_MsgID RAW(16);
825: lv_return_code NUMBER;
826: lv_error_description VARCHAR2(2000);
819: IS
820: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
821: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
822: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
823: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
824: lv_MsgID RAW(16);
825: lv_return_code NUMBER;
826: lv_error_description VARCHAR2(2000);
827:
827:
828: BEGIN
829:
830: savepoint order_q_tag;
831: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
832: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
833: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
834: lv_DequeueOptions.MSGID := NULL;
835: lv_DequeueOptions.correlation := p_correlation_id;
828: BEGIN
829:
830: savepoint order_q_tag;
831: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
832: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
833: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
834: lv_DequeueOptions.MSGID := NULL;
835: lv_DequeueOptions.correlation := p_correlation_id;
836:
829:
830: savepoint order_q_tag;
831: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
832: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
833: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
834: lv_DequeueOptions.MSGID := NULL;
835: lv_DequeueOptions.correlation := p_correlation_id;
836:
837: BEGIN
837: BEGIN
838: -- Set Dequeue time out to be 1 second
839: lv_DequeueOptions.wait := p_message_wait_timeout;
840:
841: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROC_QUEUE',
842: dequeue_options => lv_DequeueOptions,
843: message_properties => lv_MessageProperties,
844: payload => lv_wf_object,
845: msgid => lv_MsgID);
912: p_error_description OUT NOCOPY VARCHAR2)
913:
914: IS
915: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
916: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
917: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
918: lv_MsgID RAW(16);
919: lv_date date := sysdate;
920:
913:
914: IS
915: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
916: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
917: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
918: lv_MsgID RAW(16);
919: lv_date date := sysdate;
920:
921: -- Remove Later??
948: -- Set the Correlation ID Message Property
949: lv_MessageProperties.correlation := lv_workitem_name;
950:
951: -- Enqueue it with the commit on a seperate transaction.
952: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
953: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_WORKITEM_EXPQ';
954: lv_MessageProperties.priority := NVL(p_priority,100);
955:
956: if p_prov_date > lv_date then
958: else
959: lv_MessageProperties.delay := 0;
960: end if;
961:
962: DBMS_AQ.ENQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_QUEUE',
963: enqueue_options => lv_EnqueueOptions,
964: message_properties => lv_MessageProperties,
965: payload =>lv_wf_object,
966: msgid => lv_MsgID);
986: Procedure Start_Workitem_Workflow
987: IS
988: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
989: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
990: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
991: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
992: lv_MsgID RAW(16);
993: lv_return_code NUMBER;
994: lv_count2 NUMBER;
987: IS
988: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
989: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
990: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
991: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
992: lv_MsgID RAW(16);
993: lv_return_code NUMBER;
994: lv_count2 NUMBER;
995: lv_error_description VARCHAR2(2000);
1002: lv_queue_state := Get_Queue_State('XDP_WORKITEM_QUEUE');
1003: IF lv_queue_state = 'ENABLED' THEN -- proceed
1004: savepoint workitem_q_tag;
1005:
1006: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1007: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1008: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1009: lv_DequeueOptions.MSGID := NULL;
1010:
1003: IF lv_queue_state = 'ENABLED' THEN -- proceed
1004: savepoint workitem_q_tag;
1005:
1006: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1007: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1008: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1009: lv_DequeueOptions.MSGID := NULL;
1010:
1011: BEGIN
1004: savepoint workitem_q_tag;
1005:
1006: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1007: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1008: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1009: lv_DequeueOptions.MSGID := NULL;
1010:
1011: BEGIN
1012: -- Set Dequeue time out to be 1 second
1011: BEGIN
1012: -- Set Dequeue time out to be 1 second
1013: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1014:
1015: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_QUEUE',
1016: dequeue_options => lv_DequeueOptions,
1017: message_properties => lv_MessageProperties,
1018: payload => lv_wf_object,
1019: msgid => lv_MsgID);
1046: -- rollback to workitem_q_tag;
1047: if lv_state IN ('READY') THEN
1048: BEGIN
1049: lv_DequeueOptions.msgid := lv_MsgID;
1050: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
1051:
1052: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_QUEUE',
1053: dequeue_options => lv_DequeueOptions,
1054: message_properties => lv_MessageProperties,
1048: BEGIN
1049: lv_DequeueOptions.msgid := lv_MsgID;
1050: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
1051:
1052: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_QUEUE',
1053: dequeue_options => lv_DequeueOptions,
1054: message_properties => lv_MessageProperties,
1055: payload => lv_tmp,
1056: msgid => lv_MsgID);
1109: x_queue_timed_out OUT NOCOPY VARCHAR2 )
1110: IS
1111: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1112: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1113: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1114: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1115: lv_MsgID RAW(16);
1116:
1117: BEGIN
1110: IS
1111: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1112: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1113: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1114: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1115: lv_MsgID RAW(16);
1116:
1117: BEGIN
1118:
1116:
1117: BEGIN
1118:
1119: savepoint workitem_q_tag;
1120: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1121: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1122: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1123: lv_DequeueOptions.MSGID := NULL;
1124: lv_DequeueOptions.correlation := p_correlation_id;
1117: BEGIN
1118:
1119: savepoint workitem_q_tag;
1120: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1121: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1122: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1123: lv_DequeueOptions.MSGID := NULL;
1124: lv_DequeueOptions.correlation := p_correlation_id;
1125:
1118:
1119: savepoint workitem_q_tag;
1120: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1121: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1122: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1123: lv_DequeueOptions.MSGID := NULL;
1124: lv_DequeueOptions.correlation := p_correlation_id;
1125:
1126: BEGIN
1125:
1126: BEGIN
1127: -- Set Dequeue time out to be 1 second
1128: lv_DequeueOptions.wait := p_message_wait_timeout;
1129: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_QUEUE',
1130: dequeue_options => lv_DequeueOptions,
1131: message_properties => lv_MessageProperties,
1132: payload => lv_wf_object,
1133: msgid => lv_MsgID);
1217: p_return_code OUT NOCOPY NUMBER,
1218: p_error_description OUT NOCOPY VARCHAR2)
1219: IS
1220: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1221: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1222: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1223: lv_MsgID RAW(16);
1224: lv_date date := sysdate;
1225:
1218: p_error_description OUT NOCOPY VARCHAR2)
1219: IS
1220: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1221: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1222: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1223: lv_MsgID RAW(16);
1224: lv_date date := sysdate;
1225:
1226: -- Remove Later??
1253: -- Set the Correlation ID Message Property
1254: lv_MessageProperties.correlation := lv_fa_name;
1255:
1256: -- Enqueue it with the commit on a seperate transaction.
1257: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
1258: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_FA_EXPQ';
1259: lv_MessageProperties.priority := NVL(p_priority,100);
1260:
1261: DBMS_AQ.ENQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1257: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
1258: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_FA_EXPQ';
1259: lv_MessageProperties.priority := NVL(p_priority,100);
1260:
1261: DBMS_AQ.ENQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1262: enqueue_options => lv_EnqueueOptions,
1263: message_properties => lv_MessageProperties,
1264: payload =>lv_wf_object,
1265: msgid => lv_MsgID);
1288: PROCEDURE Start_FA_Workflow
1289: IS
1290: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1291: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1292: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1293: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1294: lv_MsgID RAW(16);
1295: lv_return_code NUMBER;
1296: lv_count2 NUMBER;
1289: IS
1290: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1291: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1292: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1293: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1294: lv_MsgID RAW(16);
1295: lv_return_code NUMBER;
1296: lv_count2 NUMBER;
1297: lv_error_description VARCHAR2(2000);
1303: while 1=1 loop
1304: lv_queue_state := Get_Queue_State('XDP_FA_QUEUE');
1305: IF lv_queue_state = 'ENABLED' THEN -- proceed
1306: savepoint fa_q_tag;
1307: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1308: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1309: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1310: lv_DequeueOptions.MSGID := NULL;
1311:
1304: lv_queue_state := Get_Queue_State('XDP_FA_QUEUE');
1305: IF lv_queue_state = 'ENABLED' THEN -- proceed
1306: savepoint fa_q_tag;
1307: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1308: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1309: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1310: lv_DequeueOptions.MSGID := NULL;
1311:
1312: BEGIN
1305: IF lv_queue_state = 'ENABLED' THEN -- proceed
1306: savepoint fa_q_tag;
1307: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1308: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1309: lv_DequeueOptions.dequeue_mode := DBMS_AQ.LOCKED;
1310: lv_DequeueOptions.MSGID := NULL;
1311:
1312: BEGIN
1313: -- Set Dequeue time out to be 1 second
1312: BEGIN
1313: -- Set Dequeue time out to be 1 second
1314: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1315:
1316: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1317: dequeue_options => lv_DequeueOptions,
1318: message_properties => lv_MessageProperties,
1319: payload => lv_wf_object,
1320: msgid => lv_MsgID);
1347: -- rollback to fa_q_tag;
1348: if lv_state = 'READY' THEN
1349: BEGIN
1350: lv_DequeueOptions.msgid := lv_MsgID;
1351: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
1352:
1353: DBMS_AQ.DEQUEUE(queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1354: dequeue_options => lv_DequeueOptions,
1355: message_properties => lv_MessageProperties,
1349: BEGIN
1350: lv_DequeueOptions.msgid := lv_MsgID;
1351: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
1352:
1353: DBMS_AQ.DEQUEUE(queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1354: dequeue_options => lv_DequeueOptions,
1355: message_properties => lv_MessageProperties,
1356: payload => lv_tmp,
1357: msgid => lv_MsgID);
1403: x_queue_timed_out OUT NOCOPY VARCHAR2 )
1404: IS
1405: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1406: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1407: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1408: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1409: lv_MsgID RAW(16);
1410:
1411: BEGIN
1404: IS
1405: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1406: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
1407: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1408: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1409: lv_MsgID RAW(16);
1410:
1411: BEGIN
1412:
1410:
1411: BEGIN
1412:
1413: savepoint fa_q_tag;
1414: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1415: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1416: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1417: lv_DequeueOptions.MSGID := NULL;
1418: lv_DequeueOptions.correlation := p_correlation_id;
1411: BEGIN
1412:
1413: savepoint fa_q_tag;
1414: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1415: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1416: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1417: lv_DequeueOptions.MSGID := NULL;
1418: lv_DequeueOptions.correlation := p_correlation_id;
1419:
1412:
1413: savepoint fa_q_tag;
1414: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1415: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1416: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
1417: lv_DequeueOptions.MSGID := NULL;
1418: lv_DequeueOptions.correlation := p_correlation_id;
1419:
1420: BEGIN
1420: BEGIN
1421: -- Set Dequeue time out to be 1 second
1422: lv_DequeueOptions.wait := p_message_wait_timeout;
1423:
1424: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_QUEUE',
1425: dequeue_options => lv_DequeueOptions,
1426: message_properties => lv_MessageProperties,
1427: payload => lv_wf_object,
1428: msgid => lv_MsgID);
1496: p_return_code OUT NOCOPY NUMBER,
1497: p_error_description OUT NOCOPY VARCHAR2) IS
1498:
1499: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1500: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1501: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1502: lv_MsgID RAW(16);
1503: lv_jobNum NUMBER;
1504:
1497: p_error_description OUT NOCOPY VARCHAR2) IS
1498:
1499: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1500: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1501: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1502: lv_MsgID RAW(16);
1503: lv_jobNum NUMBER;
1504:
1505: BEGIN
1515: p_wi_instance_id,
1516: p_fa_instance_id);
1517:
1518: -- Enqueue it with the commit on a seperate transaction.
1519: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
1520: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_Channel_Exception_Q';
1521: if p_fe_name is not null then
1522: lv_MessageProperties.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName || ':' || p_fe_name;
1523: else
1522: lv_MessageProperties.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName || ':' || p_fe_name;
1523: else
1524: lv_MessageProperties.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName;
1525: end if;
1526: DBMS_AQ.ENQUEUE(
1527: queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_CHANNEL_Q',
1528: enqueue_options => lv_EnqueueOptions,
1529: message_properties => lv_MessageProperties,
1530: payload =>lv_wf_object,
1552: --
1553: PROCEDURE Resume_Next_WF IS
1554:
1555: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1556: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1557: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1558: lv_MsgID RAW(16);
1559: lv_return_code NUMBER;
1560: lv_error_description VARCHAR2(2000);
1553: PROCEDURE Resume_Next_WF IS
1554:
1555: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1556: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1557: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1558: lv_MsgID RAW(16);
1559: lv_return_code NUMBER;
1560: lv_error_description VARCHAR2(2000);
1561: lv_queue_state varchar2(200);
1569: lv_queue_state := Get_Queue_State('XDP_WF_CHANNEL_Q');
1570: IF lv_queue_state = 'ENABLED' THEN ---- proceed
1571: BEGIN
1572: SAVEPOINT resume_wf1;
1573: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1574: lv_DequeueOptions.navigation := DBMS_AQ.NEXT_MESSAGE;
1575:
1576: -- Set Dequeue time out to be 1 second
1577: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1570: IF lv_queue_state = 'ENABLED' THEN ---- proceed
1571: BEGIN
1572: SAVEPOINT resume_wf1;
1573: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1574: lv_DequeueOptions.navigation := DBMS_AQ.NEXT_MESSAGE;
1575:
1576: -- Set Dequeue time out to be 1 second
1577: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1578: BEGIN
1576: -- Set Dequeue time out to be 1 second
1577: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1578: BEGIN
1579:
1580: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_Channel_Q',
1581: dequeue_options => lv_DequeueOptions,
1582: message_properties => lv_MessageProperties,
1583: payload => lv_wf_object,
1584: msgid => lv_MsgID);
1584: msgid => lv_MsgID);
1585:
1586: EXCEPTION
1587: When e_QNavOut Then
1588: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1589: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1590:
1591: -- Set Dequeue time out to be 1 second
1592: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1585:
1586: EXCEPTION
1587: When e_QNavOut Then
1588: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1589: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1590:
1591: -- Set Dequeue time out to be 1 second
1592: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1593: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_Channel_Q',
1589: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1590:
1591: -- Set Dequeue time out to be 1 second
1592: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1593: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_Channel_Q',
1594: dequeue_options => lv_DequeueOptions,
1595: message_properties => lv_MessageProperties,
1596: payload => lv_wf_object,
1597: msgid => lv_MsgID);
1685: x_message_key OUT NOCOPY VARCHAR2,
1686: x_queue_timed_out OUT NOCOPY VARCHAR2 )
1687: IS
1688: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1689: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1690: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1691: lv_MsgID RAW(16);
1692:
1693: lv_fa_state varchar2(40);
1686: x_queue_timed_out OUT NOCOPY VARCHAR2 )
1687: IS
1688: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
1689: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1690: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1691: lv_MsgID RAW(16);
1692:
1693: lv_fa_state varchar2(40);
1694: lv_return_code NUMBER;
1698:
1699: BEGIN
1700:
1701: savepoint resume_wf;
1702: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1703: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1704: if p_correlation_id is not null then
1705: lv_DequeueOptions.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName || ':' || p_correlation_id;
1706: else
1699: BEGIN
1700:
1701: savepoint resume_wf;
1702: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1703: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1704: if p_correlation_id is not null then
1705: lv_DequeueOptions.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName || ':' || p_correlation_id;
1706: else
1707: lv_DequeueOptions.correlation := XDP_ADAPTER_CORE_DB.pv_InstanceName || '%';
1709: lv_DequeueOptions.wait := p_message_wait_timeout;
1710: lv_high_avail := false;
1711:
1712: BEGIN
1713: DBMS_AQ.DEQUEUE(
1714: queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_Channel_Q',
1715: dequeue_options => lv_DequeueOptions,
1716: message_properties => lv_MessageProperties,
1717: payload => lv_wf_object,
1850: p_return_code OUT NOCOPY NUMBER,
1851: p_error_description OUT NOCOPY VARCHAR2)
1852: IS
1853: lv_wf_object SYSTEM.XDP_WF_RESUMEQ_TYPE;
1854: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1855: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1856: lv_MsgID RAW(16);
1857: lv_jobNum NUMBER;
1858:
1851: p_error_description OUT NOCOPY VARCHAR2)
1852: IS
1853: lv_wf_object SYSTEM.XDP_WF_RESUMEQ_TYPE;
1854: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1855: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1856: lv_MsgID RAW(16);
1857: lv_jobNum NUMBER;
1858:
1859: BEGIN
1867: wf_activity_name => p_wf_activity,
1868: error_description => NULL);
1869:
1870: -- Enqueue it with the commit on a seperate transaction.
1871: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
1872: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_WF_SEQUENCING_ExpQ';
1873: lv_MessageProperties.priority := p_priority;
1874:
1875: DBMS_AQ.ENQUEUE(
1871: lv_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
1872: lv_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_WF_SEQUENCING_ExpQ';
1873: lv_MessageProperties.priority := p_priority;
1874:
1875: DBMS_AQ.ENQUEUE(
1876: queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_SEQUENCING_Q',
1877: enqueue_options => lv_EnqueueOptions,
1878: message_properties => lv_MessageProperties,
1879: payload =>lv_wf_object,
1891: --
1892: PROCEDURE Resume_Parent_Workflow
1893: IS
1894: lv_wf_object SYSTEM.XDP_WF_RESUMEQ_TYPE;
1895: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1896: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1897: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1898: lv_MsgID RAW(16);
1899: lv_return_code NUMBER;
1892: PROCEDURE Resume_Parent_Workflow
1893: IS
1894: lv_wf_object SYSTEM.XDP_WF_RESUMEQ_TYPE;
1895: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1896: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1897: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1898: lv_MsgID RAW(16);
1899: lv_return_code NUMBER;
1900: lv_error_description VARCHAR2(2000);
1893: IS
1894: lv_wf_object SYSTEM.XDP_WF_RESUMEQ_TYPE;
1895: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
1896: lv_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
1897: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
1898: lv_MsgID RAW(16);
1899: lv_return_code NUMBER;
1900: lv_error_description VARCHAR2(2000);
1901: lv_queue_state varchar2(200);
1906: lv_queue_state := Get_Queue_State('XDP_WF_SEQUENCING_Q');
1907:
1908: IF lv_queue_state = 'ENABLED' THEN /*proceed*/
1909: BEGIN
1910: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1911: lv_DequeueOptions.navigation := DBMS_AQ.NEXT_MESSAGE;
1912:
1913: -- Set Dequeue time out to be 2 second
1914: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1907:
1908: IF lv_queue_state = 'ENABLED' THEN /*proceed*/
1909: BEGIN
1910: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1911: lv_DequeueOptions.navigation := DBMS_AQ.NEXT_MESSAGE;
1912:
1913: -- Set Dequeue time out to be 2 second
1914: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1915: BEGIN
1912:
1913: -- Set Dequeue time out to be 2 second
1914: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1915: BEGIN
1916: DBMS_AQ.DEQUEUE(
1917: queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_SEQUENCING_Q',
1918: dequeue_options => lv_DequeueOptions,
1919: message_properties => lv_MessageProperties,
1920: payload => lv_wf_object,
1921: msgid => lv_MsgID);
1922: EXCEPTION
1923: WHEN e_QNavOut THEN
1924: -- Dequeue it with the commit on a seperate transaction.
1925: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1926: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1927:
1928: -- Set Dequeue time out to be 2 second
1929: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1922: EXCEPTION
1923: WHEN e_QNavOut THEN
1924: -- Dequeue it with the commit on a seperate transaction.
1925: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
1926: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1927:
1928: -- Set Dequeue time out to be 2 second
1929: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1930: DBMS_AQ.DEQUEUE(
1926: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
1927:
1928: -- Set Dequeue time out to be 2 second
1929: lv_DequeueOptions.wait := xnp_message.POP_TIMEOUT;
1930: DBMS_AQ.DEQUEUE(
1931: queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_SEQUENCING_Q',
1932: dequeue_options => lv_DequeueOptions,
1933: message_properties => lv_MessageProperties,
1934: payload => lv_wf_object,
2019: p_ReturnCode OUT NOCOPY NUMBER,
2020: p_ErrorDescription OUT NOCOPY VARCHAR2) IS
2021:
2022: l_OrderObj SYSTEM.XDP_ORDER_OBJ;
2023: l_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
2024: l_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
2025: l_MsgID RAW(16);
2026:
2027: BEGIN
2020: p_ErrorDescription OUT NOCOPY VARCHAR2) IS
2021:
2022: l_OrderObj SYSTEM.XDP_ORDER_OBJ;
2023: l_EnqueueOptions DBMS_AQ.ENQUEUE_OPTIONS_T;
2024: l_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
2025: l_MsgID RAW(16);
2026:
2027: BEGIN
2028:
2029: l_OrderObj := SYSTEM.XDP_ORDER_OBJ(
2030: p_OrderID,
2031: p_ObjectType);
2032:
2033: l_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
2034: l_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_ORDER_OBJ_Excep_Q';
2035:
2036:
2037: DBMS_AQ.ENQUEUE (
2033: l_EnqueueOptions.visibility := DBMS_AQ.ON_COMMIT;
2034: l_MessageProperties.exception_queue := G_XDP_SCHEMA||'.'||'XDP_ORDER_OBJ_Excep_Q';
2035:
2036:
2037: DBMS_AQ.ENQUEUE (
2038: queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_OBJ_Q',
2039: enqueue_options => l_EnqueueOptions,
2040: message_properties => l_MessageProperties,
2041: payload => l_OrderObj,
2973: IS
2974:
2975: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
2976: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
2977: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
2978: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
2979: lv_MsgID RAW(16);
2980: lv_return_code NUMBER;
2981: lv_error_description VARCHAR2(2000);
2974:
2975: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
2976: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
2977: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
2978: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
2979: lv_MsgID RAW(16);
2980: lv_return_code NUMBER;
2981: lv_error_description VARCHAR2(2000);
2982: l_dq_count NUMBER ;
2984:
2985: BEGIN
2986:
2987: savepoint order_q_tag;
2988: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
2989: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
2990: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
2991: lv_DequeueOptions.MSGID := NULL;
2992: lv_DequeueOptions.correlation := p_correlation_id;
2985: BEGIN
2986:
2987: savepoint order_q_tag;
2988: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
2989: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
2990: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
2991: lv_DequeueOptions.MSGID := NULL;
2992: lv_DequeueOptions.correlation := p_correlation_id;
2993:
2986:
2987: savepoint order_q_tag;
2988: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
2989: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
2990: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
2991: lv_DequeueOptions.MSGID := NULL;
2992: lv_DequeueOptions.correlation := p_correlation_id;
2993:
2994: -- Set Dequeue time out to be 1 second
2999: FOR i IN 1..G_DQ_COUNT
3000: LOOP
3001:
3002: BEGIN
3003: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_ORDER_PROCESSOR_EXPQ',
3004: dequeue_options => lv_DequeueOptions,
3005: message_properties => lv_MessageProperties,
3006: payload => lv_wf_object,
3007: msgid => lv_MsgID);
3040: IS
3041:
3042: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3043: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
3044: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3045: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3046: lv_MsgID RAW(16);
3047: lv_return_code NUMBER;
3048: lv_error_description VARCHAR2(2000);
3041:
3042: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3043: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
3044: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3045: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3046: lv_MsgID RAW(16);
3047: lv_return_code NUMBER;
3048: lv_error_description VARCHAR2(2000);
3049: l_dq_count NUMBER ;
3051:
3052: BEGIN
3053:
3054: savepoint fa_q_tag;
3055: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3056: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3057: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3058: lv_DequeueOptions.MSGID := NULL;
3059: lv_DequeueOptions.correlation := p_correlation_id;
3052: BEGIN
3053:
3054: savepoint fa_q_tag;
3055: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3056: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3057: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3058: lv_DequeueOptions.MSGID := NULL;
3059: lv_DequeueOptions.correlation := p_correlation_id;
3060:
3053:
3054: savepoint fa_q_tag;
3055: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3056: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3057: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3058: lv_DequeueOptions.MSGID := NULL;
3059: lv_DequeueOptions.correlation := p_correlation_id;
3060:
3061: -- Set Dequeue time out to be 1 second
3066: FOR i IN 1..G_DQ_COUNT
3067: LOOP
3068:
3069: BEGIN
3070: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_FA_EXPQ',
3071: dequeue_options => lv_DequeueOptions,
3072: message_properties => lv_MessageProperties,
3073: payload => lv_wf_object,
3074: msgid => lv_MsgID);
3116: IS
3117:
3118: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3119: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
3120: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3121: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3122: lv_MsgID RAW(16);
3123: lv_return_code NUMBER;
3124: lv_error_description VARCHAR2(2000);
3117:
3118: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3119: lv_tmp SYSTEM.XDP_WF_CHANNELQ_TYPE;
3120: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3121: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3122: lv_MsgID RAW(16);
3123: lv_return_code NUMBER;
3124: lv_error_description VARCHAR2(2000);
3125: l_dq_count NUMBER ;
3127:
3128: BEGIN
3129:
3130: savepoint workitem_q_tag;
3131: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3132: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3133: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3134: lv_DequeueOptions.MSGID := NULL;
3135: lv_DequeueOptions.correlation := p_correlation_id;
3128: BEGIN
3129:
3130: savepoint workitem_q_tag;
3131: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3132: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3133: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3134: lv_DequeueOptions.MSGID := NULL;
3135: lv_DequeueOptions.correlation := p_correlation_id;
3136:
3129:
3130: savepoint workitem_q_tag;
3131: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3132: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3133: lv_DequeueOptions.dequeue_mode := DBMS_AQ.REMOVE;
3134: lv_DequeueOptions.MSGID := NULL;
3135: lv_DequeueOptions.correlation := p_correlation_id;
3136:
3137: -- Set Dequeue time out to be 1 second
3142: FOR i IN 1..G_DQ_COUNT
3143: LOOP
3144:
3145: BEGIN
3146: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WORKITEM_EXPQ',
3147: dequeue_options => lv_DequeueOptions,
3148: message_properties => lv_MessageProperties,
3149: payload => lv_wf_object,
3150: msgid => lv_MsgID);
3210:
3211: IS
3212:
3213: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3214: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3215: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3216: lv_MsgID RAW(16);
3217: lv_return_code NUMBER;
3218: lv_error_description VARCHAR2(2000);
3211: IS
3212:
3213: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3214: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3215: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3216: lv_MsgID RAW(16);
3217: lv_return_code NUMBER;
3218: lv_error_description VARCHAR2(2000);
3219: l_dq_count NUMBER ;
3221:
3222: BEGIN
3223:
3224: savepoint resume_wf;
3225: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3226: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3227: lv_DequeueOptions.correlation := p_correlation_id;
3228:
3229: -- Set Dequeue time out to be 1 second
3222: BEGIN
3223:
3224: savepoint resume_wf;
3225: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3226: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3227: lv_DequeueOptions.correlation := p_correlation_id;
3228:
3229: -- Set Dequeue time out to be 1 second
3230: lv_DequeueOptions.wait := p_message_wait_timeout;
3234: FOR i IN 1..G_DQ_COUNT
3235: LOOP
3236:
3237: BEGIN
3238: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_CHANNEL_EXCEPTION_Q',
3239: dequeue_options => lv_DequeueOptions,
3240: message_properties => lv_MessageProperties,
3241: payload => lv_wf_object,
3242: msgid => lv_MsgID);
3479: x_body_text VARCHAR2(32767);
3480: x_queue_timed_out VARCHAR2(1);
3481: l_msg_status VARCHAR2(40) ;
3482: l_message SYSTEM.XNP_MESSAGE_TYPE ;
3483: my_dequeue_options dbms_aq.dequeue_options_t ;
3484: message_properties dbms_aq.message_properties_t ;
3485: message_handle RAW(16) ;
3486: dq_time_out EXCEPTION;
3487:
3480: x_queue_timed_out VARCHAR2(1);
3481: l_msg_status VARCHAR2(40) ;
3482: l_message SYSTEM.XNP_MESSAGE_TYPE ;
3483: my_dequeue_options dbms_aq.dequeue_options_t ;
3484: message_properties dbms_aq.message_properties_t ;
3485: message_handle RAW(16) ;
3486: dq_time_out EXCEPTION;
3487:
3488: PRAGMA EXCEPTION_INIT ( dq_time_out, -25228 );
3494: x_queue_timed_out := 'N';
3495: l_dq_count := 0;
3496:
3497: my_dequeue_options.wait := p_message_wait_timeout;
3498: my_dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
3499: my_dequeue_options.consumer_name := NULL;
3500: my_dequeue_options.correlation := NULL;
3501: my_dequeue_options.visibility := DBMS_AQ.ON_COMMIT;
3502:
3497: my_dequeue_options.wait := p_message_wait_timeout;
3498: my_dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE;
3499: my_dequeue_options.consumer_name := NULL;
3500: my_dequeue_options.correlation := NULL;
3501: my_dequeue_options.visibility := DBMS_AQ.ON_COMMIT;
3502:
3503: FOR i IN 1..G_DQ_COUNT
3504: LOOP
3505:
3504: LOOP
3505:
3506: BEGIN
3507:
3508: my_dequeue_options.dequeue_mode := DBMS_AQ.LOCKED;
3509: my_dequeue_options.msgid := NULL;
3510:
3511: LOOP
3512:
3509: my_dequeue_options.msgid := NULL;
3510:
3511: LOOP
3512:
3513: DBMS_AQ.DEQUEUE ( queue_name => G_XNP_SCHEMA ||'.'||'XNP_OUT_MSG_EXCEPTION_Q',
3514: dequeue_options => my_dequeue_options,
3515: message_properties => message_properties,
3516: payload => l_message,
3517: msgid => message_handle );
3547: p_correlation_id => x_msg_header.message_code ,
3548: p_commit_mode => xnp_message.c_on_commit);
3549:
3550: END IF ;
3551: my_dequeue_options.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
3552: my_dequeue_options.msgid := message_handle;
3553:
3554: DBMS_AQ.DEQUEUE ( queue_name => G_XNP_SCHEMA||'.'||'XNP_OUT_MSG_EXCEPTION_Q',
3555: dequeue_options => my_dequeue_options,
3550: END IF ;
3551: my_dequeue_options.dequeue_mode := DBMS_AQ.REMOVE_NODATA;
3552: my_dequeue_options.msgid := message_handle;
3553:
3554: DBMS_AQ.DEQUEUE ( queue_name => G_XNP_SCHEMA||'.'||'XNP_OUT_MSG_EXCEPTION_Q',
3555: dequeue_options => my_dequeue_options,
3556: message_properties => message_properties,
3557: payload => l_message,
3558: msgid => message_handle );
3578: ,p_queue_name IN VARCHAR2
3579: ,p_correlation_id IN VARCHAR2 DEFAULT NULL
3580: ,p_priority IN INTEGER DEFAULT 1
3581: ,p_commit_mode IN NUMBER DEFAULT XNP_MESSAGE.C_ON_COMMIT
3582: ,p_delay IN NUMBER DEFAULT DBMS_AQ.NO_DELAY
3583: )
3584:
3585: IS
3586:
3584:
3585: IS
3586:
3587: l_message SYSTEM.XNP_MESSAGE_TYPE ;
3588: my_enqueue_options dbms_aq.enqueue_options_t ;
3589: message_properties dbms_aq.message_properties_t ;
3590: message_handle RAW(16) ;
3591: recipients dbms_aq.aq$_recipient_list_t ;
3592:
3585: IS
3586:
3587: l_message SYSTEM.XNP_MESSAGE_TYPE ;
3588: my_enqueue_options dbms_aq.enqueue_options_t ;
3589: message_properties dbms_aq.message_properties_t ;
3590: message_handle RAW(16) ;
3591: recipients dbms_aq.aq$_recipient_list_t ;
3592:
3593: l_recipient_name VARCHAR2(80) ;
3587: l_message SYSTEM.XNP_MESSAGE_TYPE ;
3588: my_enqueue_options dbms_aq.enqueue_options_t ;
3589: message_properties dbms_aq.message_properties_t ;
3590: message_handle RAW(16) ;
3591: recipients dbms_aq.aq$_recipient_list_t ;
3592:
3593: l_recipient_name VARCHAR2(80) ;
3594: l_recipient_count INTEGER ;
3595: l_initial_pos INTEGER ;
3658:
3659: END IF;
3660:
3661: IF (p_commit_mode = XNP_MESSAGE.C_IMMEDIATE) THEN
3662: my_enqueue_options.visibility := DBMS_AQ.IMMEDIATE ;
3663: ELSE
3664: my_enqueue_options.visibility := DBMS_AQ.ON_COMMIT ;
3665: END IF ;
3666: /* Smoolcha Fixed bug 3537144 Hard coded schema name */
3660:
3661: IF (p_commit_mode = XNP_MESSAGE.C_IMMEDIATE) THEN
3662: my_enqueue_options.visibility := DBMS_AQ.IMMEDIATE ;
3663: ELSE
3664: my_enqueue_options.visibility := DBMS_AQ.ON_COMMIT ;
3665: END IF ;
3666: /* Smoolcha Fixed bug 3537144 Hard coded schema name */
3667: -- IF p_queue_name = 'XNP.XNP_IN_EVT_Q' THEN
3668: -- message_properties.exception_queue := 'XNP.XNP_IN_EVT_EXCEPTION_Q' ;
3683: ELSIF instr(p_queue_name,'XNP_OUT_MSG_Q') > 0 THEN
3684: message_properties.exception_queue := G_XNP_SCHEMA || '.XNP_OUT_MSG_EXCEPTION_Q' ;
3685: END IF ;
3686:
3687: DBMS_AQ.ENQUEUE (
3688: queue_name => p_queue_name ,
3689: enqueue_options => my_enqueue_options,
3690: message_properties => message_properties,
3691: payload => l_message,
3764: PROCEDURE DQ_XDP_WF_CHANNEL_REPROCESS
3765:
3766: IS
3767: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3768: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3769: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3770: lv_MsgID RAW(16);
3771: lv_queue_timed_out VARCHAR2(1);
3772:
3765:
3766: IS
3767: lv_wf_object SYSTEM.XDP_WF_CHANNELQ_TYPE;
3768: lv_DequeueOptions DBMS_AQ.DEQUEUE_OPTIONS_T;
3769: lv_MessageProperties DBMS_AQ.MESSAGE_PROPERTIES_T;
3770: lv_MsgID RAW(16);
3771: lv_queue_timed_out VARCHAR2(1);
3772:
3773: l_ReProcessEnqTime DATE;
3775:
3776:
3777: BEGIN
3778:
3779: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3780: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3781: lv_DequeueOptions.correlation := null;
3782:
3783: -- Set Dequeue time out to be 1 second
3776:
3777: BEGIN
3778:
3779: lv_DequeueOptions.visibility := DBMS_AQ.ON_COMMIT;
3780: lv_DequeueOptions.navigation := DBMS_AQ.FIRST_MESSAGE;
3781: lv_DequeueOptions.correlation := null;
3782:
3783: -- Set Dequeue time out to be 1 second
3784: lv_DequeueOptions.wait := 1;
3788:
3789: WHILE 1=1 LOOP
3790:
3791: BEGIN
3792: DBMS_AQ.DEQUEUE( queue_name => G_XDP_SCHEMA||'.'||'XDP_WF_CHANNEL_Q',
3793: dequeue_options => lv_DequeueOptions,
3794: message_properties => lv_MessageProperties,
3795: payload => lv_wf_object,
3796: msgid => lv_MsgID);
3802: IF lv_queue_timed_out = 'Y' THEN
3803: EXIT ;
3804:
3805: ELSE
3806: lv_DequeueOptions.navigation := DBMS_AQ.NEXT_MESSAGE;
3807:
3808: select FE_ID into l_FeID from xdp_fes
3809: where fulfillment_element_name = lv_wf_object.FE_NAME;
3810: