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