Получить имена сработавших правил, которые выполняются на сервере принятия решений со стороны клиента (Redhat Decision Manager)

Я использую REST api для выполнения правил на сервере решений (Redhat Decision Manager 7.2) с использованием сеанса kie без сохранения состояния. В настоящее время я получаю количество сработавших правил, но я также хочу получить имена этих правил. Это возможно?

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"));

person kamilc    schedule 07.05.2020    source источник


Ответы (2)


Вы должны использовать AgendaEventListener, чтобы отслеживать выполняемые правила. Путем реализации org.kie.api.event.rule.AgendaEventListener, вы можете записать эти данные.

person Abhijit Humbe    schedule 07.05.2020
comment
Я выполняю правила на сервере решений, у меня есть только serverUrl, containerName и BatchExecutionCommand. У меня нет KieSession, поэтому я не могу делать kSession.addEventListener(new DefaultAgendaEventListener() { ...}. Можете ли вы объяснить, что я не знаю. - person kamilc; 07.05.2020
comment
Если вы используете Decision-server для выполнения правил, вам необходимо добавить настраиваемый класс AgendaListener в путь к классам файла kie-server.war и зарегистрировать прослушиватель в файле kie-deployment-descriptor.xml в теге eventListener. - person Abhijit Humbe; 07.05.2020
comment
Слушатель будет фиксировать детали на стороне сервера. Мы не можем получить подробную информацию о выполняемых правилах на стороне клиента. - person Abhijit Humbe; 07.05.2020

Чтобы узнать, какие правила срабатывают, я добавил столбец действий с настраиваемым кодом (фрагмент Action BRL), который записывает имя правила в одно из полей моего факта. Вы можете получить его от rule.name. Пример: myFact.logMyRuleName(rule.name)

person userp8975    schedule 23.11.2020