DBA Data[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;