Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
You can use this code block and put into the Bean Shell สำหรับผู้เข้าร่วมกระบวนการ (Bean Shell for Process Participant) in แมปผู้เข้าร่วมไปยังผู้ใช้ (Map Participants to Users).
In this piece of code, we will get all the users from the group with ID "G-001". Then, we will traverse through each user and obtain each user's assignment count.
The first user with the least assignment count will be picked as the assignee of the current assignment. You may use this as a reference to your future coding needs.
import java.util.Collection; import org.joget.apps.app.service.AppUtil; import org.joget.directory.model.User; import org.joget.directory.model.service.ExtDirectoryManager; import org.joget.workflow.shark.model.dao.WorkflowAssignmentDao; ExtDirectoryManager directoryManager = (ExtDirectoryManager) AppUtil.getApplicationContext().getBean("directoryManager"); WorkflowAssignmentDao workflowAssignmentDao = (WorkflowAssignmentDao) AppUtil.getApplicationContext().getBean("workflowAssignmentDao"); //set groupId String groupId = "G-001"; //Get users of the group using directory manager, sorted by firstName Collection userList = directoryManager.getUsers(null, null, null, null, groupId, null, null, "firstName", false, null, null); //initialize String assignTo = ""; int lowestAssignmentCount = -1; Collection assignees = new ArrayList(); //loop through the users for(Object u : userList){ User user = (User) u; //get open assignment count of the current user //refer to https://github.com/jogetworkflow/jw-community/blob/5.0-SNAPSHOT/wflow-wfengine/src/main/java/org/joget/workflow/shark/model/dao/WorkflowAssignmentDao.java#L198 to refine search conditions int userAssignmentSize = workflowAssignmentDao.getAssignmentSize(null, null, null, null, u.getUsername(), "open"); //System.out.println(u.getUsername() + " has " + userAssignmentSize); if(lowestAssignmentCount == -1){ //assign to the first person first lowestAssignmentCount = userAssignmentSize; assignTo = u.getUsername(); }else if(userAssignmentSize < lowestAssignmentCount){ assignTo = u.getUsername(); lowestAssignmentCount = userAssignmentSize; } } //System.out.println("Will assign to " + assignTo); assignees.add(assignTo); return assignees;