Search in sources :

Example 66 with TaskAssigningSolution

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

the class SolutionSynchronizerTest method executeSynchronizeSolution.

private void executeSynchronizeSolution(CompletableFuture future, LocalDateTime startTime, List<TaskAssigningRuntimeDelegate.FindTasksResult> tasksQueryResults, List<List<User>> userQueryResults, int executionsCount) throws Exception {
    TaskAssigningSolution solution = new TaskAssigningSolution(1, new ArrayList<>(), new ArrayList<>());
    queryExecutionsCountDown = new CountDownLatch(executionsCount);
    prepareQueryExecutions(tasksQueryResults);
    prepareUserQueryExecutions(userQueryResults);
    when(generatedChanges.isEmpty()).thenReturn(false);
    when(emptyChanges.isEmpty()).thenReturn(true);
    when(solverExecutor.isStarted()).thenReturn(true);
    runnableBase.synchronizeSolution(solution, startTime);
    // wait for the query executions to happen
    queryExecutionsCountDown.await();
    applyResultCountDown.await();
    verify(resultConsumer).accept(resultCaptor.capture());
    assertEquals(generatedChanges, resultCaptor.getValue().getChanges());
    runnableBase.destroy();
    future.get();
    assertTrue(runnableBase.isDestroyed());
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 67 with TaskAssigningSolution

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

the class SolverHandlerTest method onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameBestSolution.

@Test
public void onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameBestSolution() {
    TaskAssigningSolution initialSolution = prepareStartAndASolutionProduced();
    BestSolutionChangedEvent<TaskAssigningSolution> event = mockEvent(true, true);
    doReturn(initialSolution).when(event).getNewBestSolution();
    listenerCaptor.getValue().bestSolutionChanged(event);
    SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forUnchangedPeriodTimeout();
    synchronizerConsumerCaptor.getValue().accept(result);
    verify(solverExecutor, never()).addProblemFactChanges(any(List.class));
    verify(solutionSynchronizer).synchronizeSolution(eq(initialSolution), eq(nextQueryTime));
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) List(java.util.List) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 68 with TaskAssigningSolution

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

the class SolverHandlerTest method onSolutionProcessedSuccessful.

private void onSolutionProcessedSuccessful(SolutionProcessor.Result result, boolean withRecoverableError, boolean withImproveSolutionOnBackgroundDuration) {
    TaskAssigningSolution solution = prepareStartAndASolutionProduced();
    processorConsumerCaptor.getValue().accept(result);
    SolverHandlerContext context = contextCaptor.getValue();
    assertEquals(nextQueryTime, context.getNextQueryTime());
    if (withRecoverableError) {
        verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(previousQueryTime));
    } else if (withImproveSolutionOnBackgroundDuration) {
        verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(nextQueryTime), improveSolutionOnBackgroundDurationCaptor.capture());
        assertThat(handlerConfig.getImproveSolutionOnBackgroundDuration()).isEqualTo(improveSolutionOnBackgroundDurationCaptor.getValue());
    } else {
        verify(solutionSynchronizer).synchronizeSolution(eq(solution), eq(nextQueryTime));
    }
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution)

Example 69 with TaskAssigningSolution

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

the class SolverHandlerTest method onSolutionSynchronizedWithChanges.

@Test
public void onSolutionSynchronizedWithChanges() {
    prepareStart();
    List<ProblemFactChange<TaskAssigningSolution>> changes = new ArrayList<>();
    changes.add(new TaskPropertyChangeProblemFactChange(new Task()));
    SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forChanges(changes);
    doReturn(true).when(solverExecutor).isStarted();
    synchronizerConsumerCaptor.getValue().accept(result);
    verify(solverExecutor).addProblemFactChanges(changes);
    verify(solutionProcessor, never()).process(any(TaskAssigningSolution.class));
    verify(solutionSynchronizer, never()).synchronizeSolution(any(TaskAssigningSolution.class), any(LocalDateTime.class));
}
Also used : LocalDateTime(java.time.LocalDateTime) Task(org.kie.server.services.taskassigning.core.model.Task) ArrayList(java.util.ArrayList) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) 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 70 with TaskAssigningSolution

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

the class SolverHandlerTest method onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameScoreBestSolution.

@Test
public void onSolutionSynchronizedWithUnchangedPeriodTimeoutAndSameScoreBestSolution() {
    TaskAssigningSolution initialSolution = prepareStartAndASolutionProduced();
    BestSolutionChangedEvent<TaskAssigningSolution> event = mockEvent(true, true);
    BendableLongScore initialSolutionScore = initialSolution.getScore();
    TaskAssigningSolution nextBestSolution = event.getNewBestSolution();
    doReturn(initialSolutionScore).when(nextBestSolution).getScore();
    listenerCaptor.getValue().bestSolutionChanged(event);
    SolutionSynchronizer.Result result = SolutionSynchronizer.Result.forUnchangedPeriodTimeout();
    synchronizerConsumerCaptor.getValue().accept(result);
    verify(solverExecutor, never()).addProblemFactChanges(any(List.class));
    verify(solutionSynchronizer).synchronizeSolution(eq(initialSolution), eq(nextQueryTime));
}
Also used : BendableLongScore(org.optaplanner.core.api.score.buildin.bendablelong.BendableLongScore) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) List(java.util.List) ArrayList(java.util.ArrayList) Test(org.junit.Test)

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