Search in sources :

Example 1 with GetSolverWithBestSolutionCommand

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);
}
Also used : ServiceResponsesList(org.kie.server.api.model.ServiceResponsesList) KieServerCommand(org.kie.server.api.model.KieServerCommand) ArrayList(java.util.ArrayList) TerminateSolverEarlyCommand(org.kie.server.api.commands.optaplanner.TerminateSolverEarlyCommand) SolverInstance(org.kie.server.api.model.instance.SolverInstance) ServiceResponse(org.kie.server.api.model.ServiceResponse) AddProblemFactChangesCommand(org.kie.server.api.commands.optaplanner.AddProblemFactChangesCommand) IsEveryProblemFactChangeProcessedCommand(org.kie.server.api.commands.optaplanner.IsEveryProblemFactChangeProcessedCommand) GetSolverCommand(org.kie.server.api.commands.optaplanner.GetSolverCommand) Marshaller(org.kie.server.api.marshalling.Marshaller) GetSolversCommand(org.kie.server.api.commands.optaplanner.GetSolversCommand) SolvePlanningProblemCommand(org.kie.server.api.commands.optaplanner.SolvePlanningProblemCommand) GetSolverWithBestSolutionCommand(org.kie.server.api.commands.optaplanner.GetSolverWithBestSolutionCommand) KieContainerInstanceImpl(org.kie.server.services.impl.KieContainerInstanceImpl) CreateSolverCommand(org.kie.server.api.commands.optaplanner.CreateSolverCommand) AddProblemFactChangeCommand(org.kie.server.api.commands.optaplanner.AddProblemFactChangeCommand) DisposeSolverCommand(org.kie.server.api.commands.optaplanner.DisposeSolverCommand)

Example 2 with GetSolverWithBestSolutionCommand

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();
    }
}
Also used : SolverInstance(org.kie.server.api.model.instance.SolverInstance) ServiceResponse(org.kie.server.api.model.ServiceResponse) CommandScript(org.kie.server.api.commands.CommandScript) GetSolverWithBestSolutionCommand(org.kie.server.api.commands.optaplanner.GetSolverWithBestSolutionCommand)

Aggregations

GetSolverWithBestSolutionCommand (org.kie.server.api.commands.optaplanner.GetSolverWithBestSolutionCommand)2 ServiceResponse (org.kie.server.api.model.ServiceResponse)2 SolverInstance (org.kie.server.api.model.instance.SolverInstance)2 ArrayList (java.util.ArrayList)1 CommandScript (org.kie.server.api.commands.CommandScript)1 AddProblemFactChangeCommand (org.kie.server.api.commands.optaplanner.AddProblemFactChangeCommand)1 AddProblemFactChangesCommand (org.kie.server.api.commands.optaplanner.AddProblemFactChangesCommand)1 CreateSolverCommand (org.kie.server.api.commands.optaplanner.CreateSolverCommand)1 DisposeSolverCommand (org.kie.server.api.commands.optaplanner.DisposeSolverCommand)1 GetSolverCommand (org.kie.server.api.commands.optaplanner.GetSolverCommand)1 GetSolversCommand (org.kie.server.api.commands.optaplanner.GetSolversCommand)1 IsEveryProblemFactChangeProcessedCommand (org.kie.server.api.commands.optaplanner.IsEveryProblemFactChangeProcessedCommand)1 SolvePlanningProblemCommand (org.kie.server.api.commands.optaplanner.SolvePlanningProblemCommand)1 TerminateSolverEarlyCommand (org.kie.server.api.commands.optaplanner.TerminateSolverEarlyCommand)1 Marshaller (org.kie.server.api.marshalling.Marshaller)1 KieServerCommand (org.kie.server.api.model.KieServerCommand)1 ServiceResponsesList (org.kie.server.api.model.ServiceResponsesList)1 KieContainerInstanceImpl (org.kie.server.services.impl.KieContainerInstanceImpl)1