Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
English

You can use this code block and put into the 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.

Thai

คุณสามารถใช้บล็อกรหัสนี้และใส่ลงใน Bean Shell for Process Participant ใน Map Participants to Users

ในส่วนของรหัสนี้เราจะรับผู้ใช้ทั้งหมดจากกลุ่มที่มี ID "G-001" จากนั้นเราจะสำรวจผู้ใช้แต่ละคนและรับจำนวนการมอบหมายของผู้ใช้แต่ละคน

ผู้ใช้รายแรกที่มีจำนวนการมอบหมายน้อยที่สุดจะถูกเลือกเป็นผู้รับโอนการมอบหมายปัจจุบัน คุณสามารถใช้สิ่งนี้เป็นการอ้างอิงถึงความต้องการการเข้ารหัสในอนาคตของคุณ

Code Block
languagejava
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;

Related Elements

Thai

องค์ประกอบที่เกี่ยวข้อง

...