DBA Data[Home] [Help]

PACKAGE BODY: APPS.XNP_ADAPTER_ERROR_U

Source


1 PACKAGE BODY XNP_ADAPTER_ERROR_U AS
2 /*$Header: XNPADERB.pls 120.2 2006/02/13 07:37:49 dputhiye ship $*/
3 PROCEDURE CREATE_MSG  (   XNP$FE_NAME VARCHAR2,
4   XNP$CHANNEL_NAME VARCHAR2,
5   XNP$STATUS_CODE VARCHAR2,
6   XNP$DESCRIPTION VARCHAR2,
7   x_msg_header OUT NOCOPY  XNP_MESSAGE.MSG_HEADER_REC_TYPE,
8   x_msg_text   OUT NOCOPY  VARCHAR2,
9   x_error_code OUT NOCOPY  NUMBER,
10   x_error_message OUT NOCOPY VARCHAR2,
11   p_sender_name IN VARCHAR2 DEFAULT NULL,
12   p_recipient_list IN VARCHAR2 DEFAULT NULL,
13   p_version IN NUMBER DEFAULT 1,
14   p_reference_id IN VARCHAR2 DEFAULT NULL,
15   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
16   p_order_id IN NUMBER DEFAULT NULL,
17   p_wi_instance_id  IN NUMBER DEFAULT NULL,
18   p_fa_instance_id  IN NUMBER  DEFAULT NULL,
19   p_delay  IN NUMBER  DEFAULT NULL,
20   p_interval  IN NUMBER  DEFAULT NULL )  IS
21   e_MISSING_MANDATORY_DATA EXCEPTION ;
22   e_NO_DESTINATION EXCEPTION ;
23   l_xml_body VARCHAR2(32767) ;
24   l_xml_doc  VARCHAR2(32767) ;
25   l_xml_header VARCHAR2(32767) ;
26   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
27 BEGIN
28   x_error_code := 0 ;
29   x_error_message := NULL ;
30   XNP_XML_UTILS.initialize_doc ( ) ;
31 /* construct the message body */
32 /* get the message body */
33   XNP_XML_UTILS.get_document ( l_xml_body ) ;
34 IF (l_xml_body IS NULL) THEN
35   XNP_XML_UTILS.write_element('ADAPTER_ERROR',l_xml_body );
36   XNP_XML_UTILS.get_document( l_xml_body ) ;
37 END IF;
38 /* initialize the XML header variable */
39   XNP_XML_UTILS.initialize_doc ( ) ;
40 /*construct the XML header */
41 /* retreive the next message ID */
42   XNP_MESSAGE.get_sequence ( l_msg_header.message_id ) ;
43   IF (p_reference_id IS NULL) THEN
44     l_msg_header.reference_id := l_msg_header.message_id ;
45   ELSE
46     l_msg_header.reference_id := p_reference_id ;
47   END IF ;
48 /* append header parameters to make header */
49   XNP_XML_UTILS.write_element ( 'MESSAGE_ID',l_msg_header.message_id ) ;
50   XNP_XML_UTILS.write_element ( 'REFERENCE_ID',l_msg_header.reference_id ) ;
51   l_msg_header.opp_reference_id := p_opp_reference_id ;
52   XNP_XML_UTILS.write_element ( 'OPP_REFERENCE_ID',l_msg_header.opp_reference_id ) ;
53   l_msg_header.message_code := 'ADAPTER_ERROR' ;
54   XNP_XML_UTILS.write_element ( 'MESSAGE_CODE',l_msg_header.message_code ) ;
55   l_msg_header.version := p_version ;
56   XNP_XML_UTILS.write_element ( 'VERSION',l_msg_header.version ) ;
57   l_msg_header.creation_date := SYSDATE ;
58   l_msg_header.recipient_name := p_recipient_list ;
59   XNP_XML_UTILS.write_element ( 'CREATION_DATE',l_msg_header.creation_date ) ;
60   l_msg_header.sender_name := p_sender_name ;
61   XNP_XML_UTILS.write_element ( 'SENDER_NAME',l_msg_header.sender_name ) ;
62   XNP_XML_UTILS.write_element ( 'RECIPIENT_NAME',l_msg_header.recipient_name ) ;
63   l_msg_header.direction_indr := 'E' ;
64   l_msg_header.order_id := p_order_id ;
65   l_msg_header.wi_instance_id := p_wi_instance_id ;
66   l_msg_header.fa_instance_id := p_fa_instance_id ;
67   XNP_XML_UTILS.write_element ( 'FE_NAME', XNP$FE_NAME );
68   XNP_XML_UTILS.write_element ( 'CHANNEL_NAME', XNP$CHANNEL_NAME );
69   XNP_XML_UTILS.write_element ( 'STATUS_CODE', XNP$STATUS_CODE );
70   XNP_XML_UTILS.write_element ( 'DESCRIPTION', XNP$DESCRIPTION );
71 /* retreieve the XML header */
72   XNP_XML_UTILS.get_document ( l_xml_header ) ;
73 /* append the XML headerto message */
74   XNP_XML_UTILS.initialize_doc ( ) ;
75   XNP_XML_UTILS.xml_decl ;
76   XNP_XML_UTILS.begin_segment ( 'MESSAGE') ;
77   XNP_XML_UTILS.write_element( 'HEADER', l_xml_header );
78   XNP_XML_UTILS.append ( l_xml_body ) ;
79   XNP_XML_UTILS.end_segment ( 'MESSAGE') ;
80   XNP_XML_UTILS.get_document( l_xml_doc ) ;
81 /* assign the header and msg text to output parameters */
82   x_msg_header := l_msg_header ;
83   x_msg_text := l_xml_doc ;
84 /* handle exceptions */
85   EXCEPTION
86   WHEN e_MISSING_MANDATORY_DATA THEN
87     x_error_code := XNP_ERRORS.G_MISSING_MANDATORY_DATA ;
88   WHEN OTHERS THEN
89     x_error_code := SQLCODE ;
90     x_error_message := 'ADAPTER_ERROR.create_msg()::' || SQLERRM ;
91 END ;
92 PROCEDURE PUBLISH  (   XNP$FE_NAME VARCHAR2,
93   XNP$CHANNEL_NAME VARCHAR2,
94   XNP$STATUS_CODE VARCHAR2,
95   XNP$DESCRIPTION VARCHAR2,
96   x_message_id OUT NOCOPY  NUMBER,
97   x_error_code OUT NOCOPY  NUMBER,
98   x_error_message OUT NOCOPY VARCHAR2,
99   p_consumer_list IN VARCHAR2 DEFAULT NULL,
100   p_sender_name IN VARCHAR2 DEFAULT NULL,
101   p_recipient_list IN VARCHAR2 DEFAULT NULL,
102   p_version IN NUMBER DEFAULT 1,
103   p_reference_id IN VARCHAR2 DEFAULT NULL,
104   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
105   p_order_id IN NUMBER DEFAULT NULL,
106   p_wi_instance_id  IN NUMBER DEFAULT NULL,
107   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
108   e_NO_DESTINATION EXCEPTION ;
109   l_recipient_list VARCHAR2 (2000) ;
110   l_consumer_list VARCHAR2 (4000) ;
111   l_queue_name VARCHAR2 (2000) ;
112   l_msg_header  XNP_MESSAGE.MSG_HEADER_REC_TYPE ;
113   l_msg_text VARCHAR2(32767) ;
114 BEGIN
115   x_error_code := 0 ;
116   x_error_message := NULL ;
117 /* check if the consumer list is NULL */
118   l_consumer_list := p_consumer_list ;
119   IF (l_consumer_list IS NULL) THEN
120     XNP_MESSAGE.GET_SUBSCRIBER_LIST( 'ADAPTER_ERROR', l_consumer_list );
121   END IF;
122   l_recipient_list := p_recipient_list ;
123 l_queue_name := 'XNP_IN_EVT_Q';
124 /* create the XML message */
125   CREATE_MSG (
126     XNP$FE_NAME=>XNP$FE_NAME,
127     XNP$CHANNEL_NAME=>XNP$CHANNEL_NAME,
128     XNP$STATUS_CODE=>XNP$STATUS_CODE,
129     XNP$DESCRIPTION=>XNP$DESCRIPTION,
130     x_msg_header=>l_msg_header,
131     x_msg_text=>l_msg_text,
132     x_error_code=>x_error_code,
133     x_error_message=>x_error_message,
134     p_sender_name=>p_sender_name,
135     p_recipient_list=>l_recipient_list,
136     p_version=>p_version,
137     p_reference_id=>p_reference_id,
138     p_opp_reference_id=>p_opp_reference_id,
139     p_order_id=>p_order_id,
140     p_wi_instance_id=>p_wi_instance_id,
141     p_fa_instance_id=>p_fa_instance_id ) ;
142   x_message_id := l_msg_header.message_id ;
143 /* enqueue the XML message for delivery */
144   IF (x_error_code = 0) THEN
145     XNP_MESSAGE.push (
146       p_msg_header => l_msg_header,
147       p_body_text => l_msg_text,
148       p_queue_name => xnp_event.c_internal_evt_q,
149       p_correlation_id => 'MSG_SERVER',
150       p_priority=>'2',
151       p_commit_mode => XNP_MESSAGE.C_ON_COMMIT );
152     IF (l_consumer_list IS NOT NULL) THEN
153       XNP_MESSAGE.GET_SEQUENCE(l_msg_header.message_id) ;
154       XNP_MESSAGE.push (
155         p_msg_header => l_msg_header,
156         p_body_text => l_msg_text,
157       p_queue_name => xnp_event.c_outbound_msg_q,
158         p_recipient_list => l_consumer_list,
159         p_correlation_id => TO_CHAR(x_message_id),
160         p_priority=>'2' ) ;
161     END IF ;
162 /* out processing logic */
163 NULL;
164   END IF ;
165 EXCEPTION
166   WHEN e_NO_DESTINATION THEN
167     x_error_code := XNP_ERRORS.G_NO_DESTINATION ;
168   WHEN OTHERS THEN
169     x_error_code := SQLCODE ;
170     x_error_message := SQLERRM ;
171 END ;
172 PROCEDURE SEND  (   XNP$FE_NAME VARCHAR2,
173   XNP$CHANNEL_NAME VARCHAR2,
174   XNP$STATUS_CODE VARCHAR2,
175   XNP$DESCRIPTION VARCHAR2,
176   x_message_id OUT NOCOPY  NUMBER,
177   x_error_code OUT NOCOPY  NUMBER,
178   x_error_message OUT NOCOPY VARCHAR2,
179   p_consumer_name  IN VARCHAR2,
180   p_sender_name  IN VARCHAR2 DEFAULT NULL,
181   p_recipient_name  IN VARCHAR2 DEFAULT NULL,
182   p_version  IN NUMBER DEFAULT 1,
183   p_reference_id IN VARCHAR2 DEFAULT NULL,
184   p_opp_reference_id IN VARCHAR2 DEFAULT NULL,
185   p_order_id IN NUMBER DEFAULT NULL,
186   p_wi_instance_id  IN NUMBER DEFAULT NULL,
187   p_fa_instance_id  IN NUMBER  DEFAULT NULL )  IS
188 l_recipient_name  VARCHAR2(80);
189 BEGIN
190   x_error_code := 0;
191   x_error_message := NULL ;
192   l_recipient_name := p_recipient_name ;
193   IF (l_recipient_name IS NULL) THEN
194     l_recipient_name := p_consumer_name ;
195   END IF;
196   PUBLISH (
197     XNP$FE_NAME=>XNP$FE_NAME,
198     XNP$CHANNEL_NAME=>XNP$CHANNEL_NAME,
199     XNP$STATUS_CODE=>XNP$STATUS_CODE,
200     XNP$DESCRIPTION=>XNP$DESCRIPTION,
201     x_message_id=>x_message_id,
202     x_error_code=>x_error_code,
203     x_error_message=>x_error_message,
204     p_consumer_list=>p_consumer_name,
205     p_sender_name=>p_sender_name,
206     p_recipient_list=>l_recipient_name,
207     p_version=>p_version,
208     p_reference_id=>p_reference_id,
209     p_opp_reference_id=>p_opp_reference_id,
210     p_order_id=>p_order_id,
211     p_wi_instance_id=>p_wi_instance_id,
212     p_fa_instance_id=>p_fa_instance_id ) ;
213 END ;
214 PROCEDURE PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
215   p_msg_text IN VARCHAR2,
216   x_error_code OUT NOCOPY  NUMBER,
217   x_error_message  OUT NOCOPY VARCHAR2,
218   p_process_reference IN VARCHAR2 DEFAULT NULL ) IS
219 BEGIN
220 NULL ;
221 NULL;
222 END ;
223 PROCEDURE VALIDATE (    p_msg_header IN OUT NOCOPY XNP_MESSAGE.MSG_HEADER_REC_TYPE,
224   p_msg_text IN VARCHAR2,
225   x_error_code OUT NOCOPY  NUMBER,
226   x_error_message  OUT NOCOPY VARCHAR2 )  IS
227 BEGIN
228 NULL ;
229 NULL;
230 END ;
231 PROCEDURE DEFAULT_PROCESS (    p_msg_header IN XNP_MESSAGE.MSG_HEADER_REC_TYPE,
232   p_msg_text IN VARCHAR2,
233   x_error_code OUT NOCOPY  NUMBER,
234   x_error_message  OUT NOCOPY VARCHAR2 )  IS
235 BEGIN
236 NULL ;
237 DECLARE
238 	l_error_code NUMBER;
239 	l_error_message VARCHAR2(3000) ;
240 BEGIN
241 	xnp_adapter.notify_fmc(p_msg_header,
242 		p_msg_text,
243 		l_error_code,
244 		l_error_message
245 	) ;
246 END ;
247 END ;
248 END XNP_ADAPTER_ERROR_U;