use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AddTaskProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
TaskAssigningSolution solution = scoreDirector.getWorkingSolution();
TaskAssignment workingTaskAssignment = scoreDirector.lookUpWorkingObjectOrReturnNull(taskAssignment);
if (workingTaskAssignment != null) {
throw new TaskAssigningRuntimeException(String.format("A task assignment with the given identifier id: %s already exists", taskAssignment.getId()));
}
scoreDirector.beforeEntityAdded(taskAssignment);
// Planning entity lists are already cloned by the SolutionCloner, no need to clone.
solution.getTaskAssignmentList().add(taskAssignment);
scoreDirector.afterEntityAdded(taskAssignment);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AssignTaskProblemFactChange method processNewTaskAssignment.
private void processNewTaskAssignment(TaskAssignment newTaskAssignment, ChainElement insertPosition, TaskAssignment insertPositionNextTask, ScoreDirector<TaskAssigningSolution> scoreDirector) {
TaskAssigningSolution solution = scoreDirector.getWorkingSolution();
newTaskAssignment.setPreviousElement(insertPosition);
scoreDirector.beforeEntityAdded(newTaskAssignment);
// Planning entity lists are already cloned by the SolutionCloner, no need to clone.
solution.getTaskAssignmentList().add(newTaskAssignment);
scoreDirector.afterEntityAdded(newTaskAssignment);
setPreviousElementIfApply(insertPositionNextTask, newTaskAssignment, scoreDirector);
setPinned(newTaskAssignment, scoreDirector);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class RemoveTaskProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
TaskAssigningSolution solution = scoreDirector.getWorkingSolution();
TaskAssignment workingTaskAssignment = scoreDirector.lookUpWorkingObjectOrReturnNull(taskAssignment);
if (workingTaskAssignment != null) {
ChainElement previousElement = workingTaskAssignment.getPreviousElement();
unlinkTaskAssignment(workingTaskAssignment, previousElement, scoreDirector);
scoreDirector.beforeEntityRemoved(workingTaskAssignment);
// Planning entity lists are already cloned by the SolutionCloner, no need to clone.
solution.getTaskAssignmentList().remove(workingTaskAssignment);
scoreDirector.afterEntityRemoved(workingTaskAssignment);
scoreDirector.triggerVariableListeners();
}
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class RemoveUserProblemFactChange method doChange.
@Override
public void doChange(ScoreDirector<TaskAssigningSolution> scoreDirector) {
final TaskAssigningSolution workingSolution = scoreDirector.getWorkingSolution();
final User workingUser = scoreDirector.lookUpWorkingObjectOrReturnNull(user);
if (workingUser == null) {
return;
}
if (workingUser.isEnabled()) {
scoreDirector.beforeProblemPropertyChanged(workingUser);
workingUser.setEnabled(false);
scoreDirector.afterProblemPropertyChanged(workingUser);
}
releaseAllTaskAssignments(workingUser, scoreDirector);
// Shallow clone the user list so only workingSolution is affected, not bestSolution
workingSolution.setUserList(new ArrayList<>(workingSolution.getUserList()));
// remove the problem fact itself
scoreDirector.beforeProblemFactRemoved(workingUser);
workingSolution.getUserList().remove(workingUser);
scoreDirector.afterProblemFactRemoved(workingUser);
scoreDirector.triggerVariableListeners();
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AbstractTaskAssigningCoreTest method readTaskAssigningSolution.
protected TaskAssigningSolution readTaskAssigningSolution(String resource) {
File resourceFile = Paths.get(getClass().getResource(resource).getPath()).toFile();
XStreamSolutionFileIO<TaskAssigningSolution> solutionFileIO = new XStreamSolutionFileIO<>(TaskAssigningSolution.class);
return solutionFileIO.read(resourceFile);
}
Aggregations