[Home] [Help]
PACKAGE BODY: APPS.MSC_RULE
Source
1 package body MSC_RULE as
2 -- $Header: MSCRULEB.pls 120.1 2005/06/21 01:54:36 appldev ship $
3 --
4 -- Inbound_Rule (PUBLIC)
5 -- Standard XML Gateway Subscription rule function
6 -- IN:
7 -- p_subscription_guid - GUID of Subscription to be processed
8 -- p_event - Event to be processes
9 -- NOTE: Determines the Inbound Transaction Queue
10 --
11 -- Standard INBOUND_RULE function
12
13 FUNCTION INBOUND_RULE( p_subscription_guid in raw,
14 p_event in out nocopy wf_event_t ) return varchar2
15 IS
16 PRAGMA AUTONOMOUS_TRANSACTION;
17 attribute4 varchar2(1000);
18 i_queue_name varchar2(2000);
19 v_ect_inengobj system.ecx_inengobj;
20 v_enqueueoptions dbms_aq.enqueue_options_t;
21 v_messageproperties dbms_aq.message_properties_t;
22 v_msgid raw(16);
23 v_msgid_out raw(16);
24 i_trigger_id number;
25 debug_level pls_integer;
26 i_payload clob;
27
28 retcode pls_integer;
29 errmsg varchar2(2000);
30 logfile varchar2(200);
31 i_outpayload CLOB;
32
33 EX_NOT_MSC EXCEPTION;
34
35 BEGIN
36
37 v_msgid := p_event.getValueForParameter('ECX_MSGID');
38 i_trigger_id := p_event.getValueForParameter('ECX_TRIGGER_ID');
39
40 wf_log_pkg.string(6,'inbound_rule','MsgId '|| v_msgid);
41 wf_log_pkg.string(6,'inbound_rule','TriggerId '|| i_trigger_id);
42
43 ecx_errorlog.inbound_trigger( i_trigger_id,
44 v_msgid,
45 null,
46 '10',
47 'Processing rule...');
48
49 -- Get the data from the Event
50
51 attribute4 := p_event.getValueForParameter('ECX_ATTRIBUTE4');
52
53 -- get out if this is not a MSC message
54 IF substr(upper(nvl(attribute4,'XYZ')),1,3) <> 'MSC' THEN RAISE EX_NOT_MSC; END IF;
55
56 debug_level := p_event.getValueForParameter('ECX_DEBUG_LEVEL');
57 i_payload := p_event.event_data;
58
59 wf_log_pkg.string(6,'inbound_rule','Attribute4 ' || attribute4);
60 wf_log_pkg.string(6,'inbound_rule','Debug Mode ' || debug_level);
61
62 ecx_inbound_trig.ProcessXML
63 ( attribute4,
64 i_payload,
65 debug_level,
66 retcode,
67 errmsg,
68 logfile,
69 i_outpayload);
70 COMMIT;
71
72 IF retcode = 0 THEN
73 return 'SUCCESS';
74 ELSIF retcode = 1 THEN
75 wf_core.token('ECX_ERRMSG',errmsg);
76 wf_core.token('ECX_LOGFILE',logfile);
77 wf_core.raise('ECX_PROCESS_XMLERROR');
78 ELSE
79 wf_core.token('ECX_ERRMSG',errmsg);
80 wf_core.token('ECX_LOGFILE',logfile);
81 wf_core.raise('ECX_PROGRAM_EXIT');
82 END IF;
83
84 ecx_errorlog.inbound_trigger( i_trigger_id,
85 v_msgid,
86 v_msgid_out,
87 '10',
88 'Processing message...');
89
90 wf_log_pkg.string(6,'inbound_rule','Processed successfully.');
91
92 RETURN 'SUCCESS';
93
94 EXCEPTION
95 WHEN EX_NOT_MSC THEN
96 RETURN 'SUCCESS';
97 WHEN OTHERS THEN
98 RETURN 'ERROR';
99 END INBOUND_RULE;
100
101 END MSC_RULE;