use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class UserUtil method fromExternalUser.
public static User fromExternalUser(org.kie.kogito.taskassigning.user.service.User externalUser, AttributesProcessorRegistry processorRegistry) {
final User user = new User(externalUser.getId(), true);
final Set<Group> groups = new HashSet<>();
user.setGroups(groups);
if (externalUser.getGroups() != null) {
externalUser.getGroups().forEach(externalGroup -> groups.add(new Group(externalGroup.getId())));
}
Map<String, Object> targetAttributes = new HashMap<>();
if (externalUser.getAttributes() != null) {
targetAttributes.putAll(externalUser.getAttributes());
}
processorRegistry.applyAttributesProcessor(externalUser, targetAttributes);
user.setAttributes(targetAttributes);
return user;
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class UserPropertyChangeProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
final User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser == null) {
return;
}
scoreDirector.beforeProblemPropertyChanged(workingUser);
workingUser.setEnabled(enabled);
workingUser.setAttributes(newAttributes);
workingUser.setGroups(newGroups);
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 AddUserProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
final TaskAssigningSolution workingSolution = scoreDirector.getWorkingSolution();
final User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser != null) {
throw new TaskAssigningRuntimeException(String.format("A user with the given identifier id: %s already exists", user.getId()));
}
// Shallow clone the user list so only workingSolution is affected, not bestSolution
workingSolution.setUserList(new ArrayList<>(workingSolution.getUserList()));
// Add the problem fact itself
scoreDirector.beforeProblemFactAdded(user);
workingSolution.getUserList().add(user);
scoreDirector.afterProblemFactAdded(user);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class AssignTaskProblemFactChange method lookupOrAddWorkingUser.
private static User lookupOrAddWorkingUser(User user, ScoreDirector<TaskAssigningSolution> scoreDirector, boolean addIfNotExists) {
TaskAssigningSolution solution = scoreDirector.getWorkingSolution();
User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser == null) {
if (!addIfNotExists) {
throw new TaskAssigningRuntimeException(String.format("Expected user: %s was not found in current working solution", user));
} else {
// Shallow clone the user list so only workingSolution is affected, not bestSolution
solution.setUserList(new ArrayList<>(solution.getUserList()));
// Ensure that the nextElement value calculated by OptaPlanner doesn't have any out-side manually
// assigned value.
user.setNextElement(null);
scoreDirector.beforeProblemFactAdded(user);
solution.getUserList().add(user);
scoreDirector.afterProblemFactAdded(user);
workingUser = user;
}
}
return workingUser;
}
use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.
the class TaskAssigningServiceTest method buildSolution.
private TaskAssigningSolution buildSolution() {
List<TaskAssignment> user1Assignments = Arrays.asList(mockTaskAssignment(TASK_1_ID), mockTaskAssignment(TASK_2_ID));
User user1 = mockUser(USER_1_ID, user1Assignments);
List<TaskAssignment> user2Assignments = Arrays.asList(mockTaskAssignment(TASK_3_ID), mockTaskAssignment(TASK_4_ID));
User user2 = mockUser(USER_2_ID, user2Assignments);
List<TaskAssignment> assignments = new ArrayList<>();
assignments.addAll(user1Assignments);
assignments.addAll(user2Assignments);
return new TaskAssigningSolution("1", Arrays.asList(user1, user2), assignments);
}
Aggregations