60:
61:
62: /* Procedure to launch non message generating workflow */
63:
64: Procedure WrkflowLaunch( p_Wf_item_name varchar2,
65: p_Wf_item_process_name varchar2,
66: p_Wf_item_key varchar2,
67: p_Bind_data_id Number,
68: x_return_code Out NOCOPY varchar2
61:
62: /* Procedure to launch non message generating workflow */
63:
64: Procedure WrkflowLaunch( p_Wf_item_name varchar2,
65: p_Wf_item_process_name varchar2,
66: p_Wf_item_key varchar2,
67: p_Bind_data_id Number,
68: x_return_code Out NOCOPY varchar2
69: ) is
62: /* Procedure to launch non message generating workflow */
63:
64: Procedure WrkflowLaunch( p_Wf_item_name varchar2,
65: p_Wf_item_process_name varchar2,
66: p_Wf_item_key varchar2,
67: p_Bind_data_id Number,
68: x_return_code Out NOCOPY varchar2
69: ) is
70:
75: From JTF_BIND_DATA
76: Where bind_data_id = l_bind_data_id And
77: bind_type = 'W';
78:
79: l_wf_item_exists Boolean := FALSE;
80: l_owner_name Varchar2(100);
81:
82: Begin
83:
82: Begin
83:
84:
85: -- Check for existence of same workflow instance.
86: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
87: itemkey => p_wf_item_key );
88: if ( l_wf_item_exists ) then
89: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
90: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
83:
84:
85: -- Check for existence of same workflow instance.
86: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
87: itemkey => p_wf_item_key );
88: if ( l_wf_item_exists ) then
89: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
90: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
91: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
84:
85: -- Check for existence of same workflow instance.
86: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
87: itemkey => p_wf_item_key );
88: if ( l_wf_item_exists ) then
89: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
90: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
91: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
92: FND_MSG_PUB.Add;
86: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
87: itemkey => p_wf_item_key );
88: if ( l_wf_item_exists ) then
89: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
90: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
91: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
92: FND_MSG_PUB.Add;
93: RAISE FND_API.G_EXC_ERROR;
94: else
87: itemkey => p_wf_item_key );
88: if ( l_wf_item_exists ) then
89: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
90: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
91: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
92: FND_MSG_PUB.Add;
93: RAISE FND_API.G_EXC_ERROR;
94: else
95: -- Create workflow process.
92: FND_MSG_PUB.Add;
93: RAISE FND_API.G_EXC_ERROR;
94: else
95: -- Create workflow process.
96: wf_engine.CreateProcess( itemType => p_Wf_item_name,
97: itemKey => p_Wf_item_key,
98: process => p_Wf_item_process_name
99: );
100:
93: RAISE FND_API.G_EXC_ERROR;
94: else
95: -- Create workflow process.
96: wf_engine.CreateProcess( itemType => p_Wf_item_name,
97: itemKey => p_Wf_item_key,
98: process => p_Wf_item_process_name
99: );
100:
101: -- Set workflow instance owner
94: else
95: -- Create workflow process.
96: wf_engine.CreateProcess( itemType => p_Wf_item_name,
97: itemKey => p_Wf_item_key,
98: process => p_Wf_item_process_name
99: );
100:
101: -- Set workflow instance owner
102:
101: -- Set workflow instance owner
102:
103: l_owner_name := FND_GLOBAL.USER_NAME;
104:
105: wf_engine.SetItemOwner( itemtype => p_wf_item_name,
106: itemkey => p_wf_item_key,
107: owner => l_owner_name );
108:
109: -- Set Workflow item attributes
102:
103: l_owner_name := FND_GLOBAL.USER_NAME;
104:
105: wf_engine.SetItemOwner( itemtype => p_wf_item_name,
106: itemkey => p_wf_item_key,
107: owner => l_owner_name );
108:
109: -- Set Workflow item attributes
110:
110:
111: FOR wf_att IN att_bind_data LOOP
112:
113: IF ( wf_att.data_type = 'T' ) then
114: wf_engine.setitemattrText( itemtype => p_wf_item_name,
115: itemkey => p_wf_item_key,
116: aname => wf_att.bind_name,
117: avalue => wf_att.bind_value );
118:
111: FOR wf_att IN att_bind_data LOOP
112:
113: IF ( wf_att.data_type = 'T' ) then
114: wf_engine.setitemattrText( itemtype => p_wf_item_name,
115: itemkey => p_wf_item_key,
116: aname => wf_att.bind_name,
117: avalue => wf_att.bind_value );
118:
119: ELSIF ( wf_att.data_type = 'N' ) then
116: aname => wf_att.bind_name,
117: avalue => wf_att.bind_value );
118:
119: ELSIF ( wf_att.data_type = 'N' ) then
120: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
121: itemkey => p_wf_item_key,
122: aname => wf_att.bind_name,
123: avalue => wf_att.bind_value );
124:
117: avalue => wf_att.bind_value );
118:
119: ELSIF ( wf_att.data_type = 'N' ) then
120: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
121: itemkey => p_wf_item_key,
122: aname => wf_att.bind_name,
123: avalue => wf_att.bind_value );
124:
125: ELSIF ( wf_att.data_type = 'D' ) then
122: aname => wf_att.bind_name,
123: avalue => wf_att.bind_value );
124:
125: ELSIF ( wf_att.data_type = 'D' ) then
126: wf_engine.setitemattrDate( itemtype => p_wf_item_name,
127: itemkey => p_wf_item_key,
128: aname => wf_att.bind_name,
129: avalue => to_date(wf_att.bind_value,'YYYY/MM/DD') );
130:
123: avalue => wf_att.bind_value );
124:
125: ELSIF ( wf_att.data_type = 'D' ) then
126: wf_engine.setitemattrDate( itemtype => p_wf_item_name,
127: itemkey => p_wf_item_key,
128: aname => wf_att.bind_name,
129: avalue => to_date(wf_att.bind_value,'YYYY/MM/DD') );
130:
131: END IF;
132: END LOOP;
133:
134:
135: /* start workflow process */
136: wf_engine.StartProcess( itemType => p_wf_item_name,
137: itemKey => p_wf_item_key
138: );
139:
140: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
133:
134:
135: /* start workflow process */
136: wf_engine.StartProcess( itemType => p_wf_item_name,
137: itemKey => p_wf_item_key
138: );
139:
140: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
141: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
137: itemKey => p_wf_item_key
138: );
139:
140: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
141: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
142: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
143: FND_MSG_PUB.Add;
144:
145: /* Purge Bind data table */
138: );
139:
140: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
141: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
142: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
143: FND_MSG_PUB.Add;
144:
145: /* Purge Bind data table */
146: JTF_USR_HKS.Purge_Bind_Data( p_bind_data_id => l_bind_data_id,
159:
160: When OTHERS then
161: x_return_code := FND_API.G_RET_STS_UNEXP_ERROR;
162: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_ERROR');
163: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
164: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
165: FND_MSG_PUB.Add;
166:
167: End WrkflowLaunch;
160: When OTHERS then
161: x_return_code := FND_API.G_RET_STS_UNEXP_ERROR;
162: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_ERROR');
163: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
164: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
165: FND_MSG_PUB.Add;
166:
167: End WrkflowLaunch;
168:
169:
170: /* Procedure to launch message generating workflow */
171:
172: Procedure GenMsgWrkflowLaunch(
173: p_Wf_item_name varchar2,
174: p_Wf_item_process_name varchar2,
175: p_Wf_item_key varchar2,
176: p_prod_code varchar2,
177: p_bus_obj_code varchar2,
170: /* Procedure to launch message generating workflow */
171:
172: Procedure GenMsgWrkflowLaunch(
173: p_Wf_item_name varchar2,
174: p_Wf_item_process_name varchar2,
175: p_Wf_item_key varchar2,
176: p_prod_code varchar2,
177: p_bus_obj_code varchar2,
178: p_bus_obj_name varchar2,
171:
172: Procedure GenMsgWrkflowLaunch(
173: p_Wf_item_name varchar2,
174: p_Wf_item_process_name varchar2,
175: p_Wf_item_key varchar2,
176: p_prod_code varchar2,
177: p_bus_obj_code varchar2,
178: p_bus_obj_name varchar2,
179: p_action_code varchar2,
191: From JTF_BIND_DATA
192: Where bind_data_id = l_bind_data_id And
193: bind_type = 'W';
194:
195: l_wf_item_exists Boolean := FALSE;
196: l_owner_name Varchar2(100);
197:
198: Begin
199:
198: Begin
199:
200:
201: -- Check for existence of same workflow instance.
202: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
203: itemkey => p_wf_item_key );
204: if ( l_wf_item_exists ) then
205: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
206: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
199:
200:
201: -- Check for existence of same workflow instance.
202: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
203: itemkey => p_wf_item_key );
204: if ( l_wf_item_exists ) then
205: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
206: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
207: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
200:
201: -- Check for existence of same workflow instance.
202: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
203: itemkey => p_wf_item_key );
204: if ( l_wf_item_exists ) then
205: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
206: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
207: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
208: FND_MSG_PUB.Add;
202: l_wf_item_exists := wf_item.item_exist( itemtype => p_wf_item_name,
203: itemkey => p_wf_item_key );
204: if ( l_wf_item_exists ) then
205: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
206: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
207: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
208: FND_MSG_PUB.Add;
209: RAISE FND_API.G_EXC_ERROR;
210: else
203: itemkey => p_wf_item_key );
204: if ( l_wf_item_exists ) then
205: FND_MESSAGE.SET_NAME('JTF','JTF_WF_ALREADY_EXISTS');
206: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
207: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
208: FND_MSG_PUB.Add;
209: RAISE FND_API.G_EXC_ERROR;
210: else
211: -- Create workflow process.
208: FND_MSG_PUB.Add;
209: RAISE FND_API.G_EXC_ERROR;
210: else
211: -- Create workflow process.
212: wf_engine.CreateProcess( itemType => p_Wf_item_name,
213: itemKey => p_Wf_item_key,
214: process => p_Wf_item_process_name
215: );
216:
209: RAISE FND_API.G_EXC_ERROR;
210: else
211: -- Create workflow process.
212: wf_engine.CreateProcess( itemType => p_Wf_item_name,
213: itemKey => p_Wf_item_key,
214: process => p_Wf_item_process_name
215: );
216:
217: -- Set workflow instance owner
210: else
211: -- Create workflow process.
212: wf_engine.CreateProcess( itemType => p_Wf_item_name,
213: itemKey => p_Wf_item_key,
214: process => p_Wf_item_process_name
215: );
216:
217: -- Set workflow instance owner
218:
217: -- Set workflow instance owner
218:
219: l_owner_name := FND_GLOBAL.USER_NAME;
220:
221: wf_engine.SetItemOwner( itemtype => p_wf_item_name,
222: itemkey => p_wf_item_key,
223: owner => l_owner_name );
224:
225: -- Set Workflow item attributes
218:
219: l_owner_name := FND_GLOBAL.USER_NAME;
220:
221: wf_engine.SetItemOwner( itemtype => p_wf_item_name,
222: itemkey => p_wf_item_key,
223: owner => l_owner_name );
224:
225: -- Set Workflow item attributes
226:
226:
227: FOR wf_att IN att_bind_data LOOP
228:
229: IF ( wf_att.data_type = 'T' ) then
230: wf_engine.setitemattrText( itemtype => p_wf_item_name,
231: itemkey => p_wf_item_key,
232: aname => wf_att.bind_name,
233: avalue => wf_att.bind_value );
234:
227: FOR wf_att IN att_bind_data LOOP
228:
229: IF ( wf_att.data_type = 'T' ) then
230: wf_engine.setitemattrText( itemtype => p_wf_item_name,
231: itemkey => p_wf_item_key,
232: aname => wf_att.bind_name,
233: avalue => wf_att.bind_value );
234:
235: ELSIF ( wf_att.data_type = 'N' ) then
232: aname => wf_att.bind_name,
233: avalue => wf_att.bind_value );
234:
235: ELSIF ( wf_att.data_type = 'N' ) then
236: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
237: itemkey => p_wf_item_key,
238: aname => wf_att.bind_name,
239: avalue => wf_att.bind_value );
240:
233: avalue => wf_att.bind_value );
234:
235: ELSIF ( wf_att.data_type = 'N' ) then
236: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
237: itemkey => p_wf_item_key,
238: aname => wf_att.bind_name,
239: avalue => wf_att.bind_value );
240:
241: ELSIF ( wf_att.data_type = 'D' ) then
238: aname => wf_att.bind_name,
239: avalue => wf_att.bind_value );
240:
241: ELSIF ( wf_att.data_type = 'D' ) then
242: wf_engine.setitemattrDate( itemtype => p_wf_item_name,
243: itemkey => p_wf_item_key,
244: aname => wf_att.bind_name,
245: avalue => to_date(wf_att.bind_value,'YYYY/MM/DD') );
246:
239: avalue => wf_att.bind_value );
240:
241: ELSIF ( wf_att.data_type = 'D' ) then
242: wf_engine.setitemattrDate( itemtype => p_wf_item_name,
243: itemkey => p_wf_item_key,
244: aname => wf_att.bind_name,
245: avalue => to_date(wf_att.bind_value,'YYYY/MM/DD') );
246:
247: END IF;
246:
247: END IF;
248: END LOOP;
249:
250: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
251: itemkey => p_wf_item_key,
252: aname => 'BIND_DATA_ID',
253: avalue => p_bind_data_id );
254:
247: END IF;
248: END LOOP;
249:
250: wf_engine.setitemattrNumber( itemtype => p_wf_item_name,
251: itemkey => p_wf_item_key,
252: aname => 'BIND_DATA_ID',
253: avalue => p_bind_data_id );
254:
255: wf_engine.setitemattrText( itemtype => p_wf_item_name,
251: itemkey => p_wf_item_key,
252: aname => 'BIND_DATA_ID',
253: avalue => p_bind_data_id );
254:
255: wf_engine.setitemattrText( itemtype => p_wf_item_name,
256: itemkey => p_wf_item_key,
257: aname => 'PRODUCT_CODE',
258: avalue => p_prod_code );
259:
252: aname => 'BIND_DATA_ID',
253: avalue => p_bind_data_id );
254:
255: wf_engine.setitemattrText( itemtype => p_wf_item_name,
256: itemkey => p_wf_item_key,
257: aname => 'PRODUCT_CODE',
258: avalue => p_prod_code );
259:
260: wf_engine.setitemattrText( itemtype => p_wf_item_name,
256: itemkey => p_wf_item_key,
257: aname => 'PRODUCT_CODE',
258: avalue => p_prod_code );
259:
260: wf_engine.setitemattrText( itemtype => p_wf_item_name,
261: itemkey => p_wf_item_key,
262: aname => 'BUS_OBJ_CODE',
263: avalue => p_bus_obj_code);
264:
257: aname => 'PRODUCT_CODE',
258: avalue => p_prod_code );
259:
260: wf_engine.setitemattrText( itemtype => p_wf_item_name,
261: itemkey => p_wf_item_key,
262: aname => 'BUS_OBJ_CODE',
263: avalue => p_bus_obj_code);
264:
265: wf_engine.setitemattrText( itemtype => p_wf_item_name,
261: itemkey => p_wf_item_key,
262: aname => 'BUS_OBJ_CODE',
263: avalue => p_bus_obj_code);
264:
265: wf_engine.setitemattrText( itemtype => p_wf_item_name,
266: itemkey => p_wf_item_key,
267: aname => 'BUS_OBJ_NAME',
268: avalue => p_bus_obj_name);
269:
262: aname => 'BUS_OBJ_CODE',
263: avalue => p_bus_obj_code);
264:
265: wf_engine.setitemattrText( itemtype => p_wf_item_name,
266: itemkey => p_wf_item_key,
267: aname => 'BUS_OBJ_NAME',
268: avalue => p_bus_obj_name);
269:
270: wf_engine.setitemattrText( itemtype => p_wf_item_name,
266: itemkey => p_wf_item_key,
267: aname => 'BUS_OBJ_NAME',
268: avalue => p_bus_obj_name);
269:
270: wf_engine.setitemattrText( itemtype => p_wf_item_name,
271: itemkey => p_wf_item_key,
272: aname => 'ACTION_CODE',
273: avalue => p_action_code);
274:
267: aname => 'BUS_OBJ_NAME',
268: avalue => p_bus_obj_name);
269:
270: wf_engine.setitemattrText( itemtype => p_wf_item_name,
271: itemkey => p_wf_item_key,
272: aname => 'ACTION_CODE',
273: avalue => p_action_code);
274:
275: wf_engine.setitemattrText( itemtype => p_wf_item_name,
271: itemkey => p_wf_item_key,
272: aname => 'ACTION_CODE',
273: avalue => p_action_code);
274:
275: wf_engine.setitemattrText( itemtype => p_wf_item_name,
276: itemkey => p_wf_item_key,
277: aname => 'CORRELATION',
278: avalue => p_correlation);
279: -- start workflow process
272: aname => 'ACTION_CODE',
273: avalue => p_action_code);
274:
275: wf_engine.setitemattrText( itemtype => p_wf_item_name,
276: itemkey => p_wf_item_key,
277: aname => 'CORRELATION',
278: avalue => p_correlation);
279: -- start workflow process
280: wf_engine.StartProcess( itemType => p_wf_item_name,
276: itemkey => p_wf_item_key,
277: aname => 'CORRELATION',
278: avalue => p_correlation);
279: -- start workflow process
280: wf_engine.StartProcess( itemType => p_wf_item_name,
281: itemKey => p_wf_item_key
282: );
283:
284: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
277: aname => 'CORRELATION',
278: avalue => p_correlation);
279: -- start workflow process
280: wf_engine.StartProcess( itemType => p_wf_item_name,
281: itemKey => p_wf_item_key
282: );
283:
284: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
285: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
281: itemKey => p_wf_item_key
282: );
283:
284: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
285: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
286: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
287: FND_MSG_PUB.Add;
288:
289: -- Purge Bind data table
282: );
283:
284: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_SUCCESS');
285: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
286: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
287: FND_MSG_PUB.Add;
288:
289: -- Purge Bind data table
290: JTF_USR_HKS.Purge_Bind_Data( p_bind_data_id => l_bind_data_id,
303:
304: When OTHERS then
305: x_return_code := FND_API.G_RET_STS_UNEXP_ERROR;
306: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_ERROR');
307: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
308: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
309: FND_MSG_PUB.Add;
310:
311: End GenMsgWrkflowLaunch;
304: When OTHERS then
305: x_return_code := FND_API.G_RET_STS_UNEXP_ERROR;
306: FND_MESSAGE.SET_NAME('JTF','JTF_WF_LAUNCH_ERROR');
307: FND_MESSAGE.SET_TOKEN('WF_NAME',p_wf_item_name);
308: FND_MESSAGE.SET_TOKEN('WF_KEY',p_wf_item_key);
309: FND_MSG_PUB.Add;
310:
311: End GenMsgWrkflowLaunch;
312: