custom wf po action
Sun Jan 21 2024 08:29:13 GMT+0000 (Coordinated Universal Time)
Saved by @MinaTimo
public void takeAction(Description _action)
{
WorkflowWorkItemTable workflowWorkItemTable;
WorkflowWorkItemActionType actionType;
WorkflowUser workflowUser;
str menuItemName;
System.Exception exception;
#define.Approve("Approve")
#define.Reject("Reject")
#define.WFDelegate("Delegate")
#define.RequestChange("RequestChange")
#OCCRetryCount
UserId _fromuser = curUserId();
UserId _toUser = NW_COODCOApprovalRequest.DelegateUser;
str _comment = "";
try
{
select firstonly workflowWorkItemTable
order by RecId desc
where workflowWorkItemTable.RefTableId == tableNum(PurchTable)
&& workflowWorkItemTable.RefRecId == purchTable.recid
&& workflowWorkItemTable.Status == WorkFlowWorkItemStatus::Pending
&& workflowWorkItemTable.Type == WorkflowWorkItemType::WorkItem;
switch (_action)
{
case #Approve :
actionType = WorkflowWorkItemActionType::Complete;
workflowUser = _fromuser;
menuItemName = menuItemActionStr(PurchTableApprovalApprove);
break;
case #Reject :
actionType = WorkflowWorkItemActionType::Return;
workflowUser = _fromuser;
menuItemName = menuItemActionStr(PurchTableApprovalReject);
break;
case #WFDelegate :
actionType = WorkflowWorkItemActionType::Delegate;
workflowUser = _toUser;
menuItemName = menuItemActionStr(PurchTableApprovalDelegate);
ttsbegin;
NW_COODCOApprovalRequest.DelegatePO = NoYes::No;
NW_COODCOApprovalRequest.DelegateUser = "";
NW_COODCOApprovalRequest.doUpdate();
ttscommit;
break;
case #RequestChange :
actionType = WorkflowWorkItemActionType::RequestChange;
workflowUser = _fromuser;
menuItemName = menuItemActionStr(PurchTableApprovalRequestChange);
ttsbegin;
NW_COODCOApprovalRequest.doDelete();
ttscommit;
break;
}
if (workflowWorkItemTable)
{
WorkflowWorkItemActionManager::dispatchWorkItemAction(workflowWorkItemTable
, _comment
, workflowUser
, actionType
, menuItemName);
}
}
catch (Exception::Deadlock)
{
retry;
}
catch (Exception::UpdateConflict)
{
if(appl.ttsLevel() == 0)
{
if(xSession::currentRetryCount() >= #RetryNum)
{
throw exception::UpdateConflictNotRecovered;
}
else
{
retry;
}
}
else
{
throw exception::UpdateConflict;
}
}
catch (Exception::Error)
{
throw error("Error occurred.");
}
// to refresh the page list
FormDataSource ds = FormDataUtil::getFormDataSource(element.args().record());
ds.executeQuery();
element.close();
}



Comments