DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEX_STRATEGY_WF_PUB

Source


1 PACKAGE BODY IEX_STRATEGY_WF_PUB AS
2 /* $Header: iexpstwb.pls 120.3 2006/01/16 22:47:40 kasreeni ship $ */
3 /*
4  * This procedure needs to be called with an itemtype and workflow process
5  * which'll launch workflow .Start Workflow will call workflow based on
6  * Meth_flag in methodology base table
7 */
8 
9 G_PKG_NAME  CONSTANT VARCHAR2(30):= 'IEX_STRATEGY_WF_PUB';
10 PG_DEBUG NUMBER(2);
11 
12 PROCEDURE start_workflow
13 (
14             p_api_version             IN  NUMBER := 2.0,
15             p_init_msg_list           IN  VARCHAR2 := FND_API.G_FALSE,
16             p_commit                  IN  VARCHAR2 := FND_API.G_FALSE,
17             p_strategy_rec        IN  IEX_STRATEGY_PVT.STRATEGY_REC_TYPE,
18             x_return_status           OUT NOCOPY VARCHAR2,
19             x_msg_count               OUT NOCOPY NUMBER,
20             x_msg_data      		   OUT NOCOPY VARCHAR2,
21             bConcProg                 IN  VARCHAR2
22 ) IS
23            l_result       VARCHAR2(10);
24            itemtype       VARCHAR2(10) ;
25            itemkey       VARCHAR2(30);
26            workflowprocess     VARCHAR2(30);
27            rolename        VARCHAR2(200);
28            roledisplayname VARCHAR2(200);
29 
30            l_error_msg     VARCHAR2(2000);
31            l_return_status     VARCHAR2(20);
32            l_msg_count     NUMBER;
33            l_msg_data     VARCHAR2(2000);
34            l_api_name     VARCHAR2(100) ;
35            l_api_version_number          CONSTANT NUMBER   := 2.0;
36 
37 
38 BEGIN
39     l_api_name      := 'START_WORKFLOW';
40     -- Standard Start of API savepoint
41     SAVEPOINT START_WORKFLOW;
42 
43     -- Standard call to check for call compatibility.
44     IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
45                                            p_api_version,
46                                            l_api_name,
47                                            G_PKG_NAME) THEN
48         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
49 
50     END IF;
51     if (bConcProg = 'YES') then
52         -- Debug Message
53         write_log(FND_LOG.LEVEL_STATEMENT, 'Public API: IEX_STRATEGY_WF_PUB.' || l_api_name || ' start');
54         write_log(FND_LOG.LEVEL_STATEMENT, 'Start time: ' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
55     else
56 
57         -- Initialize message list IF p_init_msg_list is set to TRUE.
58         IF FND_API.to_Boolean( p_init_msg_list ) THEN
59             FND_MSG_PUB.initialize;
60         END IF;
61 
62         -- Debug Message
63         IEX_DEBUG_PUB.LogMessage( 'API: IEX_STRATEGY_WF_PUB.' || l_api_name || ' start');
64     end if;
65 
66     -- Initialize API return status to SUCCESS
67     x_return_status := FND_API.G_RET_STS_SUCCESS;
68 
69     itemtype := 'IEXSTRY';
70     workflowprocess := 'STRATEGY_WORKFLOW';
71 
72     itemkey := p_strategy_rec.strategy_id;
73 
74     -- wf_directory.GetRoleName(Orig_System, User_ID, role_name, role_displayname);
75     -- call engine API to set the owner.
76     --- wf_engine.SetItemOwner(ItemType, ItemKey, role_name);
77     wf_engine.createprocess  (  itemtype => itemtype,
78             itemkey  => itemkey,
79             process  => workflowprocess);
80 
81     if (bConcProg = 'YES') then
82         write_log(FND_LOG.LEVEL_STATEMENT, 'IEX_STRATEGY_WF_PUB.start_workflow: Create Process done');
83     else
84         IEX_DEBUG_PUB.LogMessage( 'IEX_STRATEGY_WF_PUB.start_workflow: Create Process done');
85     end if;
86 
87     wf_engine.setitemattrnumber(  itemtype =>  itemtype,
88             itemkey  =>   itemkey,
89             aname    =>   'STRATEGY_ID',
90             avalue   =>   p_strategy_rec.strategy_id);
91 
92     wf_engine.setitemattrnumber(  itemtype =>  itemtype,
93             itemkey  =>   itemkey,
94             aname    =>   'STRATEGY_TEMPLATE_ID',
95             avalue   =>   p_strategy_rec.strategy_template_id);
96 
97     wf_engine.setitemattrnumber(  itemtype =>  itemtype,
98             itemkey  =>   itemkey,
99             aname    =>   'DELINQUENCY_ID',
100             avalue   =>   p_strategy_rec.delinquency_id);
101 
102 
103     wf_engine.setitemattrnumber(  itemtype =>  itemtype,
104             itemkey  =>   itemkey,
105             aname    =>   'PARTY_ID',
106             avalue   =>   p_strategy_rec.PARTY_ID);
107 
108     if (bConcProg = 'YES') then
109         write_log(FND_LOG.LEVEL_STATEMENT, 'Set Attrib. sucess');
110     else
111         IEX_DEBUG_PUB.LogMessage( 'Set Attr sucess');
112     end if;
113 
114     wf_engine.startprocess(itemtype => itemtype,  itemkey  =>   itemkey);
115 
116     wf_engine.ItemStatus(  itemtype =>   ItemType,
117                            itemkey   =>   ItemKey,
118                            status   =>   l_return_status,
119                            result   =>   l_result);
120 
121     if (l_return_status in ('COMPLETE', 'ACTIVE', 'SUSPEND')) THEN
122        x_return_status := 'S';
123     else
124        x_return_status := 'F';
125        fnd_file.put_line(FND_FILE.LOG, 'Failed Workflow: STATUS = ' || l_return_status || ' l_result= ' || l_result);
126        fnd_file.put_line(FND_FILE.LOG, 'Database Error if any ' || 'sqlcode = ' || sqlcode || ' sqlerrm = ' || sqlerrm);
127        raise fnd_api.g_exc_unexpected_error;
128     end if;
129 
130     if (bConcProg = 'YES') then
131         write_log(FND_LOG.LEVEL_STATEMENT, 'GET ITEM STATUS = ' || l_return_status);
132 
133           -- Debug Message
134         write_log(FND_LOG.LEVEL_STATEMENT, 'PUB: ' || l_api_name || ' end');
135         write_log(FND_LOG.LEVEL_STATEMENT, 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
136     else
137         IEX_DEBUG_PUB.LogMessage( 'GET ITEM STATUS = ' || l_return_status);
138 
139           -- Debug Message
140         IEX_DEBUG_PUB.LogMessage( 'PUB: ' || l_api_name || ' end');
141         IEX_DEBUG_PUB.LogMessage( 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
142 
143     end if;
144 
145 EXCEPTION
146     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
147         if (bConcProg = 'YES') then
148             fnd_file.put_line(FND_FILE.LOG, 'UNEXPECTED ERROR. PUB: ' || ' sqlcode = ' || sqlcode || ' sqlerrm = ' || sqlerrm);
149             fnd_file.put_line(FND_FILE.LOG, 'UNEXPECTED ERROR. PUB: ' || l_api_name || ' end');
150             fnd_file.put_line(FND_FILE.LOG, 'PUB: ' || l_api_name || ' end');
151             fnd_file.put_line(FND_FILE.LOG, 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
152         else
153             IEX_DEBUG_PUB.LogMessage( 'UNEXPECTED ERROR. PUB: ' || l_api_name || ' end');
154             IEX_DEBUG_PUB.LogMessage( 'PUB: ' || l_api_name || ' end');
155             IEX_DEBUG_PUB.LogMessage( 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
156         end if;
157         raise FND_API.G_EXC_UNEXPECTED_ERROR;
158 
159     WHEN OTHERS THEN
160         if (bConcProg = 'YES') then
161             fnd_file.put_line(FND_FILE.LOG, 'UNHANDLED WORKFLOW EXCEPTION ERROR: ' || ' sqlcode = ' || sqlcode || ' sqlerrm = ' || sqlerrm);
162             fnd_file.put_line(FND_FILE.LOG, 'UNHANDLED WORKFLOW EXCEPTION. Strategy ID ' || p_strategy_rec.strategy_id);
163             fnd_file.put_line(FND_FILE.LOG, 'PUB: ' || l_api_name || ' end');
164             fnd_file.put_line(FND_FILE.LOG, 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
165         else
166             IEX_DEBUG_PUB.LogMessage( 'UNHANDLED WORKFLOW EXCEPTION. Strategy ID ' || p_strategy_rec.strategy_id);
167             IEX_DEBUG_PUB.LogMessage( 'PUB: ' || l_api_name || ' end');
168             IEX_DEBUG_PUB.LogMessage( 'End time:' || TO_CHAR(SYSDATE, 'HH24:MI:SSSSS'));
169         end if;
170         raise FND_API.G_EXC_UNEXPECTED_ERROR;
171 
172 END start_workflow;
173 
174 PROCEDURE write_log(mesg_level IN NUMBER, mesg IN VARCHAR2) is
175 BEGIN
176     if (mesg_level >= PG_DEBUG) then
177         fnd_file.put_line(FND_FILE.LOG,  mesg);
178 --        fnd_file.put_line(FND_FILE.LOG, my_timestamp || ' ' || mesg);
179     end if;
180 END;
181 
182 
183 BEGIN
184     PG_DEBUG := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
185 
186 
187 END IEX_STRATEGY_WF_PUB;