use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class RemoveUserProblemFactChangeTest method setUp.
@BeforeEach
void setUp() {
user = new User(USER_ID_1);
workingSolution = new TaskAssigningSolution("1", new ArrayList<>(), new ArrayList<>());
user2 = new User(USER_ID_2);
user3 = new User(USER_ID_3);
workingSolution.getUserList().add(user2);
workingSolution.getUserList().add(user3);
change = new RemoveUserProblemFactChange(user);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AddTaskExecutableProblemFactChangeTest method addTaskProblemFactChangeRandomSet.
private void addTaskProblemFactChangeRandomSet(String solutionResource) {
TaskAssigningSolution solution = readTaskAssigningSolution(solutionResource);
int taskCount = solution.getTaskAssignmentList().size();
int randomChanges = taskCount / 2 + random.nextInt(taskCount / 2);
List<String> taskIds = new ArrayList<>();
for (int i = 0; i < randomChanges; i++) {
taskIds.add(Integer.toString(taskCount++));
}
addTaskProblemFactChange(solution, taskIds);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AssignTaskExecutableProblemFactChangeTest 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, "AssignTaskExecutableProblemFactChangeTest.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<String, AssignTaskProblemFactChange> summarizedChanges = new HashMap<>();
programmedChanges.forEach(change -> {
// if task was changed multiple times record only the last change.
summarizedChanges.put(change.getChange().getTaskAssignment().getId(), change.getChange());
});
for (AssignTaskProblemFactChange change : summarizedChanges.values()) {
assertAssignTaskProblemFactChangeWasProduced(change, lastSolution);
}
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AssignTaskExecutableProblemFactChangeTest method assignTaskProblemFactChangeFixedChangeSet.
private void assignTaskProblemFactChangeFixedChangeSet(String solutionResource) throws Exception {
TaskAssigningSolution solution = readTaskAssigningSolution(solutionResource);
solution.getUserList().add(PLANNING_USER);
// prepare the list of changes to program
List<ProgrammedAssignTaskProblemFactChange> programmedChanges = new ArrayList<>();
// assign Task_0 to User_0
TaskAssignment taskAssignment = solution.getTaskAssignmentList().get(0);
User user = solution.getUserList().get(0);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_10 to User_0
taskAssignment = solution.getTaskAssignmentList().get(10);
user = solution.getUserList().get(0);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_15 to User_2
taskAssignment = solution.getTaskAssignmentList().get(15);
user = solution.getUserList().get(2);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_13 to User_3
taskAssignment = solution.getTaskAssignmentList().get(13);
user = solution.getUserList().get(3);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_13 to User_4
taskAssignment = solution.getTaskAssignmentList().get(13);
user = solution.getUserList().get(4);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_13 to User_5
taskAssignment = solution.getTaskAssignmentList().get(13);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_15 to User_5
taskAssignment = solution.getTaskAssignmentList().get(15);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_16 to User_5
taskAssignment = solution.getTaskAssignmentList().get(16);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign Task_17 to User_5
taskAssignment = solution.getTaskAssignmentList().get(17);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// repeat assign Task_17 to User_5
taskAssignment = solution.getTaskAssignmentList().get(17);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// repeat assign Task_15 to User_5
taskAssignment = solution.getTaskAssignmentList().get(15);
user = solution.getUserList().get(5);
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
String nextTaskId = NEW_TASK + 1;
// assign a brand new task "NewTask_x and assign to User_0
user = solution.getUserList().get(0);
taskAssignment = new TaskAssignment(Task.newBuilder().id(nextTaskId).name(nextTaskId).build());
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign a brand new task "NewTask_x and assign to User_2
nextTaskId = NEW_TASK + 2;
user = solution.getUserList().get(2);
taskAssignment = new TaskAssignment(Task.newBuilder().id(nextTaskId).name(nextTaskId).build());
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
// assign a brand new task "NewTask_x and assign to User_5
nextTaskId = NEW_TASK + 3;
user = solution.getUserList().get(5);
taskAssignment = new TaskAssignment(Task.newBuilder().id(nextTaskId).name(nextTaskId).build());
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user));
assignTaskProblemFactChange(solution, solutionResource, FIXED_TEST, programmedChanges);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class RemoveTaskExecutableProblemFactChangeTest method removeTaskProblemFactChange.
private void removeTaskProblemFactChange(TaskAssigningSolution solution, List<String> taskIds) {
List<ProgrammedProblemFactChange<RemoveTaskProblemFactChange>> programmedChanges = taskIds.stream().map(id -> findTaskAssignmentOrCreate(solution, id)).map(taskAssignment -> new ProgrammedProblemFactChange<>(new RemoveTaskProblemFactChange(taskAssignment))).collect(Collectors.toList());
// each partial solution must have the change that was applied on it.
executeSequentialChanges(solution, programmedChanges);
programmedChanges.forEach(change -> assertRemoveTaskProblemFactChangeWasProduced(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 -> assertRemoveTaskProblemFactChangeWasProduced(change.getChange(), lastSolution));
}
Aggregations