Search in sources :

Example 21 with TaskAssigningSolution

use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.

the class SolutionChangesBuilderTest method addRemoveUserWhenHasNoTasksChange.

@Test
public void addRemoveUserWhenHasNoTasksChange() {
    List<User> userList = mockUserList(mockUser(USER1_ID));
    userList.get(0).setEnabled(false);
    TaskAssigningSolution solution = mockSolution(Collections.emptyList(), userList);
    List<ProblemFactChange<TaskAssigningSolution>> result = SolutionChangesBuilder.create().withSolution(solution).withTasks(Collections.emptyList()).withUserSystem(userSystemService).withContext(context).build();
    RemoveUserProblemFactChange expected = new RemoveUserProblemFactChange(userList.get(0));
    assertChangeIsTheChangeSetId(result, 0);
    assertChange(result, 1, expected);
}
Also used : UserUtil.fromExternalUser(org.kie.server.services.taskassigning.planning.util.UserUtil.fromExternalUser) User(org.kie.server.services.taskassigning.core.model.User) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) RemoveUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange) TaskPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.TaskPropertyChangeProblemFactChange) DisableUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange) ReleaseTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange) UserPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.UserPropertyChangeProblemFactChange) AssignTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange) AddTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange) AddUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddUserProblemFactChange) RemoveTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange) ProblemFactChange(org.optaplanner.core.impl.solver.ProblemFactChange) RemoveUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange) Test(org.junit.Test)

Example 22 with TaskAssigningSolution

use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.

the class AddTaskProblemFactChangeTest method addTaskProblemFactChange.

private void addTaskProblemFactChange(TaskAssigningSolution solution, List<Long> taskIds) throws Exception {
    solution.getUserList().add(PLANNING_USER);
    List<ProgrammedProblemFactChange<AddTaskProblemFactChange>> programmedChanges = taskIds.stream().map(id -> new ProgrammedProblemFactChange<>(new AddTaskProblemFactChange(new Task(id, "NewTask_" + id, 1)))).collect(Collectors.toList());
    // each partial solution must have the change that was applied on it.
    executeSequentialChanges(solution, programmedChanges);
    programmedChanges.forEach(change -> assertAddTaskProblemFactChangeWasProduced(change.getChange(), change.getSolutionAfterChange()));
    // finally the last solution must have the result of all the changes.
    TaskAssigningSolution lastSolution = programmedChanges.get(programmedChanges.size() - 1).getSolutionAfterChange();
    programmedChanges.forEach(change -> assertAddTaskProblemFactChangeWasProduced(change.getChange(), lastSolution));
}
Also used : Arrays(java.util.Arrays) Assert.assertTrue(org.junit.Assert.assertTrue) Test(org.junit.Test) PLANNING_USER(org.kie.server.services.taskassigning.core.model.ModelConstants.PLANNING_USER) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) Objects(java.util.Objects) SET_OF_50TASKS_5USERS_SOLUTION(org.kie.server.services.taskassigning.core.TestDataSet.SET_OF_50TASKS_5USERS_SOLUTION) List(java.util.List) SET_OF_100TASKS_5USERS_SOLUTION(org.kie.server.services.taskassigning.core.TestDataSet.SET_OF_100TASKS_5USERS_SOLUTION) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) Assertions(org.assertj.core.api.Assertions) SET_OF_500TASKS_20USERS_SOLUTION(org.kie.server.services.taskassigning.core.TestDataSet.SET_OF_500TASKS_20USERS_SOLUTION) Collections(java.util.Collections) Task(org.kie.server.services.taskassigning.core.model.Task) SET_OF_24TASKS_8USERS_SOLUTION(org.kie.server.services.taskassigning.core.TestDataSet.SET_OF_24TASKS_8USERS_SOLUTION) Task(org.kie.server.services.taskassigning.core.model.Task) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution)

Example 23 with TaskAssigningSolution

use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.

the class AddTaskProblemFactChangeTest method addTaskProblemFactChangeRandomSet.

private void addTaskProblemFactChangeRandomSet(String solutionResource) throws Exception {
    TaskAssigningSolution solution = readTaskAssigningSolution(solutionResource);
    int taskCount = solution.getTaskList().size();
    int randomChanges = taskCount / 2 + random.nextInt(taskCount / 2);
    List<Long> taskIds = new ArrayList<>();
    for (int i = 0; i < randomChanges; i++) {
        taskIds.add((long) taskCount++);
    }
    addTaskProblemFactChange(solution, taskIds);
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) ArrayList(java.util.ArrayList)

Example 24 with TaskAssigningSolution

use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.

the class AssignTaskProblemFactChangeTest method assignTaskProblemFactChange.

private void assignTaskProblemFactChange(TaskAssigningSolution solution, String solutionResource, String testType, List<ProgrammedAssignTaskProblemFactChange> programmedChanges) throws Exception {
    TaskAssigningSolution initialSolution = executeSequentialChanges(solution, programmedChanges);
    if (writeTestFiles()) {
        writeProblemFactChangesTestFiles(initialSolution, solutionResource, "AssignTaskProblemFactChangeTest.assignTaskProblemFactChangeTest", testType, programmedChanges, ProgrammedAssignTaskProblemFactChange::workingSolutionBeforeChangeAsString, ProgrammedAssignTaskProblemFactChange::solutionAfterChangeAsString);
    }
    // each partial solution must have the change that was applied on it.
    for (ProgrammedAssignTaskProblemFactChange change : programmedChanges) {
        assertAssignTaskProblemFactChangeWasProduced(change.getChange(), change.getSolutionAfterChange());
    }
    // finally the last solution must have the result of all the changes.
    TaskAssigningSolution lastSolution = programmedChanges.get(programmedChanges.size() - 1).getSolutionAfterChange();
    Map<Long, AssignTaskProblemFactChange> summarizedChanges = new HashMap<>();
    programmedChanges.forEach(change -> {
        // if  task was changed multiple times record only the last change.
        summarizedChanges.put(change.getChange().getTask().getId(), change.getChange());
    });
    for (AssignTaskProblemFactChange change : summarizedChanges.values()) {
        assertAssignTaskProblemFactChangeWasProduced(change, lastSolution);
    }
}
Also used : HashMap(java.util.HashMap) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution)

Example 25 with TaskAssigningSolution

use of org.kie.server.services.taskassigning.core.model.TaskAssigningSolution in project droolsjbpm-integration by kiegroup.

the class RemoveTaskProblemFactChangeTest method removeTaskProblemFactChangeRandomSet.

private void removeTaskProblemFactChangeRandomSet(String solutionResource) throws Exception {
    TaskAssigningSolution solution = readTaskAssigningSolution(solutionResource);
    int taskCount = solution.getTaskList().size();
    int randomChanges = taskCount / 2 + random.nextInt(taskCount / 2);
    List<Long> taskIds = new ArrayList<>();
    for (int i = 0; i < randomChanges; i++) {
        taskIds.add((long) taskCount++);
    }
    removeTaskProblemFactChange(solution, taskIds);
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) ArrayList(java.util.ArrayList)

Aggregations

TaskAssigningSolution (org.kie.server.services.taskassigning.core.model.TaskAssigningSolution)70 User (org.kie.server.services.taskassigning.core.model.User)29 Test (org.junit.Test)26 Task (org.kie.server.services.taskassigning.core.model.Task)24 ArrayList (java.util.ArrayList)21 TaskPropertyChangeProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.TaskPropertyChangeProblemFactChange)17 ProblemFactChange (org.optaplanner.core.impl.solver.ProblemFactChange)17 AddTaskProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange)16 AddUserProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.AddUserProblemFactChange)16 AssignTaskProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange)16 DisableUserProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange)16 ReleaseTaskProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange)16 RemoveTaskProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange)16 RemoveUserProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange)16 UserPropertyChangeProblemFactChange (org.kie.server.services.taskassigning.core.model.solver.realtime.UserPropertyChangeProblemFactChange)16 TaskData (org.kie.server.api.model.taskassigning.TaskData)15 TaskUtil.fromTaskData (org.kie.server.services.taskassigning.planning.util.TaskUtil.fromTaskData)13 UserUtil.fromExternalUser (org.kie.server.services.taskassigning.planning.util.UserUtil.fromExternalUser)12 PlanningTask (org.kie.server.api.model.taskassigning.PlanningTask)11 List (java.util.List)8