use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class TaskByGroupAndSkillsChangeMoveFilter method accept.
@Override
public boolean accept(ScoreDirector<TaskAssigningSolution> scoreDirector, ChangeMove<TaskAssigningSolution> changeMove) {
final TaskAssignment assignmentToMove = (TaskAssignment) changeMove.getEntity();
final ChainElement chainElement = (ChainElement) changeMove.getToPlanningValue();
final User user = chainElement.isTaskAssignment() ? ((TaskAssignment) chainElement).getUser() : (User) chainElement;
return user != null && user.isEnabled() && (ModelConstants.IS_PLANNING_USER.test(user.getId()) || (isPotentialOwner(assignmentToMove.getTask(), user) && hasAllLabels(assignmentToMove.getTask(), user, DefaultLabels.SKILLS.name())));
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class AssignTaskProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
User workingUser = lookupOrAddWorkingUser(user, scoreDirector, addIfNotExists);
TaskAssignment workingTaskAssignment = lookupOrPrepareTaskAssignment(taskAssignment, scoreDirector);
ChainElement insertPosition = findInsertPosition(workingUser);
TaskAssignment insertPositionNextTask = insertPosition.getNextElement();
if (taskAssignment == workingTaskAssignment) {
processNewTaskAssignment(workingTaskAssignment, insertPosition, insertPositionNextTask, scoreDirector);
} else if (insertPosition != workingTaskAssignment) {
// in cases where insertPosition == workingTaskAssignment there's nothing to do, since the workingTaskAssignment
// is already pinned and belongs to user. (see findInsertPosition)
processExistingTaskAssignment(workingTaskAssignment, insertPosition, insertPositionNextTask, scoreDirector);
}
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class DisableUserProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
final User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser == null) {
return;
}
scoreDirector.beforeProblemPropertyChanged(workingUser);
workingUser.setEnabled(false);
scoreDirector.afterProblemPropertyChanged(workingUser);
releaseNonPinnedTaskAssignments(workingUser, scoreDirector);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class RemoveUserProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
final TaskAssigningSolution workingSolution = scoreDirector.getWorkingSolution();
final User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser == null) {
return;
}
if (workingUser.isEnabled()) {
scoreDirector.beforeProblemPropertyChanged(workingUser);
workingUser.setEnabled(false);
scoreDirector.afterProblemPropertyChanged(workingUser);
}
releaseAllTaskAssignments(workingUser, scoreDirector);
// Shallow clone the user list so only workingSolution is affected, not bestSolution
workingSolution.setUserList(new ArrayList<>(workingSolution.getUserList()));
// remove the problem fact itself
scoreDirector.beforeProblemFactRemoved(workingUser);
workingSolution.getUserList().remove(workingUser);
scoreDirector.afterProblemFactRemoved(workingUser);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class TaskAssigningGenerator method createUserList.
private List<User> createUserList(int size, List<Group> groupList) {
List<User> userList = new ArrayList<>(size);
userNameGenerator.predictMaximumSizeAndReset(size);
for (int i = 0; i < size; i++) {
String userName = userNameGenerator.generateNextValue();
User user = new User(userName);
user.setEnabled(true);
int groupListSize = USER_GROUP_SET_SIZE_MINIMUM + random.nextInt(USER_GROUP_SET_MAXIMUM - USER_GROUP_SET_SIZE_MINIMUM);
if (groupListSize > groupList.size()) {
groupListSize = groupList.size();
}
Set<Group> groupSet = new LinkedHashSet<>(groupListSize);
int groupListIndex = random.nextInt(groupList.size());
for (int j = 0; j < groupListSize; j++) {
groupSet.add(groupList.get(groupListIndex));
groupListIndex = (groupListIndex + 1) % groupList.size();
}
user.setGroups(groupSet);
LOGGER.trace("Created user with id: ({}).", userName);
userList.add(user);
}
return userList;
}
Aggregations