Search in sources :

Example 6 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class TaskAssigningGenerator method createTaskAssigningSolution.

private TaskAssigningSolution createTaskAssigningSolution(String fileName, int taskListSize, int groupListSize, int userListSize) {
    List<Group> groupList = createGroupList(groupListSize);
    List<User> userList = createUserList(userListSize, groupList);
    List<TaskAssignment> taskAssignmentList = createTaskAssignmentList(taskListSize, userList, groupList);
    TaskAssigningSolution solution = new TaskAssigningSolution("0", userList, taskAssignmentList);
    BigInteger totalFacts = AbstractSolutionImporter.factorial(taskListSize + userListSize - 1);
    BigInteger fixedFacts = AbstractSolutionImporter.factorial(userListSize - 1);
    BigInteger possibleSolutionSize = (totalFacts == null || fixedFacts == null) ? null : totalFacts.divide(fixedFacts);
    LOGGER.info("TaskAssigningSolution {} has {} tasks, {} groups, and {} users with a search space of {}.", fileName, taskListSize, groupListSize, userListSize, AbstractSolutionImporter.getFlooredPossibleSolutionSize(possibleSolutionSize));
    return solution;
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) BigInteger(java.math.BigInteger) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment)

Example 7 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class SolverTest method assertAssignment.

private void assertAssignment(User user, TaskAssignment taskAssignment, List<User> availableUsers) {
    assertThat(taskAssignment.getUser()).isNotNull();
    assertThat(taskAssignment.getUser().getId()).as("TaskAssignment: %s is not assigned to expected user: %s ", taskAssignment, user).isEqualTo(user.getId());
    Task task = taskAssignment.getTask();
    if (task.getPotentialUsers().isEmpty() && task.getPotentialGroups().isEmpty()) {
        assertThat(user.getId()).as("TaskAssignment: %s without potentialOwners can only be assigned to the PLANNING_USER", taskAssignment).isEqualTo(PLANNING_USER.getId());
    } else if (PLANNING_USER.getId().equals(user.getId())) {
        availableUsers.forEach(availableUser -> assertThat(isPotentialOwner(taskAssignment.getTask(), user)).as(String.format("PLANNING_USER user was assigned but another potential owner was found, user: %s taskAssignment: %s", user, taskAssignment)).isFalse());
    } else {
        assertThat(isPotentialOwner(taskAssignment.getTask(), user)).as(String.format("User: %s is not a potential owner for the taskAssignment: %s", user, taskAssignment)).isTrue();
    }
}
Also used : Solver(org.optaplanner.core.api.solver.Solver) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) SET_OF_24TASKS_8USERS_SOLUTION(org.kie.kogito.taskassigning.core.TestDataSet.SET_OF_24TASKS_8USERS_SOLUTION) TaskHelper.isPotentialOwner(org.kie.kogito.taskassigning.core.model.solver.TaskHelper.isPotentialOwner) AbstractTaskAssigningCoreTest(org.kie.kogito.taskassigning.core.AbstractTaskAssigningCoreTest) User(org.kie.kogito.taskassigning.core.model.User) Test(org.junit.jupiter.api.Test) Task(org.kie.kogito.taskassigning.core.model.Task) List(java.util.List) Assertions.fail(org.assertj.core.api.Assertions.fail) PLANNING_USER(org.kie.kogito.taskassigning.core.model.ModelConstants.PLANNING_USER) TaskHelper.extractTaskAssignments(org.kie.kogito.taskassigning.core.model.solver.TaskHelper.extractTaskAssignments) Timeout(org.junit.jupiter.api.Timeout) Task(org.kie.kogito.taskassigning.core.model.Task)

Example 8 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class TaskHelperTest method isPotentialOwnerOfTaskWithGroupsAndUserNoGroups.

@Test
void isPotentialOwnerOfTaskWithGroupsAndUserNoGroups() {
    Task task = Task.newBuilder().build();
    task.getPotentialGroups().add(availableGroups.get(0).getId());
    User user = availableUsers.get(0);
    assertThat(isPotentialOwner(task, user)).isFalse();
}
Also used : Task(org.kie.kogito.taskassigning.core.model.Task) User(org.kie.kogito.taskassigning.core.model.User) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 9 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class TaskHelperTest method isPotentialOwnerInDirectAssignmentTrue.

@Test
void isPotentialOwnerInDirectAssignmentTrue() {
    for (User user : availableUsers) {
        task.getPotentialUsers().remove(user.getId());
        for (Group group : availableGroups) {
            user.getGroups().add(group);
            assertThat(isPotentialOwner(task, user)).isTrue();
            user.getGroups().remove(group);
        }
    }
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 10 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class TaskHelperTest method isPotentialOwnerOfTaskWithNoGroupsAndUserWithGroups.

@Test
void isPotentialOwnerOfTaskWithNoGroupsAndUserWithGroups() {
    Task task = Task.newBuilder().build();
    User user = availableUsers.get(0);
    user.getGroups().add(availableGroups.get(0));
    assertThat(isPotentialOwner(task, user)).isFalse();
}
Also used : Task(org.kie.kogito.taskassigning.core.model.Task) User(org.kie.kogito.taskassigning.core.model.User) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

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