Search in sources :

Example 36 with User

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;
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) HashMap(java.util.HashMap) HashSet(java.util.HashSet)

Example 37 with 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();
}
Also used : User(org.kie.kogito.taskassigning.core.model.User)

Example 38 with User

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();
}
Also used : User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningRuntimeException(org.kie.kogito.taskassigning.core.TaskAssigningRuntimeException) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution)

Example 39 with User

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;
}
Also used : User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningRuntimeException(org.kie.kogito.taskassigning.core.TaskAssigningRuntimeException) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution)

Example 40 with User

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);
}
Also used : User(org.kie.kogito.taskassigning.core.model.User) TestUtil.mockUser(org.kie.kogito.taskassigning.service.TestUtil.mockUser) ArrayList(java.util.ArrayList) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment) TestUtil.mockTaskAssignment(org.kie.kogito.taskassigning.service.TestUtil.mockTaskAssignment)

Aggregations

User (org.kie.kogito.taskassigning.core.model.User)70 TaskAssignment (org.kie.kogito.taskassigning.core.model.TaskAssignment)41 Test (org.junit.jupiter.api.Test)32 TaskAssigningSolution (org.kie.kogito.taskassigning.core.model.TaskAssigningSolution)25 TestUtil.mockUser (org.kie.kogito.taskassigning.core.model.TestUtil.mockUser)14 Task (org.kie.kogito.taskassigning.core.model.Task)12 ArrayList (java.util.ArrayList)11 TestUtil.mockTaskAssignment (org.kie.kogito.taskassigning.core.model.TestUtil.mockTaskAssignment)11 AssignTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange)11 TaskUtil.fromTaskData (org.kie.kogito.taskassigning.service.util.TaskUtil.fromTaskData)10 Group (org.kie.kogito.taskassigning.core.model.Group)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)8 AddTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange)8 ReleaseTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange)8 RemoveTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange)8 ProblemFactChange (org.optaplanner.core.api.solver.ProblemFactChange)8 HashMap (java.util.HashMap)7 AddUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AddUserProblemFactChange)7 DisableUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange)7 RemoveUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange)7