package com.redhat.examples.iot.routingService; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.camel.Body; import org.drools.core.command.runtime.rule.GetObjectsCommand; import org.kie.api.KieServices; import org.kie.api.command.BatchExecutionCommand; import org.kie.api.command.Command; import org.kie.api.command.KieCommands; import org.kie.api.runtime.ExecutionResults; import org.kie.internal.command.CommandFactory; import org.kie.server.api.marshalling.MarshallingFormat; import org.kie.server.api.model.ServiceResponse; import org.kie.server.client.KieServicesConfiguration; import org.kie.server.client.KieServicesFactory; import org.kie.server.client.RuleServicesClient; public class BusinessRulesBean { private String kieHost; private String kieUser; private String kiePassword; private static final String SERVICE_CONTEXT = "kie-server/services/rest/server"; public Measure processRules(@Body Measure measure) { KieServicesConfiguration config = KieServicesFactory.newRestConfiguration( kieHost, kieUser, kiePassword); Set<Class<?>> jaxBClasses = new HashSet<Class<?>>(); jaxBClasses.add(Measure.class); config.addJaxbClasses(jaxBClasses); config.setMarshallingFormat(MarshallingFormat.JAXB); RuleServicesClient client = KieServicesFactory.newKieServicesClient(config) .getServicesClient(RuleServicesClient.class); List<Command<?>> cmds = new ArrayList<Command<?>>(); KieCommands commands = KieServices.Factory.get().getCommands(); cmds.add(commands.newInsert(measure)); GetObjectsCommand getObjectsCommand = new GetObjectsCommand(); getObjectsCommand.setOutIdentifier("objects"); cmds.add(commands.newFireAllRules()); cmds.add(getObjectsCommand); BatchExecutionCommand myCommands = CommandFactory.newBatchExecution(cmds, "DecisionTableKS"); ServiceResponse<ExecutionResults> response = client.executeCommandsWithResults("iot-ocp-businessrules-service", myCommands); List responseList = (List) response.getResult().getValue("objects"); Measure responseMeasure = (Measure) responseList.get(0); return responseMeasure; } public void init() { String kieAppName = (System.getenv("KIE_APP_NAME") == null) ? "kie-app" : System.getenv("KIE_APP_NAME"); String kiePort = (System.getenv("KIE_APP_SERVICE_PORT") == null) ? "8080" : System.getenv("KIE_APP_SERVICE_PORT"); kieUser = (System.getenv("KIE_APP_USER") == null) ? "iotuser" : System.getenv("KIE_APP_USER"); kiePassword = (System.getenv("KIE_APP_PASSWORD") == null) ? "iotuser1!" : System.getenv("KIE_APP_PASSWORD"); kieHost = String.format("http://%s:%s/%s", kieAppName, kiePort, SERVICE_CONTEXT); } }