DBA Data[Home] [Help]

PACKAGE BODY: APPS.OAM_GCS

Source


1 PACKAGE BODY oam_gcs AS
2 /* $Header: afamgcsb.pls 120.1 2005/07/02 03:56:19 appldev noship $ */
3 /*
4 PROCEDURE REGISTER_OAMGCS_FCQ
5 
6 		Procedure to register a service instance
7 
8 PARAMETERS
9 
10 node		Node name to use as service instance
11 rti_dir         the  custom directory location  for RTI
12 Oracle_home	Value of ORACLE_HOME for the node specified
13 Interval	Interval of periodical uploading
14 */
15 
16 
17 PROCEDURE register_oamgcs_fcq(node IN varchar2,Oracle_home IN varchar2 DEFAULT null,rti_dir IN varchar2 DEFAULT null, interval IN number DEFAULT 300000)
18 is
19 	mgr_name varchar2(36);
20 	name  varchar2(256);
21 	svcparams varchar2(1024);
22 	error_message VARCHAR2(1024);
23 	rti_dir_path VARCHAR2(512);
24 	qcount	 number;
25 	ncount   number;
26 	dummy    number;
27 BEGIN
28 	mgr_name := 'OAMGCS_' || UPPER(node);
29 	IF (rti_dir=null) THEN
30 		rti_dir_path:=Oracle_home;
31 	ELSE
32 		rti_dir_path:=rti_dir;
33 	END IF;
34 	svcparams := 'NODE=' || UPPER(node) ||';LOADINTERVAL=' ||TO_CHAR(interval) ||';RTI_KEEP_DAYS=1;FRD_KEEP_DAYS=7';
35 
36 	IF (Oracle_home is not null) THEN
37 		svcparams := svcparams||';ORACLE_HOME='|| Oracle_home;
38 	END IF;
39 	IF (rti_dir_path is not null) THEN
40 		svcparams := svcparams||';FORMS60_RTI_DIR='|| rti_dir_path;
41 	END IF;
42 
43 	IF lengthb(mgr_name) > 30 THEN
44 		mgr_name := substrb(mgr_name,1,30);
45 	END IF;
46 
47     SELECT count(*)
48 	INTO qcount
49 	FROM fnd_concurrent_queues
50 	WHERE UPPER(node_name) =UPPER(node)
51 	 AND TO_NUMBER(manager_type) = (select service_id
52 		FROM fnd_cp_services where service_handle='OAMGCS');
53 
54         IF (qcount = 0) THEN
55 	        SELECT count(*)
56 		INTO ncount
57 		FROM fnd_concurrent_queues
58 		WHERE concurrent_queue_name = mgr_name;
59 
60 		IF (ncount <> 0) THEN
61 			SELECT fnd_concurrent_queues_s.nextval
62 			INTO dummy
63 			FROM dual;
64 
65 			mgr_name := substrb('OAMGCS_'||dummy||'_'||UPPER(node),
66 						1, 30);
67 		END IF;
68 
69   	        name := fnd_message.get_string('FND', 'CONC-OAMGCS NAME');
70 
71 		IF(name = 'CONC-OAMGCS NAME') THEN
72 			name := 'OAM Generic Collection Service';
73 		END IF;
74 
75 		DELETE FROM fnd_concurrent_queues_tl
76 		WHERE concurrent_queue_name = mgr_name;
77 
78 		BEGIN
79   			IF NOT fnd_manager.Manager_exists(mgr_name,'FND') THEN
80 			  fnd_manager.register_si(manager=>name || ':' ||UPPER(node),
81 					application=>'FND',
82 					short_name=>mgr_name,
83 					service_handle=>'OAMGCS',
84 					PRIMARY_NODE=>UPPER(node));
85 			END IF;
86                 /* Bug 2557014: use work_shift_id parameter insted of
87                    workshift_name parameter to ensure Standard workshift
88                    is found in NLS instances */
89   			IF NOT fnd_manager.manager_work_shift_exists(mgr_name,'FND','Standard') THEN
90      			       fnd_manager.assign_work_shift(manager_short_name=>mgr_name,
91                 	       manager_application=>'FND',
92                 	       work_shift_id => 0,
93                 	       processes=>1,
94 			       sleep_seconds=>30,
95 	                       svc_params=>svcparams);
96 			END IF;
97 	    	END;
98 	END IF;
99 	EXCEPTION when others THEN
100 		IF (SQLCODE=100) THEN
101 			error_message:='Concurrent Manager not found to update OAM GCS';
102 		END IF;
103 		IF (SQLCODE=-6502) THEN
104 			error_message:='The Service Parameter length is more than 1024';
105 		END IF;
106 		IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
107 			FND_MESSAGE.SET_NAME('FND','FND_OAMGCS_REGISTER_ERR');
108 			FND_MESSAGE.SET_TOKEN('MSG', error_message);
109 			FND_LOG.MESSAGE (FND_LOG.LEVEL_ERROR,'FND.PLSQL.AFAMGCSB.OAM_GCS.REGISTER_OAMGCS_FCQ',TRUE);
110 		END IF;
111 END register_oamgcs_fcq;
112 
113 /*
114 
115 PROCEDURE UPDATE_GCS
116 
117 		Procedure to update a service instance
118 
119 PARAMETERS
120 
121 node		node name to use as service instance
122 
123 Oracle_home	Value of ORACLE_HOME for the node specified
124 
125 Interval
126 
127 */
128 
129 PROCEDURE update_gcs(node IN varchar2,Oracle_home IN varchar2 DEFAULT null, rti_dir IN varchar2 DEFAULT null,interval IN number DEFAULT 300000)
130 IS
131 	mgr_name VARCHAR2(36);
132 	svcparams VARCHAR2(1024);
133 	queue_id NUMBER(15);
134 	error_message VARCHAR2(10);
135 	rti_dir_path VARCHAR2(1024);
136 BEGIN
137 	IF (rti_dir=null) THEN
138 		rti_dir_path:=Oracle_home;
139 	ELSE
140 		rti_dir_path:=rti_dir;
141 	END IF;
142 
143 	svcparams := 'NODE=' || UPPER(node) ||';LOADINTERVAL=' ||TO_CHAR(interval) ||';RTI_KEEP_DAYS=1;FRD_KEEP_DAYS=7';
144 
145 	IF (Oracle_home is not null) THEN
146 		svcparams := svcparams||';ORACLE_HOME='|| Oracle_home;
147 	END IF;
148 	IF (rti_dir_path is not null) THEN
149 		svcparams := svcparams||';FORMS60_RTI_DIR='|| rti_dir_path;
150 	END IF;
151 
152 	/* Getting the specific service instance queue_id*/
153 	mgr_name := 'OAMGCS_%' || UPPER(node);
154 
155 	IF lengthb(mgr_name) > 30 THEN
156 		mgr_name := substrb(mgr_name,1,30);
157 	END IF;
158 
159 	SELECT concurrent_queue_id INTO queue_id
160 		FROM  fnd_concurrent_queues
161 			WHERE application_id=0 AND concurrent_queue_name LIKE mgr_name;
162 
163 	/* Update the workshift for this queue_id with new svc_params */
164 
165 	UPDATE fnd_concurrent_queue_size
166 		SET   service_parameters = svcparams
167 			WHERE concurrent_queue_id = queue_id AND queue_application_id = 0;
168 
169 	EXCEPTION when others THEN
170 		error_message:='Some unexpected error occured';
171 		IF (SQLCODE=100) THEN
172 			error_message:='Concurrent Manager not found to update OAM GCS';
173 		END IF;
174 		IF (SQLCODE=-6502) THEN
175 		  	error_message:='The Service Parameter lenght is more than 1024';
176 		END IF;
177 		IF( FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
178 			FND_MESSAGE.SET_NAME('FND','FND_OAMGCS_UPDATE_ERR');
179 			FND_MESSAGE.SET_TOKEN('MSG', error_message);
180 			FND_LOG.MESSAGE (FND_LOG.LEVEL_ERROR,'FND.PLSQL.AFAMGCSB.OAM_GCS.UPDATE_OAMGCS',TRUE);
181 		END IF;
182 END update_gcs;
183 
184 
185 /*
186 
187 PROCEDURE DELETE_GCS
188 
189 		Procedure to delete a service instance
190 
191 PARAMETERS
192 
193 node		node name to use as service instance
194 
195 
196 */
197 
198 PROCEDURE delete_gcs(node IN varchar2)
199 IS
200 	mgr_name VARCHAR2(36);
201 BEGIN
202 
203 	mgr_name := 'OAMGCS_%' ||UPPER(node);
204 	IF lengthb(mgr_name) > 30 THEN
205 		mgr_name := substrb(mgr_name,1,30);
206 	END IF;
207 
208 	/* Deleting the specific service instance for specific node*/
209 
210 	DELETE FROM  fnd_concurrent_queues
211 			WHERE application_id=0 AND concurrent_queue_name LIKE mgr_name and UPPER(node_name)=upper(node);
212 
213 END delete_gcs;
214 
215 
216 
217 /*
218 
219 FUNCTION SERVICE_EXISTS
220 
221 		Function to verify existance of a service instance
222 
223 PARAMETERS
224 
225 node		ndoe name to verify if it is a service instance.
226 
227 */
228 
229 
230 FUNCTION Service_exists(node IN VARCHAR2)
231 RETURN VARCHAR2 IS
232   instance_count number;
233   mgr_name varchar(36);
234 
235 BEGIN
236 
237 	   mgr_name:='OAMGCS%'||upper(node);
238 	   IF lengthb(mgr_name) > 30 THEN
239 		mgr_name := substrb(mgr_name,1,30);
240 	   END IF;
241 
242 
243 		   SELECT count(concurrent_queue_id) into instance_count
244 		   FROM
245 		   fnd_concurrent_queues where concurrent_queue_name like mgr_name AND
246 		   upper(node_name) = upper(node);
247 
248 	   IF (instance_count>0) THEN
249 	   	return 'TRUE';
250 	   ELSE
251 	   	return 'FALSE';
252 	   END IF;
253 
254 	EXCEPTION when others THEN return 'FALSE';
255 
256 END Service_exists;
257 
258 FUNCTION service_status(node IN VARCHAR2)
259 RETURN NUMBER IS
260  target         number;
261   actual                number;
262   description           varchar2(1024);
263   error_code            number;
264   error_message         varchar2(1024);
265   svc_status            number(1);
266   mgr_name              varchar(36);
267   conc_queue_id         number(15);
268   appl_id               number(15);
269 
270 BEGIN
271            mgr_name:='OAMGCS%'||upper(node);
272            IF lengthb(mgr_name) > 30 THEN
273                 mgr_name := substrb(mgr_name,1,30);
274            END IF;
275 
276 
277 
278 
279             SELECT application_id,concurrent_queue_id INTO appl_id,conc_queue_id                 FROM fnd_concurrent_queues
280                   where  concurrent_queue_name like mgr_name
281                         AND     upper(node_name) = upper(node);
282 
283            FND_OAM.get_svc_inst_status(appl_id,conc_queue_id,target,actual,svc_status,description,error_code,error_message);
284 
285            return svc_status;
286 
287         EXCEPTION when others THEN return 2;
288 
289 END service_status;
290 
291 END oam_gcs;