Search code examples
droolsredhatkieredhat-brms

Get triggered rule names which is executing on decision server from client side (Redhat Decision Manager)


I am using the REST api for executing rules on Decision Server (Redhat Decision Manager 7.2) using a stateless kie session. I'm currently getting the number of triggered rules, but I also want to get the names of those rules. Is this possible?

KieServicesConfiguration conf = KieServicesFactory.newRestConfiguration(URL, USER, PASSWORD);

List<GenericCommand<?>> commands = new ArrayList<GenericCommand<?>>();

commands.add((GenericCommand<?>)
KieServices.Factory.get().getCommands().newInsert(applicant, "applicant"));

commands.add((GenericCommand<?>)
KieServices.Factory.get().getCommands().newInsert(loan, "loan"));

commands.add((GenericCommand<?>)KieServices.Factory.get().getCommands().newFireAllRules("numberOfFiredRules"));

KieCommands kieCommands = KieServices.Factory.get().getCommands();

BatchExecutionCommand batchCommand = kieCommands.newBatchExecution(commands, "default-stateless-ksession");

ServiceResponse<ExecutionResults> executeResponse = ruleServicesClient
                .executeCommandsWithResults("loan-application_1.2.0", batchCommand);

System.out.println("Number of fired rules:" executeResponse.getResult().getValue("numberOfFiredRules"));

Solution

  • You have to use an AgendaEventListener to keep track of rules exectioned. By implemnting org.kie.api.event.rule.AgendaEventListener interface you can capture these detials.