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