| Previous | Next | Contents | Index | Glossary | Library |
| procedure SelectApprover ( | itemtype | in varchar2, | |||
| itemkey | in varchar2, | ||||
| actid | in number, | ||||
| funcmode | in varchar2, | ||||
| resultout | out varchar2 ) is | ||||
| 1-> | l_forward_from_username | varchar2(30); | |||
| l_forward_to_username | varchar2(30); | ||||
| 2-> | begin | ||||
| if ( funcmode = 'RUN' ) then | |||||
| l_forward_to_username := wf_engine.GetItemAttrText ( | |||||
| itemtype => itemtype, | |||||
| itemkey => itemkey, | |||||
| aname => 'FORWARD_TO_USERNAME'); | |||||
| 3-> | if (l_forward_to_username is null) then | ||||
| l_forward_to_username := wf_engine.GetItemAttrText ( | |||||
| itemtype => itemtype, | |||||
| itemkey => itemkey, | |||||
| aname => 'REQUESTOR_USERNAME'); | |||||
| end if; | |||||
| 4-> | l_forward_from_username := l_forward_to_username; | ||||
| 5-> | wf_engine.SetItemAttrText | (itemtype => itemtype; | |||
| itemkey => itemkey, | |||||
| aname => 'FORWARD_FROM_USERNAME'; | |||||
| avalue => l_forward_from_username); | |||||
| 6-> | wf_engine.SetItemAttrText | (itemtype => itemtype; | |||
| itemkey => itemkey, | |||||
| aname => 'FORWARD_FROM_DISPLAY_NAME'; | |||||
| avalue => wf_directory.GetRoleDisplayName(l_forward_from_username)); | |||||
| 7-> | l_forward_to_username := wf_reqdemo.GetManager( l_forward_from_username); | ||||
| 8-> | wf_engine.SetItemAttrText | (itemtype => itemtype; | |||
| itemkey => itemkey, | |||||
| aname => 'FORWARD_TO_USERNAME'; | |||||
| avalue => l_forward_to_username); | |||||
| 9-> | wf_engine.SetItemAttrText | (itemtype => itemtype; | |||
| itemkey => itemkey, | |||||
| aname => 'FORWARD_TO_DISPLAY_NAME'; | |||||
| avalue => wf_directory.GetRoleDisplayName(l_forward_to_username)); | |||||
| 10-> | if (l_forward_to_username is null) then | ||||
| resultout :='COMPLETE:F'; | |||||
| else | |||||
| resultout :='COMPLETE:T'; | |||||
| end if; | |||||
| 11-> | end if; | ||||
| 12-> | if (funcmode = 'CANCEL') then | ||||
| resultout :='COMPLETE'; | |||||
| return; | |||||
| end if; | |||||
| 13-> | if (funcmode = 'TIMEOUT') then | ||||
| resultout :='COMPLETE'; | |||||
| return; | |||||
| end if; | |||||
| 14-> | exception | ||||
| when others then | |||||
| wf_core.context('WF_REQDEMO','SelectorApprover',itemtype, itemkey,actid,funcmode); | |||||
| raise; | |||||
| 15-> | end SelectApprover; | ||||
1-> The local arguments l_forward_from_username, and l_forward_to_username are declared in this section.
2-> If the value of funcmode is RUN, then retrieve the name of the last person that this requisition was forwarded to for approval by assigning l_forward_to_username to the value of the FORWARD_TO_USERNAME item type attribute, determined by calling the Workflow Engine API GetItemAttrText. See: GetItemAttribute.
3-> If the value of l_forward_to_username is null, then it means that the requisition has never been forwarded for approval. In this case, assign it the value of the REQUESTOR_USERNAME item type attribute, determined by calling the Workflow Engine API GetItemAttrText.
4-> Assign l_forward_from_username to the value of l_forward_to_username.
5-> This section assigns the value of l_forward_from_username to the FORWARD_FROM_USERNAME item type attribute by calling the Workflow Engine SetItemAttrText API.
6-> This section calls the Directory Service GetRoleDisplayName API to get the display name of the username stored in l_forward_from_username and assigns that name to the FORWARD_FROM_DISPLAY_NAME item type attribute by calling the Workflow Engine SetItemAttrText API.
7-> This section calls the function GetManager to return the manager of the previous approver stored in l_forward_from_username, from the WF_REQDEMO_EMP_HIERARCHY table and assigns that manager's name to l_forward_to_username.
8-> This section assigns the value of l_forward_to_username to the FORWARD_TO_USERNAME item type attribute by calling the Workflow Engine SetItemAttrText API.
9-> This section calls the Directory Service GetRoleDisplayName API to get the display name of the username stored in l_forward_to_username and assigns that name to the FORWARD_TO_DISPLAY_NAME item type attribute by calling the Workflow Engine SetItemAttrText API.
10-> If l_forward_to_username is null, meaning there is no manager above the previous approver in the hierarchy, then assign resultout to be COMPLETE:F. Otherwise, assign resultout to be COMPLETE:T.
11-> This ends the check on funcmode =' RUN'.
12-> If the value of funcmode is CANCEL, then assign resultout to be COMPLETE.
13-> If the value of funcmode is TIMEOUT, then assign resultout to be COMPLETE.
14-> This section calls WF_CORE.CONTEXT if an exception occurs.
15-> The SelectApprover procedure ends.
| Previous | Next | Contents | Index | Glossary | Library |