[Home] [Help]
PACKAGE BODY: APPS.CSI_HANDLE_EVENT_PKG
Source
1 PACKAGE BODY CSI_HANDLE_EVENT_PKG AS
2 /* $Header: csitbesb.pls 120.2 2007/11/10 01:00:35 fli noship $ */
3
4 --------------------------------------
5 -- package global variable declaration
6 --------------------------------------
7 G_DEBUG_COUNT NUMBER := 0;
8
9 FUNCTION exist_subscription(p_event_name IN VARCHAR2) RETURN VARCHAR2
10 IS
11 CURSOR cu0 IS
12 SELECT 'Y'
13 FROM wf_events eve,
14 wf_event_subscriptions sub,
15 wf_systems ws
16 WHERE eve.name = p_event_name
17 AND eve.status = 'ENABLED'
18 AND eve.guid = sub.event_filter_guid
19 AND sub.status = 'ENABLED'
20 AND ws.guid = sub.system_guid
21 AND sub.source_type = 'LOCAL';
22
23 l_yn VARCHAR2(1);
24 BEGIN
25 OPEN cu0;
26 FETCH cu0 INTO l_yn;
27 IF cu0%NOTFOUND THEN
28 l_yn := 'N';
29 END IF;
30 CLOSE cu0;
31 RETURN l_yn;
32 END;
33
34 FUNCTION item_key(p_event_name IN VARCHAR2) RETURN VARCHAR2
35 -----------------------------------------------------
36 -- Return Item_Key according to CSI Event to be raised
37 -- Item_Key is <Event_Name>-CSI_WF_ITEM_KEY_NUMBER_S.nextval
38 -----------------------------------------------------
39 IS
40 RetKey VARCHAR2(240);
41 BEGIN
42 SELECT p_event_name || CSI_WF_ITEM_KEY_NUMBER_S.nextval
43 INTO RetKey
44 FROM DUAL;
45 RETURN RetKey;
46 END item_key;
47
48 FUNCTION event(p_event_name IN VARCHAR2) RETURN VARCHAR2
49 -----------------------------------------------
50 -- Return event name if the entered event exist
51 -- Otherwise return NOTFOUND
52 -----------------------------------------------
53 IS
54 RetEvent VARCHAR2(240);
55 BEGIN
56 SELECT name
57 INTO RetEvent
58 FROM wf_events
59 WHERE name = p_event_name;
60
61 IF SQL%NOTFOUND THEN
62 RetEvent := 'NOTFOUND';
63 END IF;
64 RETURN RetEvent;
65 END event;
66
67 PROCEDURE raise_event
68 ----------------------------------------------
69 -- Check if Event exist
70 -- Check if Event is like 'oracle.apps.csi%'
71 -- Get the item_key
72 -- Raise event
73 ----------------------------------------------
74 (p_api_version IN NUMBER
75 ,p_commit IN VARCHAR2
76 ,p_init_msg_list IN VARCHAR2
77 ,p_validation_level IN NUMBER
78 ,p_event_name IN VARCHAR2
79 ,p_event_key IN VARCHAR2
80 ,p_instance_id IN NUMBER
81 ,p_subject_instance_Id IN NUMBER
82 ,p_correlation_value IN VARCHAR2
83 )
84 IS
85 l_item_key VARCHAR2(240);
86 l_event VARCHAR2(240);
87 EventNotFound EXCEPTION;
88 EventNotCSI EXCEPTION;
89 l_debug_level NUMBER;
90 l_parameter_list wf_parameter_list_t := wf_parameter_list_t();
91 BEGIN
92 SAVEPOINT csi_raise_event;
93
94 l_debug_level := fnd_profile.value('CSI_DEBUG_LEVEL');
95
96 IF (l_debug_level > 0) THEN
97 csi_gen_utility_pvt.put_line
98 ( 'CSI_HANDLE_EVENT_PKG' ||'-'||
99 p_api_version ||'-'||
100 nvl(p_commit,FND_API.G_FALSE) ||'-'||
101 nvl(p_init_msg_list,FND_API.G_FALSE) ||'-'||
102 nvl(p_validation_level,FND_API.G_VALID_LEVEL_FULL) );
103 END IF;
104
105 l_event := event(p_event_name);
106
107 IF l_event = 'NOTFOUND' THEN
108 RAISE EventNotFound;
109 END IF;
110
111 IF SUBSTR(l_event,1,16) <> 'oracle.apps.csi.' THEN
112 RAISE EventNotCSI;
113 END IF;
114
115 wf_event.AddParameterToList(p_name => 'CUSTOMER_PRODUCT_ID'
116 ,p_value => p_instance_id
117 ,p_parameterlist => l_parameter_list);
118
119 wf_event.AddParameterToList(p_name => 'CHILD_CUSTOMER_PRODUCT_ID'
120 ,p_value => p_subject_instance_id
121 ,p_parameterlist => l_parameter_list);
122
123 wf_event.AddParameterToList(p_name => 'Q_CORRELATION_ID'
124 ,p_value => p_correlation_value
125 ,p_parameterlist => l_parameter_list);
126
127 Wf_Event.Raise
128 (p_event_name => l_event,
129 p_event_key => p_event_key,
130 p_parameters => l_parameter_list);
131
132 IF (l_debug_level > 1) THEN
133 csi_gen_utility_pvt.put_line('Raise Business Event');
134 csi_gen_utility_pvt.put_line(' Event Name : '||l_event);
135 csi_gen_utility_pvt.put_line(' Event Key : '||p_event_key);
136 csi_gen_utility_pvt.put_line(' Customer Product Id : '||p_instance_id);
137 csi_gen_utility_pvt.put_line(' Child Customer Product Id : '||p_subject_instance_id);
138 csi_gen_utility_pvt.put_line(' Q Correlation Id : '||p_correlation_value);
139 END IF;
140
141 EXCEPTION
142 WHEN EventNotFound THEN
143 FND_MESSAGE.SET_NAME('CSI','CSI_EVENT_NOT_FOUND');
144 FND_MESSAGE.SET_TOKEN('EVENT',p_event_name);
145 FND_MSG_PUB.Add;
146 RAISE FND_API.G_EXC_ERROR;
147 WHEN EventNotCSI THEN
148 FND_MESSAGE.SET_NAME('CSI','CSI_EVENT_NOT_CSI');
149 FND_MESSAGE.SET_TOKEN('EVENT',p_event_name);
150 FND_MSG_PUB.Add;
151 RAISE FND_API.G_EXC_ERROR;
152 WHEN NO_DATA_FOUND THEN
153 CSI_GEN_UTILITY_PVT.Put_Line('NO_DATA_FOUND ... Rollback to CSI_RAISE_EVENT');
154 ROLLBACK TO csi_raise_event;
155 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
156 WHEN OTHERS THEN
157 CSI_GEN_UTILITY_PVT.Put_Line('WHEN OTHERS ... Rollback to CSI_RAISE_EVENT');
158 ROLLBACK TO csi_raise_event;
159 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
160 END raise_event;
161 END;