Search in sources :

Example 1 with TaskAssigningSolution

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

the class SolverHandlerTest method onSolutionSynchronizedWithUnchangedPeriodTimeoutAndDifferentScoreBestSolution.

@Test
public void onSolutionSynchronizedWithUnchangedPeriodTimeoutAndDifferentScoreBestSolution() {
    TaskAssigningSolution initialSolution = prepareStartAndASolutionProduced();
    BestSolutionChangedEvent<TaskAssigningSolution> event = mockEvent(true, true);
    TaskAssigningSolution nextBestSolution = event.getNewBestSolution();
    BendableLongScore initialSolutionScore = initialSolution.getScore();
    BendableLongScore modifiedScore = initialSolutionScore.multiply(123);
    doReturn(modifiedScore).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(solutionProcessor).process(nextBestSolution);
    verify(solutionSynchronizer, never()).synchronizeSolution(any(TaskAssigningSolution.class), any(LocalDateTime.class));
}
Also used : LocalDateTime(java.time.LocalDateTime) 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)

Example 2 with TaskAssigningSolution

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

the class SolverHandlerTest method mockEvent.

@SuppressWarnings("unchecked")
private BestSolutionChangedEvent<TaskAssigningSolution> mockEvent(boolean allChangesProcessed, boolean solutionInitialized) {
    BestSolutionChangedEvent<TaskAssigningSolution> event = mock(BestSolutionChangedEvent.class);
    doReturn(allChangesProcessed).when(event).isEveryProblemFactChangeProcessed();
    TaskAssigningSolution solution = mock(TaskAssigningSolution.class);
    BendableLongScore score = BendableLongScore.zero(1, 1).withInitScore(solutionInitialized ? 1 : -1);
    doReturn(score).when(solution).getScore();
    doReturn(solution).when(event).getNewBestSolution();
    return event;
}
Also used : BendableLongScore(org.optaplanner.core.api.score.buildin.bendablelong.BendableLongScore) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution)

Example 3 with TaskAssigningSolution

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

the class SolutionProcessorTest method process.

@Test(timeout = TEST_TIMEOUT)
public void process() throws Exception {
    CompletableFuture future = startRunnableBase();
    doReturn(result).when(delegate).executePlanning(generatedPlan, TARGET_USER_ID);
    TaskAssigningSolution solution = new TaskAssigningSolution(-1, new ArrayList<>(), new ArrayList<>());
    runnableBase.process(solution);
    // wait until the processing has finished
    processingFinished.await();
    verify(delegate).executePlanning(generatedPlan, TARGET_USER_ID);
    assertEquals(result, capturedResult.getExecutionResult());
    runnableBase.destroy();
    future.get();
    assertTrue(runnableBase.isDestroyed());
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) Test(org.junit.Test)

Example 4 with TaskAssigningSolution

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

the class SolutionProcessorTest method processWithDelegateError.

@Test(timeout = TEST_TIMEOUT)
public void processWithDelegateError() throws Exception {
    CompletableFuture future = startRunnableBase();
    TaskAssigningSolution solution = new TaskAssigningSolution(-1, new ArrayList<>(), new ArrayList<>());
    RuntimeException generatedError = new RuntimeException("Emulate a service invocation error.");
    doThrow(generatedError).when(delegate).executePlanning(generatedPlan, TARGET_USER_ID);
    runnableBase.process(solution);
    // wait until the processing has finished
    processingFinished.await();
    assertEquals(generatedError, capturedResult.getException());
    runnableBase.destroy();
    future.get();
    assertTrue(runnableBase.isDestroyed());
}
Also used : CompletableFuture(java.util.concurrent.CompletableFuture) TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) Test(org.junit.Test)

Example 5 with TaskAssigningSolution

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

the class SolutionProcessorTest method processWithInvalidStatusFailure.

@Test
public void processWithInvalidStatusFailure() {
    TaskAssigningSolution solution = new TaskAssigningSolution(-1, new ArrayList<>(), new ArrayList<>());
    runnableBase.process(solution);
    Assertions.assertThatThrownBy(() -> runnableBase.process(solution)).hasMessage("SolutionProcessor process method can only be invoked when the status is STOPPED");
}
Also used : TaskAssigningSolution(org.kie.server.services.taskassigning.core.model.TaskAssigningSolution) 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