Search in sources :

Example 1 with ProblemFactChange

use of org.optaplanner.core.impl.solver.ProblemFactChange in project droolsjbpm-integration by kiegroup.

the class SolverHandlerTest method onUpdateSolutionSolverNotStarted.

@Test
public void onUpdateSolutionSolverNotStarted() {
    prepareStart();
    List<ProblemFactChange<TaskAssigningSolution>> changes = new ArrayList<>();
    changes.add(new TaskPropertyChangeProblemFactChange(new Task()));
    SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forChanges(changes);
    doReturn(false).when(solverExecutor).isStarted();
    synchronizerConsumerCaptor.getValue().accept(result);
    verify(solverExecutor, never()).addProblemFactChanges(changes);
}
Also used : Task(org.kie.server.services.taskassigning.core.model.Task) ArrayList(java.util.ArrayList) TaskPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.TaskPropertyChangeProblemFactChange) TaskPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.TaskPropertyChangeProblemFactChange) ProblemFactChange(org.optaplanner.core.impl.solver.ProblemFactChange) Test(org.junit.Test)

Example 2 with ProblemFactChange

use of org.optaplanner.core.impl.solver.ProblemFactChange in project droolsjbpm-integration by kiegroup.

the class SolverExecutorTest method addProblemFactChanges.

@Test(timeout = TEST_TIMEOUT)
public void addProblemFactChanges() throws Exception {
    CompletableFuture future = startRunnableBase();
    runnableBase.start(solution);
    // wait for the start initialization to finish
    startFinished.await();
    List<ProblemFactChange<TaskAssigningSolution>> changes = Collections.emptyList();
    runnableBase.addProblemFactChanges(changes);
    verify(solver).addProblemFactChanges(changes);
    runnableBase.destroy();
    future.get();
    assertTrue(runnableBase.isDestroyed());
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) ProblemFactChange(org.optaplanner.core.impl.solver.ProblemFactChange) Test(org.junit.Test)

Example 3 with ProblemFactChange

use of org.optaplanner.core.impl.solver.ProblemFactChange in project droolsjbpm-integration by kiegroup.

the class SolutionChangesBuilder method addUserChanges.

private void addUserChanges(final Map<String, User> usersById, final List<AddUserProblemFactChange> newUserChanges, final List<ProblemFactChange<TaskAssigningSolution>> updateUserChanges) {
    final Set<String> updatedUserIds = new HashSet<>();
    filterDuplicates(externalUserList).filter(externalUser -> !IS_PLANNING_USER.test(externalUser.getId())).map(UserUtil::fromExternalUser).forEach(user -> {
        final User previousUser = usersById.get(user.getEntityId());
        updatedUserIds.add(user.getEntityId());
        if (previousUser == null) {
            newUserChanges.add(new AddUserProblemFactChange(user));
        } else if (!equalsByProperties(previousUser, user)) {
            updateUserChanges.add(new UserPropertyChangeProblemFactChange(previousUser, true, user.getAttributes(), user.getAllLabelValues(), user.getGroups()));
        }
    });
    usersById.values().stream().filter(user -> !IS_PLANNING_USER.test(user.getEntityId())).filter(user -> !updatedUserIds.contains(user.getEntityId())).filter(User::isEnabled).forEach(user -> updateUserChanges.add(new DisableUserProblemFactChange(user)));
}
Also used : IndexedElement.addInOrder(org.kie.server.services.taskassigning.planning.util.IndexedElement.addInOrder) StatusConverter.convertToString(org.kie.server.api.model.taskassigning.util.StatusConverter.convertToString) AddUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddUserProblemFactChange) DUMMY_TASK_PLANNER_241(org.kie.server.services.taskassigning.core.model.ModelConstants.DUMMY_TASK_PLANNER_241) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) PLANNING_USER(org.kie.server.services.taskassigning.core.model.ModelConstants.PLANNING_USER) Function(java.util.function.Function) ArrayList(java.util.ArrayList) TaskData(org.kie.server.api.model.taskassigning.TaskData) HashSet(java.util.HashSet) User(org.kie.server.services.taskassigning.core.model.User) Map(java.util.Map) UserUtil.filterDuplicates(org.kie.server.services.taskassigning.planning.util.UserUtil.filterDuplicates) TaskPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.TaskPropertyChangeProblemFactChange) RemoveTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange) DisableUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange) Task(org.kie.server.services.taskassigning.core.model.Task) TaskHelper.hasPinnedTasks(org.kie.server.services.taskassigning.core.model.solver.TaskHelper.hasPinnedTasks) TaskUtil.fromTaskData(org.kie.server.services.taskassigning.planning.util.TaskUtil.fromTaskData) Logger(org.slf4j.Logger) IS_PLANNING_USER(org.kie.server.services.taskassigning.core.model.ModelConstants.IS_PLANNING_USER) UserSystemService(org.kie.server.services.taskassigning.user.system.api.UserSystemService) Set(java.util.Set) ReleaseTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange) ProblemFactChange(org.optaplanner.core.impl.solver.ProblemFactChange) StatusConverter.convertFromString(org.kie.server.api.model.taskassigning.util.StatusConverter.convertFromString) Collectors(java.util.stream.Collectors) UserPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.UserPropertyChangeProblemFactChange) Objects(java.util.Objects) RemoveUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange) TraceHelper.traceProgrammedChanges(org.kie.server.services.taskassigning.planning.TraceHelper.traceProgrammedChanges) List(java.util.List) AssignTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange) AddTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) IS_NOT_DUMMY(org.kie.server.services.taskassigning.core.model.ModelConstants.IS_NOT_DUMMY) UserUtil.fromExternalUser(org.kie.server.services.taskassigning.planning.util.UserUtil.fromExternalUser) IndexedElement(org.kie.server.services.taskassigning.planning.util.IndexedElement) UserUtil(org.kie.server.services.taskassigning.planning.util.UserUtil) Status(org.kie.api.task.model.Status) User(org.kie.server.services.taskassigning.core.model.User) UserUtil.fromExternalUser(org.kie.server.services.taskassigning.planning.util.UserUtil.fromExternalUser) DisableUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange) AddUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddUserProblemFactChange) StatusConverter.convertToString(org.kie.server.api.model.taskassigning.util.StatusConverter.convertToString) StatusConverter.convertFromString(org.kie.server.api.model.taskassigning.util.StatusConverter.convertFromString) HashSet(java.util.HashSet) UserPropertyChangeProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.UserPropertyChangeProblemFactChange)

Example 4 with ProblemFactChange

use of org.optaplanner.core.impl.solver.ProblemFactChange in project droolsjbpm-integration by kiegroup.

the class SolutionChangesBuilderTest method addNewUserChange.

@Test
public void addNewUserChange() {
    List<User> userList = mockUserList(mockUser(USER1_ID), mockUser(USER2_ID));
    org.kie.server.services.taskassigning.user.system.api.User newExternalUser = mockExternalUser(USER3_ID);
    org.kie.server.services.taskassigning.user.system.api.User newExternalUserRepeated1 = mockExternalUser(USER3_ID);
    org.kie.server.services.taskassigning.user.system.api.User newExternalUserRepeated2 = mockExternalUser(USER3_ID);
    List<org.kie.server.services.taskassigning.user.system.api.User> externalUserList = mockExternalUserList(newExternalUser, newExternalUserRepeated1, newExternalUserRepeated2);
    TaskAssigningSolution solution = mockSolution(Collections.emptyList(), userList);
    List<ProblemFactChange<TaskAssigningSolution>> result = SolutionChangesBuilder.create().withSolution(solution).withTasks(Collections.emptyList()).withUserSystem(userSystemService).withUsersUpdate(externalUserList).withContext(context).build();
    AddUserProblemFactChange expected = new AddUserProblemFactChange(fromExternalUser(newExternalUser));
    assertChangeIsTheChangeSetId(result, 0);
    assertOneChange(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) AddUserProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddUserProblemFactChange) 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 5 with ProblemFactChange

use of org.optaplanner.core.impl.solver.ProblemFactChange in project droolsjbpm-integration by kiegroup.

the class SolutionChangesBuilderTest method addNewReadyTaskChange.

@Test
public void addNewReadyTaskChange() {
    TaskData taskData = mockTaskData(TASK_ID, NAME, Ready, null);
    List<TaskData> taskDataList = mockTaskDataList(taskData);
    TaskAssigningSolution solution = mockSolution(Collections.emptyList(), Collections.emptyList());
    List<ProblemFactChange<TaskAssigningSolution>> result = SolutionChangesBuilder.create().withSolution(solution).withTasks(taskDataList).withUserSystem(userSystemService).withContext(context).build();
    AddTaskProblemFactChange expected = new AddTaskProblemFactChange(fromTaskData(taskData));
    assertChangeIsTheChangeSetId(result, 0);
    assertChange(result, 1, expected);
    assertTaskChangeRegistered(taskData.getTaskId(), taskData.getLastModificationDate());
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) AddTaskProblemFactChange(org.kie.server.services.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange) 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) TaskData(org.kie.server.api.model.taskassigning.TaskData) TaskUtil.fromTaskData(org.kie.server.services.taskassigning.planning.util.TaskUtil.fromTaskData) Test(org.junit.Test)

Aggregations

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