DSHRWorkflowUtil d365fo x++
DSHRWorkflowUtil d365fo x++
Code:
class DSHRWorkflowUtil
{
void submit(Args args)
{
recId recId;
str note;
WorkflowTypeName workFlowType;
WorkflowVersionTable workflowVersionTable;
workflowVersionTable = args.caller().getActiveWorkflowConfiguration();
WorkflowType = workflowVersionTable.workflowTable().TemplateName;
WorkflowSubmitDialog workflowSubmitDialog;
workflowSubmitDialog = WorkflowSubmitDialog::construct(workflowVersionTable);
recId = args.record().RecId;
;
workflowSubmitDialog.run();
if (workflowSubmitDialog.parmisClosedOK())
{
note = workflowSubmitDialog.parmWorkflowComment();
try
{
Workflow::activateFromWorkflowType(workFlowType,recId,note,NoYes::No);
this.callSubmitEventHandler(WorkflowType,recId);
info("Submitted to workflow");
}
catch (Exception::Error)
{
info("Error on workflow activation.");
}
}
args.caller().updateWorkflowControls();
}
void reSubmit(Args _args)
{
WorkflowWorkItemTable workItem = _args.caller().getActiveWorkflowWorkItem();
WorkflowWorkItemActionDialog workflowWorkItemActionDialog;
if (workItem.RecId > 0)
{
try
{
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());
}
}
catch(Exception::Error)
{
throw error('Error in resubmitting workflow');
}
}
_args.caller().updateWorkflowControls();
}
private void callSubmitEventHandler(WorkflowTypeName _workflowTypeName, RecId _tableRecId)
{
SysDictWorkflowType sysDictWorkflowType;
ClassName workflowTypeClassName;
DSHRWorkflowSubmittedEventHandler workflowSubmittedEventHandler;
classId classId;
SysDictClass dictClass;
sysDictWorkflowType = new SysDictWorkflowType(_workflowTypeName);
if(sysDictWorkflowType)
{
workflowTypeClassName = sysDictWorkflowType.startedEventHandler();
classId = className2Id(workflowTypeClassName);
dictClass = new SysDictClass(classId);
if(dictClass.isImplementing(classNum(DSHRWorkflowSubmittedEventHandler)))
{
WorkflowSubmittedEventHandler = dictClass.makeObject() as DSHRWorkflowSubmittedEventHandler;
workflowSubmittedEventHandler.submitted(_tableRecId);
}
else
{
warning('Implement WorkflowSubmittedEventHandler in workflow type event handler');
}
}
}
}
Comments
Post a Comment