example code :
public static void main(Args _args) { recID recID = _args.record().RecId; tableId tableId = _args.record().TableId; HcmEmploymentLeave HcmEmploymentLeave = _args.record(); WorkflowWorkItemTable workItem = _args.caller().getActiveWorkflowWorkItem(); str menuItemName = _args.menuItemName(); WorkflowWorkItemActionDialog workflowWorkItemActionDialog; WorkflowSubmitDialog workflowSubmitDialog; Debug::assert(tableId == tablenum(HcmEmploymentLeave)); Debug::assert(recId != 0); // The method has not been called correctly. if (tableId != tablenum(HcmEmploymentLeave) || recId == 0) { throw error(strfmt("@SYS19306", funcname())); } // The journal has an active workflow. if (workItem.RecId > 0) { try { // The journal does support workflow approvals. workflowWorkItemActionDialog = WorkflowWorkItemActionDialog::construct( workItem, WorkflowWorkItemActionType::Resubmit, new MenuFunction(_args.menuItemName(),_args.menuItemType())); workflowWorkItemActionDialog.run(); if (workflowWorkItemActionDialog.parmIsClosedOK()) { workItem = _args.caller().getActiveWorkflowWorkItem(); WorkflowWorkItemActionManager::dispatchWorkItemAction( workItem, workflowWorkItemActionDialog.parmWorkflowComment(), workflowWorkItemActionDialog.parmTargetUser(), WorkflowWorkItemActionType::Resubmit, _args.menuItemName(), false); } } catch(Exception::Error) { throw error(strfmt("Leave %1 can't be submitted", HcmEmploymentLeave.HRSLeaveReqId)); } } // Make the form refresh its common workflow UI controls. _args.caller().updateWorkflowControls(); }