0

我正在使用 REST api 使用无状态 kie 会话在决策服务器(Redhat Decision Manager 7.2)上执行规则。我目前正在获取触发规则的数量,但我也想获取这些规则的名称。这可能吗?

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

2 回答 2

0

要知道触发了哪些规则,我添加了一个带有自定义代码(Action BRL 片段)的操作列,该列将规则名称写入我的事实字段之一。你可以从rule.name. 例子:myFact.logMyRuleName(rule.name)

于 2020-11-23T21:08:33.187 回答
0

您必须使用 AgendaEventListener 来跟踪执行的规则。通过实现org.kie.api.event.rule.AgendaEventListener接口,您可以捕获这些细节。

于 2020-05-07T13:25:21.660 回答