1 PACKAGE XNP_MESSAGE AUTHID CURRENT_USER AS
2 /* $Header: XNPMSGPS.pls 120.1.12010000.2 2008/09/25 05:18:29 mpathani ship $ */
3
4 -- Record type for message header
5 TYPE Msg_Header_Rec_Type IS RECORD
6 (
7 message_id NUMBER ,
8 message_code VARCHAR2(20),
9 reference_id VARCHAR2(1024),
10 opp_reference_id VARCHAR2(40),
11 creation_date DATE,
12 sender_name VARCHAR2(300), -- increased the size from 40 to 300 for 6880763
13 recipient_name VARCHAR2(40),
14 version NUMBER ,
15 direction_indr VARCHAR2(1),
16 order_id NUMBER,
17 wi_instance_id NUMBER,
18 fa_instance_id NUMBER
19 ) ;
20
21
22 -- Timeout variable for dequeing a message from the queue. Used by POP()
23 -- and has a intialized value of one second.
24 --
25 pop_timeout INTEGER := 1 ;
26 current_version NUMBER := 1 ;
27 -- Constant visible on commit to the dequeue process
28 C_ON_COMMIT CONSTANT NUMBER := 1 ;
29 -- Constant visible immediate to the dequeue process
30 C_IMMEDIATE CONSTANT NUMBER := 2 ;
31
32 --
33 -- pre and suffixes that are used to generate user defined packages for
34 -- sending, publish messages.
35 -- used by XNPMSGP, XNPSTAC, XNPMBLP packages
36 -- By Anping Wang, bug refer. 1650015
37 -- 02/19/2001
38 g_pkg_prefix CONSTANT VARCHAR2(80) := 'XNP_' ;
39 g_pkg_suffix CONSTANT VARCHAR2(80) := '_U' ;
40
41 -- Define Exceptions
42 stop_processing exception;
43
44 --
45 -- Retrieves a comma separated subscriber list for the message
46 --
47 PROCEDURE get_subscriber_list
48 (
49 p_msg_code IN VARCHAR2
50 ,x_subscriber_list OUT NOCOPY VARCHAR2
51 );
52
53 -- Retrieves a message for the specified message ID
54 --
55 PROCEDURE get
56 (
57 p_msg_id IN NUMBER
58 ,x_msg_text OUT NOCOPY VARCHAR2
59 );
60
61 -- Retrieves a message and the header for the specified message ID
62 -- Overloaded.
63 -- adabholk 03/2001
64 -- performance fix
65
66 PROCEDURE get
67 (
68 p_msg_id IN NUMBER
69 ,x_msg_header OUT NOCOPY MSG_HEADER_REC_TYPE
70 ,x_msg_text OUT NOCOPY VARCHAR2
71 );
72
73 -- Notifies message processing failures of the event manager to FMC
74 --
75 PROCEDURE notify_fmc
76 (
77 p_msg_id in NUMBER
78 ,p_error_desc IN VARCHAR2
79 ) ;
80
81 -- Retrieves the header for a message, given the message ID
82 --
83 PROCEDURE get_header
84 (
85 p_msg_id IN NUMBER
86 ,x_msg_header OUT NOCOPY msg_header_rec_type
87 );
88
89 --
90 --
91 -- Wrapper procedure for executing the processing logic
92 -- of a message.
93 --
94 PROCEDURE process
95 (
96 p_msg_header IN msg_header_rec_type
97 ,p_msg_text IN VARCHAR2
98 ,p_process_reference IN VARCHAR2
99 ,x_error_code OUT NOCOPY NUMBER
100 ,x_error_message OUT NOCOPY VARCHAR2
101 );
102
103 -- Wrapper for executing default processing logic
104 --
105 PROCEDURE default_process
106 (
107 p_msg_header IN msg_header_rec_type
108 ,p_msg_text IN VARCHAR2
109 ,x_error_code OUT NOCOPY NUMBER
110 ,x_error_message OUT NOCOPY VARCHAR2
111 );
112
113 -- Validates a message of type XNP_MESSAGE
114 --
115 PROCEDURE validate
116 (
117 p_msg_header IN OUT NOCOPY msg_header_rec_type
118 ,p_msg_text IN VARCHAR2
119 ,x_error_code OUT NOCOPY NUMBER
120 ,x_error_message OUT NOCOPY VARCHAR2
121 );
122
123 -- Gets the next sequence for the Message
124 --
125 PROCEDURE get_sequence
126 (
127 x_msg_id OUT NOCOPY NUMBER
128 );
129
130 --
131 -- Enqueues a message on the ORACLE Queue. Set the commit mode
132 -- to C_IMMEDIATE if an immediate commit is required.
133 --
134 PROCEDURE push
135 (
136 p_msg_header IN msg_header_rec_type
137 ,p_body_text IN VARCHAR2
138 ,p_queue_name IN VARCHAR2
139 ,p_recipient_list IN VARCHAR2 DEFAULT NULL
140 ,p_correlation_id IN VARCHAR2 DEFAULT NULL
141 ,p_priority IN INTEGER DEFAULT 1
142 ,p_commit_mode IN NUMBER DEFAULT c_on_commit
143 ,p_delay IN NUMBER DEFAULT DBMS_AQ.NO_DELAY
144 ,p_fe_name IN VARCHAR2 DEFAULT NULL
145 ,p_adapter_name IN VARCHAR2 DEFAULT NULL
146 );
147
148 -- overloaded version of PUSH
149 --
150 PROCEDURE push
151 (
152 p_message_id IN NUMBER
153 ,p_message_code IN VARCHAR2
154 ,p_reference_id IN VARCHAR2
155 ,p_opp_reference_id IN VARCHAR2
156 ,p_direction_indr IN VARCHAR2
157 ,p_creation_date IN DATE
158 ,p_sender_name IN VARCHAR2
159 ,p_recipient_name IN VARCHAR2
160 ,p_version OUT NOCOPY VARCHAR2
161 ,p_order_id IN NUMBER
162 ,p_wi_instance_id IN NUMBER
163 ,p_fa_instance_id IN NUMBER
164 ,p_body_text IN VARCHAR2
165 ,p_queue_name IN VARCHAR2
166 ,p_recipient_list IN VARCHAR2 DEFAULT NULL
167 ,p_correlation_id IN VARCHAR2 DEFAULT NULL
168 ,p_priority IN INTEGER DEFAULT 1
169 ,p_commit_mode IN NUMBER DEFAULT c_on_commit
170 );
171
172 -- Overloaded PUSH for Adapters
173 --
174 PROCEDURE push
175 (
176 p_qname IN VARCHAR2
177 ,p_msg_text IN VARCHAR2
178 ,p_fe_name IN VARCHAR2
179 ,p_adapter_name IN VARCHAR2
180 ,x_error_code OUT NOCOPY NUMBER
181 ,x_error_message OUT NOCOPY VARCHAR2
182 ,p_commit_mode IN NUMBER DEFAULT C_IMMEDIATE
183 ) ;
184
185 -- Overloaded PUSH for Adapters that returns message id
186 --
187 PROCEDURE push
188 (
189 P_QNAME IN VARCHAR2
190 ,P_MSG_TEXT IN VARCHAR2
191 ,P_FE_NAME IN VARCHAR2
192 ,P_ADAPTER_NAME IN VARCHAR2
193 ,X_MSG_ID OUT NOCOPY NUMBER
194 ,X_ERROR_CODE OUT NOCOPY NUMBER
195 ,X_ERROR_MESSAGE OUT NOCOPY VARCHAR2
196 ,p_commit_mode IN NUMBER DEFAULT C_IMMEDIATE
197 );
198
199 -- Dequeues a message from the ORACLE Queue.
200 --
201 PROCEDURE pop
202 (
203 p_queue_name IN VARCHAR2
204 ,x_msg_header OUT NOCOPY msg_header_rec_type
205 ,x_body_text OUT NOCOPY VARCHAR2
206 ,x_error_code OUT NOCOPY NUMBER
207 ,x_error_message OUT NOCOPY VARCHAR2
208 ,p_consumer_name IN VARCHAR2 DEFAULT NULL
209 ,p_correlation_id IN VARCHAR2 DEFAULT NULL
210 ,p_commit_mode IN NUMBER DEFAULT c_on_commit
211 ,p_msg_id IN RAW DEFAULT NULL
212 ) ;
213
214 -- Overloaded POP()
215 --
216 PROCEDURE pop
217 (
218 p_queue_name IN VARCHAR2
219 ,x_message_id OUT NOCOPY NUMBER
220 ,x_message_code OUT NOCOPY VARCHAR2
221 ,x_reference_id OUT NOCOPY VARCHAR2
222 ,x_opp_reference_id OUT NOCOPY VARCHAR2
223 ,x_body_text OUT NOCOPY VARCHAR2
224 ,x_creation_date OUT NOCOPY DATE
225 ,x_sender_name OUT NOCOPY VARCHAR2
226 ,x_recipient_name OUT NOCOPY VARCHAR2
227 ,x_version OUT NOCOPY VARCHAR2
228 ,x_order_id OUT NOCOPY NUMBER
229 ,x_wi_instance_id OUT NOCOPY NUMBER
230 ,x_fa_instance_id OUT NOCOPY NUMBER
231 ,x_error_code OUT NOCOPY NUMBER
232 ,x_error_message OUT NOCOPY VARCHAR2
233 ,p_consumer_name IN VARCHAR2 DEFAULT NULL
234 ,p_correlation_id IN VARCHAR2 DEFAULT NULL
235 ) ;
236
237 -- Overloaded POP()
238 --
239 PROCEDURE pop
240 (
241 p_queue_name IN VARCHAR2
242 ,p_consumer_name IN VARCHAR2
243 ,x_msg_text OUT NOCOPY VARCHAR2
244 ,x_error_code OUT NOCOPY NUMBER
245 ,x_error_msg OUT NOCOPY VARCHAR2
246 ,p_timeout IN NUMBER DEFAULT 1
247 ) ;
248
249 -- Updates the status of the message given the ID.
250 -- Messages can either be in a READY or PROCESSES state
251 --
252 PROCEDURE update_status
253 (
254 p_msg_id IN NUMBER
255 ,p_status IN VARCHAR2
256 ,p_error_desc IN VARCHAR2 DEFAULT NULL
257 ,p_order_id IN NUMBER DEFAULT NULL
258 ,p_wi_instance_id IN NUMBER DEFAULT NULL
259 ,p_fa_instance_id IN NUMBER DEFAULT NULL
260 ) ;
261
262 -- Gets the status of the message given the ID
263 --
264 PROCEDURE get_status
265 (
266 p_msg_id IN NUMBER
267 ,x_status OUT NOCOPY VARCHAR2
268 ) ;
269
270 --
271 --Inserts 'XNP_MESSAGE' and the new message as two additional elements
272 --into XNP_MSG_ELEMENTS table.
273 --
274 PROCEDURE xnp_mte_insert_element
275 (
276 p_msg_code IN VARCHAR2
277 ,p_msg_type IN VARCHAR2
278 );
279
280 --
281 --Resets the message status to 'READY' and enqueues the message
282 --into the inbound queue for processing.
283 --
284 PROCEDURE fix
285 (
286 p_msg_id IN NUMBER
287 );
288
289 -- Deletes the message from the System.
290 -- Ensures there is no runtime data in XNP_MSGS, XNP_TIMER_REGISTRY
291 -- and XNP_CALLBACK_EVENTS
292 --
293 PROCEDURE delete
294 (
295 p_msg_code IN VARCHAR2
296 ) ;
297
298 -- Enqueues the message and message body on a user defined queue .
299
300 PROCEDURE PUSH_WF(
301 p_msg_header IN msg_header_rec_type
302 ,p_body_text IN VARCHAR2
303 ,p_queue_name IN VARCHAR2
304 ,p_correlation_id IN VARCHAR2 DEFAULT NULL
305 ,p_priority IN INTEGER DEFAULT 1
306 ,p_commit_mode IN NUMBER DEFAULT c_on_commit
307 ,p_delay IN NUMBER DEFAULT DBMS_AQ.NO_DELAY );
308
309
310 END xnp_message;