DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.FND_SIF_UTILS

Source


1 package body FND_SIF_UTILS as
2 /* $Header: fndsifutlb.pls 120.0.12020000.3 2013/05/23 02:24:18 vshanmug noship $ */
3 
4 procedure Initialize_Error(p_item_type   in varchar2,
5                            p_item_key    in varchar2,
6                            p_act_id      in number,
7                            p_func_mode   in varchar2,
8                            p_result_out  out nocopy varchar2)
9 as
10   l_sif_inst_id fnd_soa_request.message_id%type;
11   l_sif_defn_name fnd_sif_definitions.definition_name%type;
12   l_sif_defn_dname fnd_sif_definitions_vl.display_name%type;
13   l_sif_description fnd_sif_definitions_vl.description%type;
14   l_sif_service fnd_sif_definitions.service%type;
15   l_sif_operation fnd_sif_definitions.operation%type;
16   l_sif_wsdl fnd_sif_definitions.attr1%type;
17 
18   l_erorr_code fnd_soa_runtime_error.error_code%type;
19   l_error_msg  fnd_soa_runtime_error.error_code%type;
20   l_error_stack fnd_soa_runtime_error.error_detail%type;
21   l_error_date  fnd_soa_runtime_error.error_date%type;
22 
23 begin
24   -- When executed by engine in RUN mode
25   if (p_func_mode = 'RUN') then
26     -- Get SIF run-time instance ID that erorred and resulted in error workflow
27     l_sif_inst_id := wf_engine.GetItemAttrText(p_item_type, p_item_key, 'SIF_INVOCATION_ID');
28     if (l_sif_inst_id is not null) then
29       -- SIF definition internal name could be supplied when error event was raised
30       l_sif_defn_name := wf_engine.GetItemAttrText(p_item_type, p_item_key, 'SIF_DEFINITION_NAME');
31       -- If SIF definition name was not supplied, look it up based on Instance ID
32       if (l_sif_defn_name is null) then
33         begin
34           SELECT irep_name
35           INTO   l_sif_defn_name
36           FROM   fnd_soa_request
37           WHERE  message_id = l_sif_inst_id;
38         exception
39           when no_data_found then
40             l_error_msg := 'Service Invocation Instance ID '||l_sif_inst_id||' not found';
41             l_error_stack := 'Unable to retrieve Service Invocation Error Details since Instance ID '||
42                            'is not found in Service Monitor Tables';
43             p_result_out := wf_engine.eng_completed;
44             return;
45         end;
46       end if;
47 
48       begin
49         SELECT display_name, description, attr1, service, operation
50         INTO   l_sif_defn_dname, l_sif_description, l_sif_wsdl, l_sif_service, l_sif_operation
51         FROM   fnd_sif_definitions_vl d
52         WHERE  d.definition_name = l_sif_defn_name;
53       exception
54         when no_data_found then
55           l_sif_defn_dname := 'Not Found';
56           l_sif_description := 'Not Found';
57           l_sif_wsdl := 'Not Found';
58           l_sif_service := 'Not Found';
59           l_sif_operation := 'Not Found';
60       end;
61 
62       begin
63         SELECT error_date, error_code, error_code, error_detail
64         INTO   l_error_date, l_erorr_code, l_error_msg, l_error_stack
65         FROM   fnd_soa_runtime_error
66         WHERE  message_id = l_sif_inst_id;
67       exception
68         when no_data_found then
69           l_error_date := null;
70           l_erorr_code := 'Not Available';
71           l_error_msg := 'Not Available';
72           l_error_stack := 'Not Available';
73       end;
74 
75       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_DEFINITION_NAME', l_sif_defn_name);
76       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_DEFINITION_DNAME', l_sif_defn_dname);
77       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_DESCRIPTION', l_sif_description);
78       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_WSDL', l_sif_wsdl);
79       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_SERVICE', l_sif_service);
80       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_OPERATION', l_sif_operation);
81 
82       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_ERROR_CODE', l_erorr_code);
83       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_ERROR_MESSAGE', l_error_msg);
84       wf_engine.SetItemAttrText(p_item_type, p_item_key, 'SIF_ERROR_STACK', l_error_stack);
85       wf_engine.SetItemAttrDate(p_item_type, p_item_key, 'SIF_ERROR_DATE', l_error_date);
86     end if;
87   end if;
88   p_result_out := wf_engine.eng_completed;
89 
90 exception
91   when others then
92     wf_core.context('FND_SIF_UTILS', 'Initialize_Error', p_item_type, p_item_key,
93                            p_act_id, p_func_mode);
94     raise;
95 end Initialize_Error;
96 
97 end FND_SIF_UTILS;