208:
209:
210:
211: -- Set Workflow Thresold for Deferred Processing
212: l_save_threshold := wf_engine.threshold ;
213: wf_engine.threshold := -1 ;
214:
215:
216: -- Create Workflow!
209:
210:
211: -- Set Workflow Thresold for Deferred Processing
212: l_save_threshold := wf_engine.threshold ;
213: wf_engine.threshold := -1 ;
214:
215:
216: -- Create Workflow!
217: wf_engine.CreateProcess ( ItemType => l_wf_item_type
213: wf_engine.threshold := -1 ;
214:
215:
216: -- Create Workflow!
217: wf_engine.CreateProcess ( ItemType => l_wf_item_type
218: , ItemKey => l_itemkey
219: , process => 'PA_BUDGET_INTG_MP'
220: );
221:
221:
222:
223:
224: -- Pass Workflow IN-parameters
225: wf_engine.SetItemAttrNumber
226: ( itemtype => l_wf_item_type
227: , itemkey => l_itemkey
228: , aname => 'PROJECT_ID'
229: , avalue => l_projects_rec.project_id
228: , aname => 'PROJECT_ID'
229: , avalue => l_projects_rec.project_id
230: );
231:
232: wf_engine.SetItemAttrText
233: ( itemtype => l_wf_item_type
234: , itemkey => l_itemkey
235: , aname => 'PROJECT_NUMBER'
236: , avalue => l_projects_rec.project_number
235: , aname => 'PROJECT_NUMBER'
236: , avalue => l_projects_rec.project_number
237: );
238:
239: wf_engine.SetItemAttrText
240: ( itemtype => l_wf_item_type
241: , itemkey => l_itemkey
242: , aname => 'PROJECT_NAME'
243: , avalue => l_projects_rec.project_name
242: , aname => 'PROJECT_NAME'
243: , avalue => l_projects_rec.project_name
244: );
245:
246: wf_engine.SetItemAttrText
247: ( itemtype => l_wf_item_type
248: , itemkey => l_itemkey
249: , aname => 'PROJECT_ORGANIZATION'
250: , avalue => l_projects_rec.project_organization
249: , aname => 'PROJECT_ORGANIZATION'
250: , avalue => l_projects_rec.project_organization
251: );
252:
253: wf_engine.SetItemAttrText
254: ( itemtype => l_wf_item_type
255: , itemkey => l_itemkey
256: , aname => 'PROJECT_MANAGER_NAME'
257: , avalue => l_project_manager_name
256: , aname => 'PROJECT_MANAGER_NAME'
257: , avalue => l_project_manager_name
258: );
259:
260: wf_engine.SetItemAttrText
261: (itemtype => l_wf_item_type
262: , itemkey => l_itemkey
263: , aname => 'DRAFT_VERSION_ID'
264: , avalue => p_draft_version_id
263: , aname => 'DRAFT_VERSION_ID'
264: , avalue => p_draft_version_id
265: );
266:
267: wf_engine.SetItemAttrText
268: (itemtype => l_wf_item_type
269: , itemkey => l_itemkey
270: , aname => 'BUDGET_TYPE_CODE'
271: , avalue => p_budget_type_code
270: , aname => 'BUDGET_TYPE_CODE'
271: , avalue => p_budget_type_code
272: );
273:
274: wf_engine.SetItemAttrText
275: (itemtype => l_wf_item_type
276: , itemkey => l_itemkey
277: , aname => 'BUDGET_TYPE'
278: , avalue => l_budget_type
277: , aname => 'BUDGET_TYPE'
278: , avalue => l_budget_type
279: );
280:
281: wf_engine.SetItemAttrText
282: (itemtype => l_wf_item_type
283: , itemkey => l_itemkey
284: , aname => 'MARK_AS_ORIGINAL'
285: , avalue => l_mark_as_original
284: , aname => 'MARK_AS_ORIGINAL'
285: , avalue => l_mark_as_original
286: );
287:
288: wf_engine.SetItemAttrText (itemtype => l_wf_item_type
289: , itemkey => l_itemkey
290: , aname => 'BUDGET_WF_FLAG'
291: , avalue => p_budget_wf_flag);
292:
290: , aname => 'BUDGET_WF_FLAG'
291: , avalue => p_budget_wf_flag);
292:
293:
294: wf_engine.SetItemAttrText (itemtype => l_wf_item_type
295: , itemkey => l_itemkey
296: , aname => 'FCK_REQ_FLAG'
297: , avalue => p_fck_req_flag);
298:
295: , itemkey => l_itemkey
296: , aname => 'FCK_REQ_FLAG'
297: , avalue => p_fck_req_flag);
298:
299: wf_engine.SetItemAttrText (itemtype => l_wf_item_type
300: , itemkey => l_itemkey
301: , aname => 'BGT_INTG_FLAG'
302: , avalue => p_bgt_intg_flag);
303:
300: , itemkey => l_itemkey
301: , aname => 'BGT_INTG_FLAG'
302: , avalue => p_bgt_intg_flag);
303:
304: wf_engine.SetItemAttrText
305: ( itemtype => l_wf_item_type
306: , itemkey => l_itemkey
307: , aname => 'WORKFLOW_STARTED_BY_UNAME'
308: , avalue => l_wf_started_by_username
307: , aname => 'WORKFLOW_STARTED_BY_UNAME'
308: , avalue => l_wf_started_by_username
309: );
310:
311: wf_engine.SetItemAttrText
312: (itemtype =>l_wf_item_type
313: , itemkey => l_itemkey
314: , aname => 'PROJECT_RESOURCE_ADMINISTRATOR'
315: , avalue => 'PASYSADMIN'
314: , aname => 'PROJECT_RESOURCE_ADMINISTRATOR'
315: , avalue => 'PASYSADMIN'
316: );
317:
318: wf_engine.SetItemAttrNumber
319: ( itemtype => l_wf_item_type
320: , itemkey => l_itemkey
321: , aname => 'WORKFLOW_STARTED_BY_UID'
322: , avalue => l_wf_started_by_id
321: , aname => 'WORKFLOW_STARTED_BY_UID'
322: , avalue => l_wf_started_by_id
323: );
324:
325: wf_engine.SetItemAttrNumber
326: ( itemtype => l_wf_item_type
327: , itemkey => l_itemkey
328: , aname => 'WORKFLOW_STARTED_BY_RESP_ID'
329: , avalue => l_responsibility_id
328: , aname => 'WORKFLOW_STARTED_BY_RESP_ID'
329: , avalue => l_responsibility_id
330: );
331:
332: wf_engine.SetItemAttrNumber
333: ( itemtype => l_wf_item_type
334: , itemkey => l_itemkey
335: , aname => 'WORKFLOW_STARTED_BY_APPL_ID'
336: , avalue => l_resp_appl_id
335: , aname => 'WORKFLOW_STARTED_BY_APPL_ID'
336: , avalue => l_resp_appl_id
337: );
338:
339: --pa_fck_util.debug_msg('PAWFBUIB: Call wf_engine.StartProcess');
340:
341:
342: -- Start Workflow!!!
343: wf_engine.StartProcess ( itemtype => l_wf_item_type
339: --pa_fck_util.debug_msg('PAWFBUIB: Call wf_engine.StartProcess');
340:
341:
342: -- Start Workflow!!!
343: wf_engine.StartProcess ( itemtype => l_wf_item_type
344: , itemkey => l_itemkey
345: );
346:
347: -- -----------------------------------------------------------------
349:
350: -- Post-Processing Stage ------------------------------------------
351: --pa_fck_util.debug_msg('PAWFBUIB: Restore Environment');
352:
353: wf_engine.threshold := l_save_threshold;
354: x_msg_count := fnd_msg_pub.count_msg;
355:
356: --pa_fck_util.debug_msg('PAWFBUIB: Log WF Process History');
357: -- Archive the Workflow Key for Subsequent Reporting Purposes
372:
373:
374: EXCEPTION
375: WHEN OTHERS THEN
376: wf_engine.threshold := l_save_threshold;
377: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
378: FND_MSG_PUB.Add_Exc_Msg
379: ( p_pkg_name => 'PA_BUDGET_INTG_WF'
380: , p_procedure_name => 'START_BUDGET_INTG_WF'
482:
483:
484: BEGIN
485:
486: -- Return if WF Engine Not Running
487: IF (funcmode <> wf_engine.eng_run) THEN
488: resultout := wf_engine.eng_null;
489: RETURN;
490: END IF;
483:
484: BEGIN
485:
486: -- Return if WF Engine Not Running
487: IF (funcmode <> wf_engine.eng_run) THEN
488: resultout := wf_engine.eng_null;
489: RETURN;
490: END IF;
491:
484: BEGIN
485:
486: -- Return if WF Engine Not Running
487: IF (funcmode <> wf_engine.eng_run) THEN
488: resultout := wf_engine.eng_null;
489: RETURN;
490: END IF;
491:
492: --pa_fck_util.debug_msg('PAWFBUIB: BEGIN PA_BUDGET_INTG_WF.Process_Bgt_Intg');
493:
494: -- Setup Environment ------------------------------------------------
495:
496: -- Assume Success
497: resultout := wf_engine.eng_completed||':'||'T';
498:
499:
500: -- Get Starting Apps Environment and Initialize
501: l_wf_started_by_id := wf_engine.GetItemAttrNumber
497: resultout := wf_engine.eng_completed||':'||'T';
498:
499:
500: -- Get Starting Apps Environment and Initialize
501: l_wf_started_by_id := wf_engine.GetItemAttrNumber
502: ( itemtype => itemtype
503: , itemkey => itemkey
504: , aname => 'WORKFLOW_STARTED_BY_UID'
505: );
503: , itemkey => itemkey
504: , aname => 'WORKFLOW_STARTED_BY_UID'
505: );
506:
507: l_wf_started_by_resp_id := wf_engine.GetItemAttrNumber
508: ( itemtype => itemtype
509: , itemkey => itemkey
510: , aname => 'WORKFLOW_STARTED_BY_RESP_ID'
511: );
509: , itemkey => itemkey
510: , aname => 'WORKFLOW_STARTED_BY_RESP_ID'
511: );
512:
513: l_wf_started_by_appl_id := wf_engine.GetItemAttrNumber
514: ( itemtype => itemtype
515: , itemkey => itemkey
516: , aname => 'WORKFLOW_STARTED_BY_APPL_ID'
517: );
526:
527:
528: -- Get Required Runtime Parmeters from WF --------------------------
529:
530: l_project_id := wf_engine.GetItemAttrNumber
531: ( itemtype => itemtype
532: , itemkey => itemkey
533: , aname => 'PROJECT_ID'
534: );
532: , itemkey => itemkey
533: , aname => 'PROJECT_ID'
534: );
535:
536: l_draft_version_id := wf_engine.GetItemAttrNumber
537: ( itemtype => itemtype
538: , itemkey => itemkey
539: , aname => 'DRAFT_VERSION_ID'
540: );
538: , itemkey => itemkey
539: , aname => 'DRAFT_VERSION_ID'
540: );
541:
542: l_budget_type_code := wf_engine.GetItemAttrText
543: ( itemtype => itemtype
544: , itemkey => itemkey
545: , aname => 'BUDGET_TYPE_CODE'
546: );
544: , itemkey => itemkey
545: , aname => 'BUDGET_TYPE_CODE'
546: );
547:
548: l_mark_as_original := wf_engine.GetItemAttrText
549: ( itemtype => itemtype
550: , itemkey => itemkey
551: , aname => 'MARK_AS_ORIGINAL'
552: );
550: , itemkey => itemkey
551: , aname => 'MARK_AS_ORIGINAL'
552: );
553:
554: l_budget_wf_flag := wf_engine.GetItemAttrText
555: ( itemtype => itemtype
556: , itemkey => itemkey
557: , aname => 'BUDGET_WF_FLAG'
558: );
556: , itemkey => itemkey
557: , aname => 'BUDGET_WF_FLAG'
558: );
559:
560: l_fck_req_flag := wf_engine.GetItemAttrText
561: ( itemtype => itemtype
562: , itemkey => itemkey
563: , aname => 'FCK_REQ_FLAG'
564: );
562: , itemkey => itemkey
563: , aname => 'FCK_REQ_FLAG'
564: );
565:
566: l_bgt_intg_flag := wf_engine.GetItemAttrText
567: ( itemtype => itemtype
568: , itemkey => itemkey
569: , aname => 'BGT_INTG_FLAG'
570: );
792:
793: FND_MESSAGE.SET_NAME ('PA','PA_NFDESC_BU_INTG_SUCCESS');
794: l_msg_desc_text := FND_MESSAGE.GET;
795:
796: wf_engine.SetItemAttrText
797: ( itemtype => itemtype
798: , itemkey => itemkey
799: , aname => 'MSG_SUBJECT_FYI'
800: , avalue => l_msg_subj_text
799: , aname => 'MSG_SUBJECT_FYI'
800: , avalue => l_msg_subj_text
801: );
802:
803: wf_engine.SetItemAttrText
804: ( itemtype => itemtype
805: , itemkey => itemkey
806: , aname => 'MSG_DESCRIPTION_FYI'
807: , avalue => l_msg_desc_text
815:
816: FND_MESSAGE.SET_NAME ('PA','PA_NFDESC_BU_INTG_FAILURE');
817: l_msg_desc_text := FND_MESSAGE.GET;
818:
819: wf_engine.SetItemAttrText
820: ( itemtype => itemtype
821: , itemkey => itemkey
822: , aname => 'MSG_SUBJECT_FYI'
823: , avalue => l_msg_subj_text
822: , aname => 'MSG_SUBJECT_FYI'
823: , avalue => l_msg_subj_text
824: );
825:
826: wf_engine.SetItemAttrText
827: ( itemtype => itemtype
828: , itemkey => itemkey
829: , aname => 'MSG_DESCRIPTION_FYI'
830: , avalue => l_msg_desc_text
841: IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR)
842: THEN
843:
844: -- Set WF Status for FAILURE. Route to Sys Admin
845: resultout := wf_engine.eng_completed||':'||'F';
846:
847: END IF; -- Hard ORA error
848:
849: END IF; --Conditionally Populate NF MSG and Errors
943: THEN
944: l_data := p_msg_data;
945: END IF;
946:
947: wf_engine.SetItemAttrText
948: ( itemtype => p_item_type
949: , itemkey => p_item_key
950: , aname => 'ERROR_COMMENTS_1'
951: , avalue => l_data
970: p_msg_index_out => l_msg_index_out );
971:
972: l_item_attr_name := 'ERROR_COMMENTS_'||i;
973:
974: wf_engine.SetItemAttrText
975: ( itemtype => p_item_type
976: , itemkey => p_item_key
977: , aname => l_item_attr_name
978: , avalue => l_data