gpt4 book ai didi

流口水-根据名称获取规则的内容?

转载 作者:行者123 更新时间:2023-12-05 06:45:46 29 4
gpt4 key购买 nike

我们有一个网络应用程序,它接受大量请求参数,然后调用 drools 规则。我有一个事件监听器来捕获触发的规则名称。但是,我希望有一个指向每个被触发的规则的链接,以指向规则的实际实现。这可能吗?

我是否必须解析 .drl 文件并构建规则名称到规则内容的映射?或在单独的文件名等中预处理每个规则名称等..?是否有任何 Drools API 给出了规则的名称,它给出了规则的内容?

欢迎任何意见。

谢谢和问候声音

最佳答案

对于 future 的人来说,下面的一段代码将获取规则内容。在 drools 7 上工作。不确定以前的版本。

public String getRuleContent(String ruleName, String packageName) {
Rule rule = getRule(ruleName,packageName)
.orElseThrow(() -> new RuntimeException("Rule with name: " + ruleName + " does not exist in package: " + packageName));

return new String(((ByteArrayResource) ((RuleImpl) rule).getResource()).getBytes());
}

public Optional<Rule> getRule(String ruleName, String packageName) {
log.info("Getting rule by name: {} from {} package.",ruleName, packageName);
KieBase kieBase = kieContainer.getKieBase();
Collection<KiePackage> kiePackages = kieBase.getKiePackages();
return kiePackages.stream()
.filter(kiePackage -> kiePackage.getName().equals(packageName))
.flatMap(kiePackage -> kiePackage.getRules().stream())
.filter(r -> r.getName().equals(ruleName))
.findFirst();

}

关于流口水-根据名称获取规则的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600158/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com