Create a class and Write the following code :
class GITS_DepartmentManagerParticipantProvider implements WorkflowParticipantProvider
{
public WorkflowParticipantTokenList getParticipantTokens()
{
WorkflowParticipantTokenList tokens = WorkflowParticipantTokenList::construct();
tokens.add('DeptManager','Department Head');
return tokens;
}
public WorkflowUserList resolve(WorkflowContext _context,WorkflowParticipantToken _participantTokenName)
{
str deptName;
anytype tempWorker;
DirPersonUser personUser;
HcmWorker hcmWorker;
OMOperatingUnit OMOperatingUnit;
PurchTable purchTable;
WorkflowUserList userList = WorkflowUserList::construct();
if (!_participantTokenName)
{
throw Error("@SYS105453");
}
select WorkerPurchPlacer from PurchTable
where PurchTable.RecId == _context.parmRecId();
deptName = HcmWorker::find(purchTable.WorkerPurchPlacer).primaryDepartmentName();
select hcmWorker from OMOperatingUnit
where OMOperatingUnit.Name == deptName
&& OMOperatingUnit.OMOperatingUnitType == OMOperatingUnitType::OMDepartment;
tempWorker = OMOperatingUnit.hcmWorker;
select User from personUser
exists join hcmWorker
where hcmWorker.Person == personUser.PersonParty
&& HcmWorker.RecId == tempWorker;
userList.add(personUser.User);
return userList;
}
public static GITS_DepartmentManagerParticipantProvider construct()
{
return new GITS_DepartmentManagerParticipantProvider();
}
}
Now create a "Workflow Participant Assignment Providers"
and put the help text and label "Purch Dept manager"
Available for all workflow template : No
Now in the provider class put in the name of the class that you created earlier i.e "GITS_DepartmentManagerParticipantProvider"
Now create a "Workflow type reference" and put in the then name of the workflow type that you want to provide the assignment on.