DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_TCOP_SCHEDULER_PKG

Source


1 PACKAGE BODY AMS_TCOP_SCHEDULER_PKG AS
2 /* $Header: amsvtcsb.pls 120.0.12010000.2 2008/09/25 05:25:24 amlal ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          AMS_TCOP_SCHEDULER_PKG
7 -- Purpose
8 --
9 -- This package contains all the program units for traffic cop
10 -- Scheduler
11 --
12 -- History
13 --
14 -- NOTE
15 --
16 -- End of Comments
17 -- ===============================================================
18 
19 
20 
21 
22 
23 -- Start of Comments
24 -- Name
25 -- Enqueue
26 --
27 -- Purpose
28 -- This procedure adds a request to the Traffic Cop Processing Queue
29 --
30 PROCEDURE Enqueue(
31           p_schedule_id NUMBER,
32 	  p_item_type   VARCHAR2,
33 	  p_item_id     VARCHAR2
34           )
35 IS
36 
37 cursor c_get_seq
38 is
39 select
40 AMS_TCOP_REQUESTS_S.nextval
41 from dual;
42 
43 l_request_id number;
44 BEGIN
45 
46    -- Get the sequence value
47    open c_get_seq;
48    fetch c_get_seq into l_request_id;
49    close c_get_seq;
50 
51    -- Insert the request with the request_status= 'NEW'
52    INSERT INTO AMS_TCOP_REQUESTS
53    (
54    REQUEST_ID,
55    SCHEDULE_ID,
56    REQUEST_DATE,
57    STATUS,
58    COMPLETION_DATE,
59    WF_ITEM_TYPE,
60    WF_ITEM_ID,
61    CREATION_DATE,
62    CREATED_BY,
63    LAST_UPDATE_DATE,
64    LAST_UPDATED_BY,
65    LAST_UPDATE_LOGIN,
66    SECURITY_GROUP_ID
67    )
68    VALUES
69    (
70    l_request_id,
71    p_schedule_id,
72    sysdate,
73    'NEW',
74    null,
75    p_item_type,
76    p_item_id,
77    sysdate,
78    FND_GLOBAL.USER_ID,
79    sysdate,
80    FND_GLOBAL.USER_ID,
81    FND_GLOBAL.USER_ID,
82    null
83    );
84 
85 
86 END Enqueue;
87 
88 
89 FUNCTION 	Is_This_Schedule_Ready_To_Run(
90           	 p_schedule_id NUMBER
91           	)
92 RETURN VARCHAR2
93 IS
94    CURSOR C_GET_REQ_STATUS (p_schedule_id NUMBER)
95    IS
96    SELECT STATUS
97    FROM AMS_TCOP_REQUESTS
98    WHERE SCHEDULE_ID = p_schedule_id;
99 
100    l_status	VARCHAR2(30);
101 
102 BEGIN
103 
104    OPEN C_GET_REQ_STATUS(p_schedule_id);
105    FETCH C_GET_REQ_STATUS INTO l_status;
106    CLOSE C_GET_REQ_STATUS;
107 
108    IF (l_status = 'SCHEDULED') THEN
109       RETURN 'Y';
110    ELSE
111       RETURN 'N';
112    END IF;
113 
114 END Is_This_Schedule_Ready_To_Run;
115 
116 PROCEDURE DEQUEUE (errbuf     OUT   NOCOPY   VARCHAR2,
117                    retcode    OUT   NOCOPY   NUMBER
118                   )
119 IS
120 
121    CURSOR C_GET_QUEUED_REQUESTS
122    IS
123    SELECT TCOP.WF_ITEM_TYPE WF_ITEM_TYPE,
124           TCOP.WF_ITEM_ID WF_ITEM_ID,
125           TCOP.SCHEDULE_ID SCHEDULE_ID
126    FROM   AMS_TCOP_REQUESTS TCOP,WF_ITEMS WF
127    WHERE TCOP.STATUS='NEW'
128    and TCOP.WF_ITEM_ID=WF.ITEM_KEY
129    ORDER BY TCOP.REQUEST_DATE; --first come,first serve
130 
131 
132 
133 BEGIN
134    AMS_Utility_PVT.Write_Conc_Log('AMS_TCOP_SCHEDULER_PKG.DEQUEUE ==> Entered DEQUEUE');
135 
136    FOR C1 IN C_GET_QUEUED_REQUESTS
137    LOOP
138       UPDATE_STATUS(C1.SCHEDULE_ID,'SCHEDULED');
139       AMS_Utility_PVT.Write_Conc_Log('========= ' || C1.SCHEDULE_ID || ' =========');
140       AMS_Utility_PVT.Write_Conc_Log('AMS_TCOP_SCHEDULER_PKG.DEQUEUE ==> Starting to apply Fatigue Rules for Schedule Id = ' || C1.SCHEDULE_ID);
141       WF_ENGINE.COMPLETEACTIVITY(C1.WF_ITEM_TYPE,
142                                  C1.WF_ITEM_ID,
143                                  'AMS_TRAFFIC_COP:BLOCK1',
144                                  wf_engine.eng_null);
145       AMS_Utility_PVT.Write_Conc_Log('AMS_TCOP_SCHEDULER_PKG.DEQUEUE ==> Before Commiting Fatigue Rules for Schedule Id = ' || C1.SCHEDULE_ID);
146       commit;
147       AMS_Utility_PVT.Write_Conc_Log('AMS_TCOP_SCHEDULER_PKG.DEQUEUE ==> After Commiting Fatigue Rules for Schedule Id = ' || C1.SCHEDULE_ID);
148       AMS_Utility_PVT.Write_Conc_Log('========= ' || C1.SCHEDULE_ID || ' =========');
149 
150    END LOOP;
151 
152    AMS_Utility_PVT.Write_Conc_Log('AMS_TCOP_SCHEDULER_PKG.DEQUEUE ==> Exiting DEQUEUE');
153 
154 
155 END DEQUEUE;
156 
157 PROCEDURE      UPDATE_STATUS(p_schedule_id   NUMBER,
158                              p_status        VARCHAR2
159                             )
160 IS
161 BEGIN
162 
163    UPDATE AMS_TCOP_REQUESTS
164    SET    STATUS = p_status
165    WHERE  schedule_id=p_schedule_id;
166 
167 END UPDATE_STATUS;
168 
169 END AMS_TCOP_SCHEDULER_PKG;