DBA Data[Home] [Help]

PACKAGE BODY: APPS.WF_OAM_UTIL

Source


1 package body WF_OAM_UTIL as
2 /* $Header: WFOAMUTB.pls 120.3 2005/07/02 03:16:33 appldev noship $ */
3 
4 --
5 -- getWfEventTParameters
6 --   To convert the the parameter list in WF_EVENT_T to
7 --   string
8 
9 FUNCTION getWfEventTParameters(l_paramlist in wf_parameter_list_t)
10 RETURN VARCHAR2
11 IS
12  l_parmlist_t            wf_parameter_list_t;
13  l_parameters            varchar2(4000);
14  i                       binary_integer;
15 begin
16  l_parmlist_t := l_paramlist;
17  if (l_parmlist_t is not null) then
18         i := l_parmlist_t.FIRST;
19         while (i <= l_parmlist_t.LAST) loop
20           l_parameters := l_parameters||l_parmlist_t(i).getName()||'='||
21                         l_parmlist_t(i).getValue()||' ';
22           i := l_parmlist_t.NEXT(i);
23         end loop;
24       end if;
25   return l_parameters;
26 end getWfEventTParameters;
27 
28 --
29 -- getWfEventT
30 --   Function wrapper around wf_event_ojmstext_qh.deserialize
31 --
32 
33 FUNCTION getWfEventT(l_aq_jms_text in sys.aq$_jms_text_message)
34 RETURN WF_EVENT_T
35 IS
36 l_wf_event_t     wf_event_t;
37 l_jms            sys.aq$_jms_text_message;
38 begin
39  l_jms := l_aq_jms_text;
40  wf_event_ojmstext_qh.deserialize(l_jms,l_wf_event_t);
41  return l_wf_event_t;
42 end getWfEventT;
43 
44 --
45 -- getViewXMLURL
46 --    To get the URL for viewing XML given item type, item key and
47 --    event attribute
48 FUNCTION  getViewXMLURL(p_eventattribute  in      varchar2,
49                         p_itemtype        in      varchar2,
50                         p_itemkey        in      varchar2,
51 			p_mimetype       in      varchar2 default 'text/xml')
52 RETURN VARCHAR2
53 IS
54   l_url varchar2(4000);
55   l_fnctname varchar2(500);
56   l_params varchar2(1000);
57 begin
58 
59   l_fnctname := 'OAM_WF_VIEW_XML';
60 
61   l_params := 'eventattr='||p_eventattribute||
62               '&'||'itemtype='||p_itemtype||
63 	      '&'||'itemkey='||p_itemkey||
64 	      '&'||'mime='||p_mimetype||
65 	      '&'||'source='||'ITEMDATA';
66 
67   l_url := fnd_run_function.get_run_function_url( p_function_name => l_fnctname,
68                                 p_resp_appl => null,
69                                 p_resp_key => null,
70                                 p_security_group_key => null,
71                                 p_parameters => l_params);
72 
73  return l_url;
74 end getViewXMLURL;
75 
76 --
77 -- getViewXMLURL
78 --    To get the URL for viewing XML given message id and queue table
79 FUNCTION  getViewXMLURL(p_message_id   in  varchar2,
80                         p_queue_table  in  varchar2,
81 			p_mimetype       in      varchar2 default 'text/xml')
82 RETURN VARCHAR2
83 IS
84   l_url varchar2(4000);
85   l_fnctname varchar2(500);
86   l_qtable varchar2(30);
87   l_msgid varchar2(500);
88   l_type  varchar2(30);
89   l_params varchar2(1000);
90   l_owner varchar2(30);
91   l_queue_table varchar2(30);
92   l_dummy number;
93 
94 begin
95   l_fnctname := 'OAM_WF_VIEW_XML';
96 
97   -- Validate the Queue Table
98   if (instr(p_queue_table, '.', 1) > 0) then
99      l_owner := substr(p_queue_table, 1, instr(p_queue_table, '.', 1)-1);
100      l_queue_table := substr(p_queue_table, instr(p_queue_table, '.', 1)+1);
101   else
102      l_owner := Wf_Core.Translate('WF_SCHEMA');
103      l_queue_table := p_queue_table;
104   end if;
105 
106   begin
107      SELECT 1
108      INTO   l_dummy
109      FROM   all_queue_tables
110      WHERE  owner = l_owner
111      AND    queue_table = l_queue_table
112      AND    rownum = 1;
113   exception
114      when no_data_found then
115         -- mostly no_data_found error
116         Wf_Core.Token('OWNER', l_owner);
117         Wf_Core.Token('QUEUE', l_queue_table);
118         Wf_Core.Raise('WFE_QUEUE_NOTEXIST');
119   end;
120 
121   l_params := 'id='||p_message_id||
122               '&'||'qtable='||p_queue_table||
123 	      '&'||'mime='||p_mimetype||
124 	      '&'||'source='||'MSGDATA';
125 
126   l_url := fnd_run_function.get_run_function_url( p_function_name => l_fnctname,
127                                 p_resp_appl => null,
128                                 p_resp_key => null,
129                                 p_security_group_key => null,
130                                 p_parameters => l_params);
131 
132  return l_url;
133 end getViewXMLURL;
134 
135 --
136 --getEventData
137 --    To get the CLOB Eventdata  given item type, item key and
138 --    event attribute
139 FUNCTION getEventData(p_eventattribute  in    varchar2,
140                       p_itemtype        in    varchar2,
141                       p_itemkey        in     varchar2)
142 RETURN clob
143 IS
144   l_event_t               wf_event_t;
145   l_eventdata             clob;
146 begin
147 
148   l_event_t := wf_engine.GetItemAttrEvent(
149                                 itemtype        => P_ItemType,
150                                 itemkey         => P_ItemKey,
151                                 name            => P_EventAttribute);
152   l_eventdata := l_event_t.GetEventData();
153 
154   return l_eventdata;
155 end getEventData;
156 
157 --
158 --getEventData
159 --    To get the CLOB Eventdata  given message id and queue table
160 FUNCTION getEventData(p_message_id   in  varchar2,
161                       p_queue_table  in  varchar2)
162 RETURN clob
163 IS
164   TYPE queue_contents_t IS REF CURSOR;
165   l_qcontents             queue_contents_t;
166   l_sqlstmt               varchar2(32000);
167   l_message               wf_event_t;
168   l_eventdata             clob;
169 begin
170 
171   -- Get the Clob
172   l_sqlstmt := 'SELECT user_data FROM '||p_queue_table
173                 ||' WHERE MSGID = :b';
174 
175   OPEN l_qcontents FOR l_sqlstmt USING p_message_id;
176   LOOP
177   FETCH l_qcontents INTO l_message;
178     l_eventdata  := l_message.GetEventData();
179   EXIT WHEN l_qcontents%NOTFOUND;
180 
181   END LOOP;
182 
183   return l_eventdata;
184 end getEventData;
185 
186 END WF_OAM_UTIL;