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