DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_MEE_WORKFLOW_SERVICE

Source


1 PACKAGE BODY hr_mee_workflow_service as
2 /* $Header: hrmeewfw.pkb 120.1 2005/09/23 15:02:35 svittal noship $ */
3 
4   g_package     VARCHAR2(31)   := 'hr_mee_workflow_service.';
5   gv_package     VARCHAR2(31)   := 'hr_mee_workflow_service';
6 --
7 -- ----------------------------------------------------------------------------
8 -- |------------------------< get_activity_name >-----------------------------|
9 -- ----------------------------------------------------------------------------
10 procedure get_activity_name
11   (p_item_type         in      wf_items.item_type%type
12   ,p_item_key          in      wf_items.item_key%type
13   ,p_actid             in      number
14   ,p_activity_name         out nocopy varchar2
15   ,p_activity_display_name out nocopy varchar2) is
16 --
17   cursor l_csr is
18 --BUG 3636429
19     SELECT distinct activity_name,activity_display_name
20     FROM
21      (
22      SELECT a.name activity_name,
23             a.display_name activity_display_name
24      FROM  wf_activities_vl a
25           ,wf_item_activity_statuses ias
26           ,wf_process_activities pa
27      WHERE ias.item_type = p_item_type
28        AND ias.item_key = p_item_key
29        AND ias.process_activity = p_actid
30        AND ias.process_activity = pa.instance_id
31        AND pa.activity_name = a.name
32        AND pa.activity_item_type = a.item_type
33      UNION ALL
34      SELECT a.name activity_name,
35             a.display_name activity_display_name
36      FROM  wf_activities_vl a
37           ,wf_item_activity_statuses_h iash
38           ,wf_process_activities pa
39      WHERE iash.item_type = p_item_type
40        AND iash.item_key = p_item_key
41        AND iash.process_activity = p_actid
42        AND iash.process_activity = pa.instance_id
43        AND pa.activity_name = a.name
44        AND pa.activity_item_type = a.item_type
45      );
46 --
47 begin
48   open l_csr;
49   fetch l_csr into p_activity_name, p_activity_display_name;
50   if l_csr%notfound then
51     p_activity_name := null;
52     p_activity_display_name := null;
53   end if;
54   close l_csr;
55 end get_activity_name;
56 
57 
58 -- ----------------------------------------------------------------------------
59 -- |-------------------------< get_act_attr_expanded_info >------------------|
60 -- ----------------------------------------------------------------------------
61 procedure get_act_attr_expanded_info
62   (p_item_type in       wf_items.item_type%type
63   ,p_item_key  in       wf_items.item_key%type
64   ,p_actid     in       wf_activity_attr_values.process_activity_id%type
65   ,p_name      in       wf_activity_attributes.name%type
66   ,p_exists         out nocopy boolean
67   ,p_subtype        out nocopy wf_activity_attributes.subtype%type
68   ,p_type           out nocopy wf_activity_attributes.type%type
69   ,p_format         out nocopy wf_activity_attributes.format%type
70   ,p_date_value     out nocopy wf_activity_attr_values.date_value%type
71   ,p_number_value   out nocopy wf_activity_attr_values.number_value%type
72   ,p_text_value     out nocopy wf_activity_attr_values.text_value%type) is
73   -- --------------------------------------------------------------------------
74   -- declare local variables
75   -- --------------------------------------------------------------------------
76   l_type           wf_activity_attributes.type%type;
77   l_name           wf_activity_attributes.name%type := upper(p_name);
78   --
79 begin
80   -- initialise the OUT parameters
81   p_exists       := true;
82   p_subtype      := null;
83   p_type         := null;
84   p_format       := null;
85   p_date_value   := null;
86   p_number_value := null;
87   p_text_value   := null;
88   -- get the item attribute information
89   wf_engine.GetActivityAttrInfo
90     (itemtype  => p_item_type
91     ,itemkey   => p_item_key
92     ,actid     => p_actid
93     ,aname     => l_name
94     ,atype     => l_type
95     ,subtype   => p_subtype
96     ,format    => p_format);
97   --
98   p_type := l_type;
99   -- branch on the type
100   if l_type = 'NUMBER' then
101     p_number_value :=
102       wf_engine.GetActivityAttrNumber
103         (itemtype => p_item_type
104         ,itemkey  => p_item_key
105         ,actid    => p_actid
106         ,aname    => l_name);
107   elsif l_type = 'DATE' then
108     p_date_value :=
109       wf_engine.GetActivityAttrDate
110         (itemtype => p_item_type
111         ,itemkey  => p_item_key
112         ,actid    => p_actid
113         ,aname    => l_name);
114   else
115     p_text_value :=
116       wf_engine.GetActivityAttrText
117         (itemtype => p_item_type
118         ,itemkey  => p_item_key
119         ,actid    => p_actid
120         ,aname    => l_name);
121   end if;
122 exception
123   -- an error has occurred because the item attribute does not exists
124   -- reset all of the OUT parameters ensuring
125   when others then
126     p_exists := false;
127     p_subtype      := null;
128     p_type         := null;
129     p_format       := null;
130     p_date_value   := null;
131     p_number_value := null;
132     p_text_value   := null;
133 end get_act_attr_expanded_info;
137 function get_web_page_code
134 -- ----------------------------------------------------------------------------
135 -- |-----------------------------< get_web_page_code >------------------------|
136 -- ----------------------------------------------------------------------------
138   (p_item_type             in wf_items.item_type%type
139   ,p_item_key              in wf_items.item_key%type
140   ,p_actid                 in wf_activity_attr_values.process_activity_id%type
141   ,p_web_page_section_code in wf_activity_attributes.name%type)
142   return varchar2 is
143   --
144   l_exists        boolean;
145   l_subtype       wf_activity_attributes.subtype%type;
146   l_type          wf_activity_attributes.type%type;
147   l_format        wf_activity_attributes.format%type;
148   l_date_value    wf_activity_attr_values.date_value%type;
149   l_number_value  wf_activity_attr_values.number_value%type;
150   l_text_value    wf_activity_attr_values.text_value%type;
151   --
152 begin
153   -- get the p_web_page_section_code activity attribute details
154   get_act_attr_expanded_info
155     (p_item_type     => p_item_type
156     ,p_item_key      => p_item_key
157     ,p_actid         => p_actid
158     ,p_name          => p_web_page_section_code
159     ,p_exists        => l_exists
160     ,p_subtype       => l_subtype
161     ,p_type          => l_type
162     ,p_format        => l_format
163     ,p_date_value    => l_date_value
164     ,p_number_value  => l_number_value
165     ,p_text_value    => l_text_value);
166   --
167   if l_exists then
168     return(l_text_value);
169   else
170     return(NULL);
171   end if;
172 end get_web_page_code;
173 --
174 
175 -- ----------------------------------------------------------------------------
176 -- |-------------------------< check_web_page_code >--------------------------|
177 -- ----------------------------------------------------------------------------
178 function check_web_page_code
179   (p_item_type             in       wf_items.item_type%type
180   ,p_item_key              in       wf_items.item_key%type
181   ,p_actid                 in wf_activity_attr_values.process_activity_id%type
182   ,p_web_page_section_code in wf_activity_attributes.name%type)
183   return boolean is
184   --
185   l_exists        boolean;
186   l_subtype       wf_activity_attributes.subtype%type;
187   l_type          wf_activity_attributes.type%type;
188   l_format        wf_activity_attributes.format%type;
189   l_date_value    wf_activity_attr_values.date_value%type;
190   l_number_value  wf_activity_attr_values.number_value%type;
191   l_text_value    wf_activity_attr_values.text_value%type;
192   --
193 begin
194   -- check to see if the specified p_web_page_section_code activity
195   -- attribute exists
196   get_act_attr_expanded_info
197     (p_item_type     => p_item_type
198     ,p_item_key      => p_item_key
199     ,p_actid         => p_actid
200     ,p_name          => p_web_page_section_code
201     ,p_exists        => l_exists
202     ,p_subtype       => l_subtype
203     ,p_type          => l_type
204     ,p_format        => l_format
205     ,p_date_value    => l_date_value
206     ,p_number_value  => l_number_value
207     ,p_text_value    => l_text_value);
208   --
209   if l_exists and l_text_value is not null then
210     return(TRUE);
211   else
212     return(FALSE);
213   end if;
214 end check_web_page_code;
215 --
216 -- --- Function to return Assignment_id and Effective date
217 PROCEDURE get_assignment_details(
218 	 p_item_type IN wf_items.item_type%type
219    	,p_item_key IN wf_items.item_key%type
220  	,p_assignment_id OUT NOCOPY NUMBER
221 	,p_effective_date OUT NOCOPY DATE)
222 IS
223   l_effective_date date;
224   l_effective_char VARCHAR2(200);
225 BEGIN
226   -- get assignment id from Workflow Item Attributes
227      p_assignment_id := wf_engine.getItemAttrNumber(
228              itemtype  => p_item_type
229             ,itemkey   => p_item_key
230             ,aname     => 'CURRENT_ASSIGNMENT_ID');
231 
232   -- get effective date from Workflow Item Attribute
233      l_effective_date := wf_engine.getItemAttrDate(
234              itemtype  => p_item_type
235             ,itemkey => p_item_key
236             ,aname   => 'CURRENT_EFFECTIVE_DATE');
237      p_effective_date := l_effective_date;
238 EXCEPTION
239   WHEN OTHERS THEN
240   RAISE;
241 END get_assignment_details;
242 END hr_mee_workflow_service;