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