use of org.kie.server.api.commands.optaplanner.GetSolverWithBestSolutionCommand in project droolsjbpm-integration by kiegroup.
the class OptaplannerCommandServiceImpl method executeScript.
@Override
public ServiceResponsesList executeScript(CommandScript commands, MarshallingFormat marshallingFormat, String classType) {
List<ServiceResponse<?>> responses = new ArrayList<>();
for (KieServerCommand command : commands.getCommands()) {
try {
ServiceResponse<?> response;
logger.debug("About to execute command: {}", command);
if (command instanceof CreateSolverCommand) {
CreateSolverCommand createSolverCommand = (CreateSolverCommand) command;
String containerId = context.getContainerId(createSolverCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
SolverInstance instance = new SolverInstance();
instance.setContainerId(containerId);
instance.setSolverId(createSolverCommand.getSolverId());
instance.setSolverConfigFile(createSolverCommand.getSolverConfigFile());
response = solverService.createSolver(containerId, createSolverCommand.getSolverId(), instance);
} else if (command instanceof GetSolversCommand) {
GetSolversCommand getSolversCommand = (GetSolversCommand) command;
String containerId = context.getContainerId(getSolversCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.getSolvers(containerId);
} else if (command instanceof GetSolverCommand) {
GetSolverCommand getSolverCommand = (GetSolverCommand) command;
String containerId = context.getContainerId(getSolverCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.getSolver(containerId, getSolverCommand.getSolverId());
} else if (command instanceof GetSolverWithBestSolutionCommand) {
GetSolverWithBestSolutionCommand getSolverWithBestSolutionCommand = (GetSolverWithBestSolutionCommand) command;
String containerId = context.getContainerId(getSolverWithBestSolutionCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.getSolverWithBestSolution(containerId, getSolverWithBestSolutionCommand.getSolverId());
} else if (command instanceof SolvePlanningProblemCommand) {
SolvePlanningProblemCommand solvePlanningProblemCommand = (SolvePlanningProblemCommand) command;
String containerId = context.getContainerId(solvePlanningProblemCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
KieContainerInstanceImpl kc = context.getContainer(containerId);
Marshaller marshaller = kc.getMarshaller(marshallingFormat);
Object planningProblem = marshaller.unmarshall(solvePlanningProblemCommand.getPlanningProblem(), Object.class);
response = solverService.solvePlanningProblem(containerId, solvePlanningProblemCommand.getSolverId(), planningProblem);
} else if (command instanceof TerminateSolverEarlyCommand) {
TerminateSolverEarlyCommand terminateSolverEarlyCommand = (TerminateSolverEarlyCommand) command;
String containerId = context.getContainerId(terminateSolverEarlyCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.terminateSolverEarly(containerId, terminateSolverEarlyCommand.getSolverId());
} else if (command instanceof AddProblemFactChangeCommand) {
AddProblemFactChangeCommand addProblemFactChangeCommand = (AddProblemFactChangeCommand) command;
String containerId = context.getContainerId(addProblemFactChangeCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.addProblemFactChanges(containerId, addProblemFactChangeCommand.getSolverId(), addProblemFactChangeCommand.getProblemFactChange());
} else if (command instanceof AddProblemFactChangesCommand) {
AddProblemFactChangesCommand addProblemFactChangesCommand = (AddProblemFactChangesCommand) command;
String containerId = context.getContainerId(addProblemFactChangesCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.addProblemFactChanges(containerId, addProblemFactChangesCommand.getSolverId(), addProblemFactChangesCommand.getProblemFactChanges());
} else if (command instanceof IsEveryProblemFactChangeProcessedCommand) {
IsEveryProblemFactChangeProcessedCommand isEveryProblemFactChangeProcessedCommand = (IsEveryProblemFactChangeProcessedCommand) command;
String containerId = context.getContainerId(isEveryProblemFactChangeProcessedCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
ServiceResponse<Boolean> everyProblemFactChangeProcessedResponse = solverService.isEveryProblemFactChangeProcessed(containerId, isEveryProblemFactChangeProcessedCommand.getSolverId());
if (marshallingFormat.equals(MarshallingFormat.JAXB)) {
Object wrappedResult = ModelWrapper.wrap(everyProblemFactChangeProcessedResponse.getResult());
response = new ServiceResponse<>(everyProblemFactChangeProcessedResponse.getType(), everyProblemFactChangeProcessedResponse.getMsg(), wrappedResult);
} else {
response = everyProblemFactChangeProcessedResponse;
}
} else if (command instanceof DisposeSolverCommand) {
DisposeSolverCommand disposeSolverCommand = (DisposeSolverCommand) command;
String containerId = context.getContainerId(disposeSolverCommand.getContainerId(), ContainerLocatorProvider.get().getLocator());
response = solverService.disposeSolver(containerId, disposeSolverCommand.getSolverId());
} else {
throw new IllegalStateException("Unsupported command: " + command);
}
logger.debug("Service returned response {}", response);
// return successful result
responses.add(response);
} catch (Throwable e) {
logger.error("Error while processing {} command", command, e);
// return failure result
responses.add(new ServiceResponse<>(ServiceResponse.ResponseType.FAILURE, e.getMessage()));
}
}
logger.debug("About to return responses '{}'", responses);
return new ServiceResponsesList(responses);
}
use of org.kie.server.api.commands.optaplanner.GetSolverWithBestSolutionCommand in project droolsjbpm-integration by kiegroup.
the class SolverServicesClientImpl method getSolverWithBestSolution.
@Override
public SolverInstance getSolverWithBestSolution(String containerId, String solverId) {
checkMandatoryParameter("ContainerID", containerId);
checkMandatoryParameter("SolverId", solverId);
if (config.isRest()) {
String uri = getURI(containerId, solverId) + "/" + RestURI.SOLVER_BEST_SOLUTION;
return makeHttpGetRequestAndCreateCustomResponse(uri, SolverInstance.class);
} else {
CommandScript script = new CommandScript(Collections.singletonList(new GetSolverWithBestSolutionCommand(containerId, solverId)));
ServiceResponse<SolverInstance> response = (ServiceResponse<SolverInstance>) executeJmsCommand(script, GetSolverWithBestSolutionCommand.class.getName(), KieServerConstants.CAPABILITY_BRP, containerId).getResponses().get(0);
throwExceptionOnFailure(response);
if (shouldReturnWithNullResponse(response)) {
return null;
}
return response.getResult();
}
}
Aggregations