DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEO_ICSM_AQ_PUB

Source


1 PACKAGE BODY IEO_ICSM_AQ_PUB AS
2 /* $Header: ieoaqpb.pls 115.6 2002/12/20 23:10:46 edwang noship $ */
3 
4     PROCEDURE ENQUEUE_REQUEST
5     (
6         p_api_version       IN  NUMBER,
7         p_init_msg_list     IN  VARCHAR2 Default FND_API.G_FALSE,
8         p_commit            IN  VARCHAR2 Default FND_API.G_FALSE,
9 
10         p_node_id           IN  VARCHAR2,
11         p_xml_data          IN  VARCHAR2,
12 
13         x_request_id        OUT NOCOPY NUMBER,
14         x_return_status     OUT NOCOPY VARCHAR2,
15         x_msg_count         OUT NOCOPY NUMBER,
16         x_msg_data          OUT NOCOPY VARCHAR2
17     )
18     IS
19         l_api_name          CONSTANT VARCHAR2(30)   := 'ENQUEUE_REQUEST';
20         l_api_version       CONSTANT NUMBER         := 1.0;
21         enqueue_options     dbms_aq.enqueue_options_t;
22         message_properties  dbms_aq.message_properties_t;
23         message_handle      RAW(16);
24         message             SYSTEM.ieo_icsm_msg_type;
25         request_id          NUMBER ;
26         xml_data_null       EXCEPTION;
27     BEGIN
28         -- Standard Start of API savepoint
29         SAVEPOINT    ENQUEUE_REQUEST_PUB;
30 
31         -- Standard call to check for call compatibility.
32         IF NOT FND_API.Compatible_API_Call
33         (
34             l_api_version,
35             p_api_version,
36             l_api_name,
37             G_PKG_NAME
38         )
39         THEN
40             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
41         END IF;
42 
43         -- Initialize message list if p_init_msg_list is set to TRUE.
44         IF FND_API.To_Boolean( p_init_msg_list ) THEN
45             FND_MSG_PUB.initialize;
46         END IF;
47 
48         --  Initialize API return status to success
49         x_return_status := FND_API.G_RET_STS_SUCCESS;
50 
51         -- API body
52 
53         IF p_xml_data IS NULL then
54             raise xml_data_null;
55         END IF;
56 
57         -- select request id from sequence
58         select ieo_icsm_aq_s1.nextval into request_id from dual ;
59 
60         message_properties.correlation := p_node_id;
61         message_properties.expiration := 600;
62         enqueue_options.visibility := DBMS_AQ.IMMEDIATE;
63         message := SYSTEM.ieo_icsm_msg_type(p_node_id,request_id,p_xml_data);
64 
65         dbms_aq.enqueue
66         (
67             queue_name          => IEO_QUEUE.queue_name_1,
68             enqueue_options     => enqueue_options,
69             message_properties  => message_properties,
70             payload             => message,
71             msgid               => message_handle
72         );
73 
74         x_request_id := request_id ;
75         -- End of API body.
76 
77         -- Standard check of p_commit.
78         IF FND_API.To_Boolean( p_commit ) THEN
79             COMMIT WORK;
80         END IF;
81         -- Standard call to get message count and if count is 1, get message info.
82         FND_MSG_PUB.Count_And_Get
83         (
84             p_count => x_msg_count,
85             p_data  => x_msg_data
86         );
87     EXCEPTION
88 
89         WHEN xml_data_null THEN
90             ROLLBACK TO ENQUEUE_REQUEST_PUB;
91             FND_MESSAGE.SET_NAME('IEO','IEO_AQ_XML_DATA_NULL');
92             FND_MSG_PUB.Add;
93             x_return_status := FND_API.G_RET_STS_ERROR ;
94         WHEN FND_API.G_EXC_ERROR THEN
95             ROLLBACK TO ENQUEUE_REQUEST_PUB;
96             x_return_status := FND_API.G_RET_STS_ERROR ;
97             FND_MSG_PUB.Count_And_Get
98             (
99                 p_count => x_msg_count,
100                 p_data  => x_msg_data
101             );
102         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
103             ROLLBACK TO ENQUEUE_REQUEST_PUB;
104             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
105             FND_MSG_PUB.Count_And_Get
106             (
107                 p_count => x_msg_count,
108                 p_data  => x_msg_data
109             );
110 /*        WHEN OTHERS THEN
111             ROLLBACK TO ENQUEUE_REQUEST_PUB;
112             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
113               IF     FND_MSG_PUB.Check_Msg_Level
114                 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
115             THEN
116                 FND_MSG_PUB.Add_Exc_Msg
117                 (
118                     G_PKG_NAME,
119                     l_api_name
120                 );
121             END IF;
122             FND_MSG_PUB.Count_And_Get
123             (
124                 p_count => x_msg_count,
125                 p_data  => x_msg_data
126             );*/
127     END ENQUEUE_REQUEST;
128 
129     PROCEDURE ENQUEUE_RESPONSE
130     (
131         p_api_version       IN  NUMBER,
132         p_init_msg_list     IN  VARCHAR2 Default FND_API.G_FALSE,
133         p_commit            IN  VARCHAR2 Default FND_API.G_FALSE,
134 
135         p_node_id           IN  NUMBER,
136         p_request_id        IN  NUMBER,
137         p_xml_data          IN  VARCHAR2,
138 
139         x_return_status     OUT NOCOPY VARCHAR2,
140         x_msg_count         OUT NOCOPY NUMBER,
141         x_msg_data          OUT NOCOPY VARCHAR2
142     )
143     IS
144         l_api_name          CONSTANT VARCHAR2(30)   := 'ENQUEUE_RESPONSE';
145         l_api_version       CONSTANT NUMBER         := 1.0;
146         enqueue_options     dbms_aq.enqueue_options_t;
147         message_properties  dbms_aq.message_properties_t;
148         message_handle      RAW(16);
149         message             SYSTEM.ieo_icsm_msg_type;
150         xml_data_null      EXCEPTION;
151     BEGIN
152         -- Standard Start of API savepoint
153         SAVEPOINT    ENQUEUE_RESPONSE_PUB;
154 
155         -- Standard call to check for call compatibility.
156         IF NOT FND_API.Compatible_API_Call
157         (
158             l_api_version,
159             p_api_version,
160             l_api_name,
161             G_PKG_NAME
162         )
163         THEN
164             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
165         END IF;
166 
167         -- Initialize message list if p_init_msg_list is set to TRUE.
168         IF FND_API.To_Boolean( p_init_msg_list ) THEN
169             FND_MSG_PUB.initialize;
170         END IF;
171 
172         --  Initialize API return status to success
173         x_return_status := FND_API.G_RET_STS_SUCCESS;
174 
175         -- API body
176 
177         IF p_xml_data IS NULL then
178             raise xml_data_null;
179         END IF;
180 
181         message_properties.correlation := p_request_id;
182         message_properties.expiration := 600;
183         enqueue_options.visibility := DBMS_AQ.IMMEDIATE;
184         message := SYSTEM.ieo_icsm_msg_type(p_node_id,p_request_id,p_xml_data);
185 
186         dbms_aq.enqueue
187         (
188             queue_name          => IEO_QUEUE.queue_name_2,
189             enqueue_options     => enqueue_options,
190             message_properties  => message_properties,
191             payload             => message,
192             msgid               => message_handle
193         );
194 
195         -- End of API body.
196 
197         -- Standard check of p_commit.
198         IF FND_API.To_Boolean( p_commit ) THEN
199             COMMIT WORK;
200         END IF;
201         -- Standard call to get message count and if count is 1, get message info.
202         FND_MSG_PUB.Count_And_Get
203         (
204             p_count => x_msg_count,
205             p_data  => x_msg_data
206         );
207     EXCEPTION
208 
209         WHEN xml_data_null THEN
210             ROLLBACK TO ENQUEUE_RESPONSE_PUB;
211             FND_MESSAGE.SET_NAME('IEO','IEO_AQ_XML_DATA_NULL');
212             FND_MSG_PUB.Add;
213             x_return_status := FND_API.G_RET_STS_ERROR ;
214         WHEN FND_API.G_EXC_ERROR THEN
215             ROLLBACK TO ENQUEUE_RESPONSE_PUB;
216             x_return_status := FND_API.G_RET_STS_ERROR ;
217             FND_MSG_PUB.Count_And_Get
218             (
219                 p_count => x_msg_count,
220                 p_data  => x_msg_data
221             );
222         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
223             ROLLBACK TO ENQUEUE_RESPONSE_PUB;
224             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
225             FND_MSG_PUB.Count_And_Get
226             (
227                 p_count => x_msg_count,
228                 p_data  => x_msg_data
229             );
230 /*        WHEN OTHERS THEN
231             ROLLBACK TO ENQUEUE_RESPONSE_PUB;
232             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
233               IF     FND_MSG_PUB.Check_Msg_Level
234                 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235             THEN
236                 FND_MSG_PUB.Add_Exc_Msg
237                 (
238                     G_PKG_NAME,
239                     l_api_name
240                 );
241             END IF;
242             FND_MSG_PUB.Count_And_Get
243             (
244                 p_count => x_msg_count,
245                 p_data  => x_msg_data
246             );*/
247     END ENQUEUE_RESPONSE;
248 
249     PROCEDURE DEQUEUE_REQUEST
250     (
251         p_api_version       IN  NUMBER,
252         p_init_msg_list     IN  VARCHAR2 Default FND_API.G_FALSE,
253         p_commit            IN  VARCHAR2 Default FND_API.G_FALSE,
254 
255         p_node_id           IN  NUMBER,
256         p_wait              IN  NUMBER,
257 
258         x_xml_data          OUT NOCOPY VARCHAR2,
259         x_request_id        OUT NOCOPY NUMBER,
260         x_return_status     OUT NOCOPY VARCHAR2,
261         x_msg_count         OUT NOCOPY NUMBER,
262         x_msg_data          OUT NOCOPY VARCHAR2
263     )
264     IS
265         l_api_name          CONSTANT VARCHAR2(30)   := 'DEQUEUE_REQUEST';
266         l_api_version       CONSTANT NUMBER         := 1.0;
267         dequeue_options     dbms_aq.dequeue_options_t;
268         message_properties  dbms_aq.message_properties_t;
269         message_handle      RAW(16);
270         message             SYSTEM.ieo_icsm_msg_type;
271         no_messages         exception;
272         pragma exception_init  (no_messages, -25228);
273     BEGIN
274         -- Standard Start of API savepoint
275         SAVEPOINT    DEQUEUE_REQUEST_PUB;
276 
277         -- Standard call to check for call compatibility.
278         IF NOT FND_API.Compatible_API_Call
279         (
280             l_api_version,
281             p_api_version,
282             l_api_name,
283             G_PKG_NAME
284         )
285         THEN
286             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
287         END IF;
288 
289         -- Initialize message list if p_init_msg_list is set to TRUE.
290         IF FND_API.To_Boolean( p_init_msg_list ) THEN
291             FND_MSG_PUB.initialize;
292         END IF;
293 
294         --  Initialize API return status to success
295         x_return_status := FND_API.G_RET_STS_SUCCESS;
296 
297         -- API body
298 
299         dequeue_options.correlation := p_node_id;
300         dequeue_options.wait := p_wait ;
301         dequeue_options.visibility := DBMS_AQ.IMMEDIATE;
302         dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE ;
303 
304     	dbms_aq.dequeue
305     	(
306 		    queue_name          => IEO_QUEUE.queue_name_1,
307 		    dequeue_options     => dequeue_options,
308 		    message_properties  => message_properties,
309 		    payload             => message,
310 		    msgid               => message_handle
311 		);
312 
313         x_xml_data := message.xml_data ;
314         x_request_id := message.request_id ;
315 
316     EXCEPTION
317         WHEN no_messages THEN
318             x_return_status := G_TIMEOUT ;
319         WHEN FND_API.G_EXC_ERROR THEN
320             ROLLBACK TO DEQUEUE_REQUEST_PUB;
321             x_return_status := FND_API.G_RET_STS_ERROR ;
322             FND_MSG_PUB.Count_And_Get
323             (
324                 p_count => x_msg_count,
325                 p_data  => x_msg_data
326             );
327         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
328             ROLLBACK TO DEQUEUE_REQUEST_PUB;
329             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
330             FND_MSG_PUB.Count_And_Get
331             (
332                 p_count => x_msg_count,
333                 p_data  => x_msg_data
334             );
335 /*        WHEN OTHERS THEN
336             ROLLBACK TO DEQUEUE_REQUEST_PUB;
337             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
338               IF     FND_MSG_PUB.Check_Msg_Level
339                 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
340             THEN
341                 FND_MSG_PUB.Add_Exc_Msg
342                 (
343                     G_PKG_NAME,
344                     l_api_name
345                 );
346             END IF;
347             FND_MSG_PUB.Count_And_Get
348             (
349                 p_count => x_msg_count,
350                 p_data  => x_msg_data
351             );*/
352     END DEQUEUE_REQUEST;
353 
354 
355     PROCEDURE DEQUEUE_RESPONSE
356     (
357         p_api_version       IN  NUMBER,
358         p_init_msg_list     IN  VARCHAR2 Default FND_API.G_FALSE,
362         p_wait              IN  NUMBER,
359         p_commit            IN  VARCHAR2 Default FND_API.G_FALSE,
360 
361         p_request_id        IN  NUMBER,
363 
364         x_xml_data          OUT NOCOPY VARCHAR2,
365         x_return_status     OUT NOCOPY VARCHAR2,
366         x_msg_count         OUT NOCOPY NUMBER,
367         x_msg_data          OUT NOCOPY VARCHAR2
368     )
369     IS
370         l_api_name          CONSTANT VARCHAR2(30)   := 'DEQUEUE_RESPONSE';
371         l_api_version       CONSTANT NUMBER         := 1.0;
372         dequeue_options     dbms_aq.dequeue_options_t;
373         message_properties  dbms_aq.message_properties_t;
374         message_handle      RAW(16);
375         message             SYSTEM.ieo_icsm_msg_type;
376         no_messages         exception;
377         pragma exception_init  (no_messages, -25228);
378     BEGIN
379         -- Standard Start of API savepoint
380         SAVEPOINT    DEQUEUE_RESPONSE_PUB;
381 
382         -- Standard call to check for call compatibility.
383         IF NOT FND_API.Compatible_API_Call
384         (
385             l_api_version,
386             p_api_version,
387             l_api_name,
388             G_PKG_NAME
389         )
390         THEN
391             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
392         END IF;
393 
394         -- Initialize message list if p_init_msg_list is set to TRUE.
395         IF FND_API.To_Boolean( p_init_msg_list ) THEN
396             FND_MSG_PUB.initialize;
397         END IF;
398 
399         --  Initialize API return status to success
400         x_return_status := FND_API.G_RET_STS_SUCCESS;
401 
402         -- API body
403 
404         --DBMS_OUTPUT.put_line('before dequeuing in dequeue response');
405 
406         dequeue_options.correlation := p_request_id;
407         dequeue_options.wait := p_wait ;
408         dequeue_options.visibility := DBMS_AQ.IMMEDIATE;
409         dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE ;
410 
411     	dbms_aq.dequeue
412     	(
413 		    queue_name          => IEO_QUEUE.queue_name_2,
414 		    dequeue_options     => dequeue_options,
415 		    message_properties  => message_properties,
416 		    payload             => message,
417 		    msgid               => message_handle
418 		);
419 
420         --DBMS_OUTPUT.put_line('after dequeuing in dequeue response');
421 
422         x_xml_data := message.xml_data ;
423     EXCEPTION
424         WHEN no_messages THEN
425             --DBMS_OUTPUT.put_line('timeout dequeuing response');
426             x_return_status := G_TIMEOUT;
427         WHEN FND_API.G_EXC_ERROR THEN
428             ROLLBACK TO DEQUEUE_RESPONSE_PUB;
429             x_return_status := FND_API.G_RET_STS_ERROR ;
430             FND_MSG_PUB.Count_And_Get
431             (
432                 p_count => x_msg_count,
433                 p_data  => x_msg_data
434             );
435         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
436             ROLLBACK TO DEQUEUE_RESPONSE_PUB;
437             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
438             FND_MSG_PUB.Count_And_Get
439             (
440                 p_count => x_msg_count,
441                 p_data  => x_msg_data
442             );
443 /*        WHEN OTHERS THEN
444             ROLLBACK TO DEQUEUE_RESPONSE_PUB;
445             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
446               IF     FND_MSG_PUB.Check_Msg_Level
447                 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
448             THEN
449                 FND_MSG_PUB.Add_Exc_Msg
450                 (
451                     G_PKG_NAME,
452                     l_api_name
453                 );
454             END IF;
455             FND_MSG_PUB.Count_And_Get
456             (
457                 p_count => x_msg_count,
458                 p_data  => x_msg_data
459             );*/
460     END DEQUEUE_RESPONSE;
461 
462 END IEO_ICSM_AQ_PUB;