Scenario:- We can do some actions in workflow through code
1) Submit:-
Code:-
WorkflowTypeName workflowTypeName = workflowTypeStr(YNY_BudgetTransactionLineWorkflowType);
Workflow::activateFromWorkflowType(workflowTypeName, Table.RecId, workflowComment, NoYes::No);
2) Approve:-
Code:-
WorkflowWorkItemTable workflowWorkItemTable;
WorkflowTypeName workflowTypeName = workflowTypeStr(CustomWorkflowType);
select firstonly workflowWorkItemTable
where workflowWorkItemTable.Type == WorkflowWorkItemType::WorkItem
&& workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending
&& workflowWorkItemTable.RefTableId== tableNum(EmployeeTable)
&& workflowWorkItemTable.RefRecId == 5637144576;
if(workflowWorkItemTable)
{
WorkflowWorkItemActionManager::dispatchWorkItemAction(workflowWorkItemTable,"Auto Approve by system",curUserId(), WorkflowWorkItemActionType::Complete,menuitemDisplayStr(Employee));
}
3) cancel or recall :-
Code:-
WorkflowWorkItemTable workflowWorkItemTable;
WorkflowTypeName workflowTypeName = workflowTypeStr(CustomWorkflowType);
select firstonly workflowWorkItemTable
where workflowWorkItemTable.Type == WorkflowWorkItemType::WorkItem
&& workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending
&& workflowWorkItemTable.RefTableId== tableNum(EmployeeTable)
&& workflowWorkItemTable.RefRecId == 5637146826;
if(workflowWorkItemTable)
{
Workflow::cancelWorkflow(workflowWorkItemTable.CorrelationId, "cancel by code");
}
4) Resume:-
Code:-
Workflowtrackingstatustable workflowTrackingStatusTable;
select * from workflowTrackingStatusTable where workflowTrackingStatusTable.CONTEXTRECID == 5637147576
&& workflowTrackingStatusTable.CONTEXTTABLEID == tableNum(EmployeeTable);
if(workflowTrackingStatusTable)
{
Workflow::resumeWorkflow(workflowTrackingStatusTable.CorrelationId, "resume by code");
}
Thankyou!!
No comments:
Post a Comment