DBA Data[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;