[Home] [Help]
PACKAGE BODY: APPS.WF_EVENT_GROUPS_PKG
Source
1 package body WF_EVENT_GROUPS_PKG as
2 /* $Header: WFEVGRPB.pls 120.4 2011/03/04 14:13:36 skandepu ship $ */
3 m_table_name varchar2(255) := 'WF_EVENT_GROUPS';
4 m_package_version varchar2(30) := '1.0';
5 -----------------------------------------------------------------------------
6 procedure INSERT_ROW (
7 X_ROWID in out nocopy varchar2,
8 X_GROUP_GUID in raw,
9 X_MEMBER_GUID in raw
10 ) is
11 cursor C is select rowid
12 from wf_event_groups
13 where group_guid = X_GROUP_GUID
14 and member_guid = X_MEMBER_GUID;
15 begin
16 insert into wf_event_groups (
17 group_guid,
18 member_guid
19 ) values (
20 X_GROUP_GUID,
21 X_MEMBER_GUID
22 );
23
24 open c;
25 fetch c into X_ROWID;
26 if (c%notfound) then
27 close c;
28 raise no_data_found;
29 else
30 wf_event.raise('oracle.apps.wf.event.group.create',x_group_guid||'/'||x_member_guid);
31 end if;
32 close c;
33
34 exception
35 when others then
36 wf_core.context('Wf_Event_Groups_Pkg', 'Insert_Row', x_group_guid, x_member_guid);
37 raise;
38
39 end INSERT_ROW;
40 -----------------------------------------------------------------------------
41 procedure UPDATE_ROW (
42 X_GROUP_GUID in raw,
43 X_MEMBER_GUID in raw
44 ) is
45 begin
46 update wf_event_groups set
47 group_guid = X_GROUP_GUID,
48 member_guid = X_MEMBER_GUID
49 where group_guid = X_GROUP_GUID
50 and member_guid = X_MEMBER_GUID;
51
52 if (sql%notfound) then
53 raise no_data_found;
54 else
55 wf_event.raise('oracle.apps.wf.event.group.update',x_group_guid||'/'||x_member_guid);
56 end if;
57
58 exception
59 when others then
60 wf_core.context('Wf_Event_Groups_Pkg', 'Update_Row', x_group_guid,
61 x_member_guid);
62 raise;
63 end UPDATE_ROW;
64 -----------------------------------------------------------------------------
65 procedure LOAD_ROW (
66 X_GROUP_GUID in raw,
67 X_MEMBER_GUID in raw
68 ) is
69 row_id varchar2(64);
70 begin
71 WF_EVENT_GROUPS_PKG.UPDATE_ROW (
72 X_GROUP_GUID => X_GROUP_GUID,
73 X_MEMBER_GUID => X_MEMBER_GUID
74 );
75
76 exception
77 when no_data_found then
78 wf_core.clear;
79 WF_EVENT_GROUPS_PKG.INSERT_ROW(
80 X_ROWID => row_id,
81 X_GROUP_GUID => X_GROUP_GUID,
82 X_MEMBER_GUID => X_MEMBER_GUID
83 );
84 when others then
85 wf_core.context('Wf_Event_Groups_Pkg', 'Load_Row', x_group_guid,
86 x_member_guid);
87 raise;
88 end LOAD_ROW;
89 -----------------------------------------------------------------------------
90
91 procedure DELETE_ROW (
92 X_GROUP_GUID in raw,
93 X_MEMBER_GUID in raw
94 ) is
95 begin
96 wf_event.raise('oracle.apps.wf.event.group.delete',x_group_guid||'/'||x_member_guid);
97
98 delete from wf_event_groups
99 where group_guid = X_GROUP_GUID
100 and member_guid = X_MEMBER_GUID;
101
102 if (sql%notfound) then
103 raise no_data_found;
104 end if;
105
106 exception
107 when others then
108 wf_core.context('Wf_Event_Groups_Pkg', 'Delete_Row', x_group_guid,
109 x_member_guid);
110 raise;
111
112 end DELETE_ROW;
113 -----------------------------------------------------------------------------
114 function GENERATE (
115 X_GROUP_GUID in raw,
116 X_MEMBER_GUID in raw
117 ) return varchar2 is
118 buf varchar2(32000);
119 l_doc xmldom.DOMDocument;
120 l_element xmldom.DOMElement;
121 l_root xmldom.DOMNode;
122 l_node xmldom.DOMNode;
123 l_header xmldom.DOMNode;
124
125 begin
126 -- select DISPLAY_NAME, DESCRIPTION
127 -- into l_display_name, l_description
128 -- from wf_event_groups
129 -- where group_guid = x_guid
130 -- and member_guid = x_member_guid;
131
132 l_doc := xmldom.newDOMDocument;
133 l_root := xmldom.makeNode(l_doc);
134 l_root := wf_event_xml.newtag (l_doc, l_root, wf_event_xml.masterTagName);
135 l_header := wf_event_xml.newtag(l_doc, l_root, m_table_name);
136 l_node := wf_event_xml.newtag(l_doc, l_header, wf_event_xml.versionTagName,
137 m_package_version);
138 l_node := wf_event_xml.newtag(l_doc, l_header, 'GROUP_GUID',
139 rawtohex(x_GROUP_GUID));
140 l_node := wf_event_xml.newtag(l_doc, l_header, 'MEMBER_GUID',
141 rawtohex(x_MEMBER_GUID));
142
143 xmldom.writeToBuffer(l_root, buf);
144 return buf;
145
146 null;
147 exception
148 when others then
149 wf_core.context('Wf_Event_Groups_Pkg', 'Generate', x_group_guid,
150 x_member_guid);
151 raise;
152 end GENERATE;
153 -----------------------------------------------------------------------------
154 procedure CHECK_EVENT(X_MEMBER_GUID RAW,
155 X_ERROR out nocopy varchar2)is
156 event_count number;
157 begin
158 Select 1 into event_count
159 from WF_EVENTS
160 where guid=X_MEMBER_GUID;
161 exception
162 when no_data_found then
163 x_error:='NON_EXIST_EVENT:'||X_MEMBER_GUID;
164 when others then
165 wf_core.context('Wf_Event_Groups_Pkg', 'Check_Event', x_member_guid);
166 raise;
167 end CHECK_EVENT;
168 -----------------------------------------------------------------------------
169 procedure RECEIVE2 (
170 X_MESSAGE in varchar2,
171 X_ERROR out nocopy varchar2) is
172 l_group_guid varchar2(32);
173 l_member_guid varchar2(32);
174 l_version varchar2(80);
175 l_message varchar2(32000);
176
177 l_node_name varchar2(255);
178 l_node xmldom.DOMNode;
179 l_child xmldom.DOMNode;
180 l_value varchar2(32000);
181 l_length integer;
182 l_node_list xmldom.DOMNodeList;
183
184 l_event_name varchar2(255);
185
186 begin
187 l_message := x_message;
188 l_message := WF_EVENT_SYNCHRONIZE_PKG.SetGUID(l_message); -- update #NEW
189 l_message := WF_EVENT_SYNCHRONIZE_PKG.SetSYSTEMGUID(l_message); -- update #LOCAL
190 l_message := WF_EVENT_SYNCHRONIZE_PKG.SetSID(l_message); -- update #SID
191
192 l_node_list := wf_event_xml.findTable(l_message, m_table_name);
193 l_length := xmldom.getLength(l_node_list);
194
195 -- loop through elements that we received.
196 for i in 0..l_length-1 loop
197 l_node := xmldom.item(l_node_list, i);
198 l_node_name := xmldom.getNodeName(l_node);
199 if xmldom.hasChildNodes(l_node) then
200 l_child := xmldom.GetFirstChild(l_node);
201 l_value := xmldom.getNodevalue(l_child);
202 else
203 l_value := NULL;
204 end if;
205
206 if(l_node_name = 'GROUP_GUID') then
207 l_group_guid := l_value;
208 elsif(l_node_name = 'MEMBER_GUID') then
209 l_member_guid := l_value;
210 elsif(l_node_name = 'GROUP_NAME') then
211
212 -- Bug 10394616: Throwing WF error 'WF_EVENTGROUP_NOTEXISTS' instead of
213 -- NO_DATA_FOUND error as it will be easy to understand the error for the user
214 begin
215 select guid
216 into l_group_guid
217 from wf_events
218 where name = l_value
219 and type = 'GROUP';
220 exception
221 when NO_DATA_FOUND then
222
223 if(l_event_name is null) then
224
225 -- loop through elements to get the event name
226 for j in i..l_length-1 loop
227 l_node := xmldom.item(l_node_list, j);
228 l_node_name := xmldom.getNodeName(l_node);
229
230 if (l_node_name = 'MEMBER_NAME') then
231 if xmldom.hasChildNodes(l_node) then
232 l_child := xmldom.GetFirstChild(l_node);
233 l_event_name := xmldom.getNodevalue(l_child);
234 else
235 l_event_name := NULL;
236 end if;
237 exit;
238 end if;
239 end loop;
240 end if;
241
242 Wf_Core.Token('GROUP', l_value);
243 Wf_Core.Token('EVENT', l_event_name);
244 Wf_Core.Raise('WF_EVENTGROUP_NOTEXISTS');
245 end;
246 elsif(l_node_name = 'MEMBER_NAME') then
247 select guid
248 into l_member_guid
249 from wf_events
250 where name = l_value;
251
252 l_event_name := l_value;
253 elsif(l_node_name = wf_event_xml.versionTagName) then
254 l_version := l_value;
255 else
256 Wf_Core.Token('REASON', 'Invalid column name found:' ||
257 l_node_name || ' with value:'||l_value);
258 Wf_Core.Raise('WFSQL_INTERNAL');
259 end if;
260 end loop;
261
262 wf_event_groups_pkg.check_event(l_member_guid,x_error);
263
264 wf_event_groups_pkg.load_row(
265 X_GROUP_GUID => l_group_guid,
266 X_MEMBER_GUID => l_member_guid
267 );
268
269 exception
270 when others then
271 wf_core.context('Wf_Event_Groups_Pkg', 'Receive', x_message);
272 raise;
273 end RECEIVE2;
274
275 -----------------------------------------------------------------------------
276 procedure RECEIVE (
277 X_MESSAGE in varchar2 ) is
278 l_error varchar2(4000);
279 begin
280 RECEIVE2(X_MESSAGE,l_error);
281 end RECEIVE;
282 -----------------------------------------------------------------------------
283 function GENERATE2 (
284 X_GROUP_NAME in varchar2,
285 X_MEMBER_NAME in varchar2
286 ) return varchar2 is
287 buf varchar2(32000);
288 l_doc xmldom.DOMDocument;
289 l_element xmldom.DOMElement;
290 l_root xmldom.DOMNode;
291 l_node xmldom.DOMNode;
292 l_header xmldom.DOMNode;
293
294 begin
295
296 l_doc := xmldom.newDOMDocument;
297 l_root := xmldom.makeNode(l_doc);
298 l_root := wf_event_xml.newtag (l_doc, l_root, wf_event_xml.masterTagName);
299 l_header := wf_event_xml.newtag(l_doc, l_root, m_table_name);
300 l_node := wf_event_xml.newtag(l_doc, l_header, wf_event_xml.versionTagName,
301 m_package_version);
302 l_node := wf_event_xml.newtag(l_doc, l_header, 'GROUP_NAME', x_group_name);
303 l_node := wf_event_xml.newtag(l_doc, l_header, 'MEMBER_NAME', x_member_name);
304
305 xmldom.writeToBuffer(l_root, buf);
306 return buf;
307
308 null;
309 exception
310 when others then
311 wf_core.context('Wf_Event_Groups_Pkg', 'Generate2', x_group_name,
312 x_member_name);
313 raise;
314 end GENERATE2;
315
316 end WF_EVENT_GROUPS_PKG;