all workflow actions / submit
Tue Apr 02 2024 13:11:16 GMT+0000 (Coordinated Universal Time)
Saved by @MinaTimo
// prevent actions by user in setup // for all actions [ExtensionOf(classStr(WorkflowWorkItemActionManager))] final class WorkflowWorkItemActionManager_Proc_Extension { public static void dispatchWorkItemAction( WorkflowWorkItemTable _workItem, WorkflowComment _comment, WorkflowUser _toUser, WorkflowWorkItemActionType _workItemActionType, menuItemName _menuItemName, Name _queueName ) { NW_UserWorkflowAction NW_UserWorkflowAction; WorkflowTable WorkflowTable; NW_WFAction action; switch(_workItemActionType) { case WorkflowWorkItemActionType::Complete : action = NW_WFAction::Approve; break; case WorkflowWorkItemActionType::Delegate : action = NW_WFAction::Delegate; break; case WorkflowWorkItemActionType::Deny : action = NW_WFAction::Cancel; break; case WorkflowWorkItemActionType::RequestChange : action = NW_WFAction::RequestChange; break; case WorkflowWorkItemActionType::Return : action = NW_WFAction::Reject; break; } SysWorkflowTable sysworkflowTable = SysWorkflowTable::find(_workItem.CorrelationId); while select NW_UserWorkflowAction join WorkflowTable where NW_UserWorkflowAction.SequenceNumber == WorkflowTable.SequenceNumber && WorkflowTable.TemplateName == sysworkflowTable.TemplateName && NW_UserWorkflowAction.NW_WFAction == action { if(NW_UserWorkflowAction.NW_UserGroup == NW_UserGroup::User && NW_UserWorkflowAction.UserId == curUserId()) throw error(strFmt('This user %1 not able to %2 this workflow',curUserId(), action)); if(NW_UserWorkflowAction.NW_UserGroup == NW_UserGroup::Group) { UserGroupList UserGroupList; select UserGroupList where UserGroupList.userId == curUserId() && UserGroupList.groupId == NW_UserWorkflowAction.UserGroup; if(UserGroupList) { throw error(strFmt('This user %1 not able to %2 this workflow',curUserId(), action)); } } } next dispatchWorkItemAction( _workItem, _comment, _toUser, _workItemActionType, _menuItemName, _queueName ); } } // for submit only [ExtensionOf(classStr(Workflow))] final class NW_Workflow_Proc_Extension { public static server WorkflowCorrelationId activateFromWorkflowType(workflowTypeName _workflowTemplateName, recId _recId, WorkflowComment _initialNote, NoYes _activatingFromWeb, WorkflowUser _submittingUser) { NW_UserWorkflowAction NW_UserWorkflowAction; WorkflowTable WorkflowTable; select NW_UserWorkflowAction join WorkflowTable where NW_UserWorkflowAction.SequenceNumber==WorkflowTable.SequenceNumber && WorkflowTable.TemplateName==_workflowTemplateName && NW_UserWorkflowAction.NW_WFAction==NW_WFAction::Submit; if(NW_UserWorkflowAction) { if(NW_UserWorkflowAction.NW_UserGroup == NW_UserGroup::User) throw error(strFmt('This user %1 not able to submit this workflow',_submittingUser)); else { UserGroupList UserGroupList; select UserGroupList where UserGroupList.userId==_submittingUser && UserGroupList.groupId==NW_UserWorkflowAction.UserGroup; if(UserGroupList) { throw error(strFmt('This user %1 not able to submit this workflow',_submittingUser)); } } } WorkflowCorrelationId ret = next activateFromWorkflowType( _workflowTemplateName, _recId, _initialNote, _activatingFromWeb, _submittingUser); return ret; } }
Comments