[Home] [Help]
PACKAGE BODY: APPS.AD_CONC_UTILS_PKG
Source
1 PACKAGE BODY AD_CONC_UTILS_PKG AS
2 -- $Header: adcmutlb.pls 115.0 2004/06/24 23:28:27 athies noship $
3
4 PROCEDURE submit_subrequests(
5 X_errbuf out nocopy varchar2,
6 X_retcode out nocopy varchar2,
7 X_WorkerConc_app_shortname in varchar2,
8 X_WorkerConc_progname in varchar2,
9 X_Batch_Size in number,
10 X_Num_Workers in number,
11 X_Argument4 in varchar2 default null,
12 X_Argument5 in varchar2 default null,
13 X_Argument6 in varchar2 default null,
14 X_Argument7 in varchar2 default null,
15 X_Argument8 in varchar2 default null,
16 X_Argument9 in varchar2 default null,
17 X_Argument10 in varchar2 default null)
18 is
19 L_errbuf varchar2(2000);
20 L_retcode varchar2(1000);
21 begin
22
23 --
24 -- this section is coded as dynamic SQL to avoid build and packaging
25 -- dependencies on AOL code.
26
27 EXECUTE IMMEDIATE
28 ' declare '||
29 ' req_status number; '||
30 ' req_data varchar2(10); '||
31 ' strt_wrkr number; '||
32 ' submit_req boolean; '||
33 ' l_batch_size number := :X_Batch_Size; '||
34 ' l_num_workers number := :X_Num_Workers; '||
35 ' L_SUB_REQTAB fnd_concurrent.requests_tab_type; '||
36 ''||
37 ' begin '||
38 ''||
39 ' if (nvl(fnd_global.conc_request_id, -1) < 0) then '||
40 ' raise_application_error(-20001, '||
41 '''SUBMIT_SUBREQUESTS() must be called from a concurrent request'');'||
42 ' end if; '||
43 ''||
44 ' req_data := fnd_conc_global.request_data; '||
45 ''||
46 ' if (req_data is null) then '||
47 ' submit_req := TRUE; '||
48 ' else '||
49 ' submit_req := FALSE; '||
50 ' end if; '||
51 ''||
52 ' if (submit_req = TRUE) then '||
53 ''||
54 ' FOR i in 1..l_num_workers LOOP '||
55 ''||
56 ' req_status := fnd_request.submit_request( '||
57 ' APPLICATION=>:X_WorkerConc_app_shortname, '||
58 ' PROGRAM=>:X_WorkerConc_app_progname, '||
59 ' DESCRIPTION=>'||
60 ' ''WRKR(''||lpad(i, 2, ''0'')||'')'', '||
61 ' SUB_REQUEST=>TRUE, '||
62 ' ARGUMENT1=>l_batch_size, '||
63 ' ARGUMENT2=>i, '||
64 ' ARGUMENT3=>l_num_workers, '||
65 ' ARGUMENT4=>nvl(:X_argument4, chr(0)), '||
66 ' ARGUMENT5=>nvl(:X_argument5, chr(0)), '||
67 ' ARGUMENT6=>nvl(:X_argument6, chr(0)), '||
68 ' ARGUMENT7=>nvl(:X_argument7, chr(0)), '||
69 ' ARGUMENT8=>nvl(:X_argument8, chr(0)), '||
70 ' ARGUMENT9=>nvl(:X_argument9, chr(0)), '||
71 ' ARGUMENT10=>nvl(:X_argument10, chr(0))); '||
72 ''||
73 ' if (req_status = 0) then '||
74 ''||
75 ' :L_errbuf := fnd_message.get; '||
76 ' :L_retcode := AD_CONC_UTILS_PKG.CONC_FAIL; '||
77 ' return; '||
78 ''||
79 ' end if; '||
80 ''||
81 ' END LOOP; '||
82 ''||
83 ' fnd_conc_global.set_req_globals(conc_status=>''PAUSED'', '||
84 ' request_data=>l_num_workers); '||
85 ''||
86 ' :L_errbuf := ''Submitted sub-requests''; '||
87 ' :L_retcode := 0; '||
88 ' return; '||
89 ''||
90 ' else '||
91 ''||
92 --
93 -- restart case
94 --
95 ''||
96 ' l_sub_reqtab := fnd_concurrent.get_sub_requests( '||
97 ' fnd_global.conc_request_id); '||
98 ''||
99 ' :L_retcode := AD_CONC_UTILS_PKG.CONC_SUCCESS; '||
100 ''||
101 ' for i IN 1..l_sub_reqtab.COUNT() '||
102 ' loop '||
103 ''||
104 ' if (l_sub_reqtab(i).dev_status != ''NORMAL'') then '||
105 ' :L_retcode := AD_CONC_UTILS_PKG.CONC_FAIL; '||
106 ' end if; '||
107 ''||
108 ' end loop; '||
109 ''||
110 ' end if; '||
111 'end;' USING IN X_Batch_Size, X_Num_Workers,
112 X_WorkerConc_app_shortname, X_WorkerConc_progname,
113 X_Argument4, X_Argument5,
114 X_Argument6, X_Argument7,
115 X_Argument8, X_Argument9,
116 X_Argument10,
117 OUT L_errbuf, OUT l_retcode;
118
119 X_errbuf := L_errbuf;
120 X_retcode := L_retcode;
121
122 END submit_subrequests;
123
124 END;