Oracle Workflow Developer's Guide Release 2.6.3 Part Number B10284-02 |
Previous | Next | Contents | Index | Glossary |
The Select Approver function activity calls a PL/SQL stored procedure named WF_REQDEMO.SelectApprover
that determines who the next approver is based on the employee approval hierarchy in the demonstration data model.
Result Type
This activity expects a response of 'T' if an approver is found or 'F' if an approver is not found. The possible responses are defined in a lookup type called Boolean, associated with the Standard item type.
PL/SQL Stored Procedure
The PL/SQL stored procedure that this function activity calls is described in detail below. Each section in the procedure is numbered with the notation 1-> for easy referencing.
procedure SelectApprover (itemtype in varchar2,
itemkey in varchar2,
actid in number,
funcmode in varchar2,
resultout out varchar2) is
1-> l_forward_from_username varchar2(320);
l_forward_to_username varchar2(320);
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-> l_forward_to_username := wf_reqdemo.GetManager(
l_forward_from_username);
7-> wf_engine.SetItemAttrText (itemtype => itemtype;
itemkey => itemkey,
aname => 'FORWARD_TO_USERNAME';
avalue => l_forward_to_username);
8-> if (l_forward_to_username is null) then
resultout :='COMPLETE:F';
else
resultout :='COMPLETE:T';
end if;
9-> end if;
10-> if (funcmode = 'CANCEL') then
resultout :='COMPLETE';
return;
end if;
11-> if (funcmode = 'TIMEOUT') then
resultout :='COMPLETE';
return;
end if;
12-> exception
when others then
wf_core.context('WF_REQDEMO','SelectorApprover',itemtype,
itemkey,actid,funcmode);
raise;
13-> 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, Oracle Workflow API Reference.
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 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.
7-> 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.
8-> 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.
9-> This ends the check on funcmode =' RUN'.
10-> If the value of funcmode is CANCEL, then assign resultout to be COMPLETE.
11-> If the value of funcmode is TIMEOUT, then assign resultout to be COMPLETE.
12-> This section calls WF_CORE.CONTEXT if an exception occurs, to include context information in the error stack to help you locate the source of an error. See: CONTEXT, Oracle Workflow API Reference.
13-> This section marks the end of the procedure.
Previous | Next | Contents | Index | Glossary |