gpt4 book ai didi

java - 是否可以在 JBoss Drools 的同一程序中引用 .drl 和 .xls 中的规则?

转载 作者:行者123 更新时间:2023-12-02 10:21:45 24 4
gpt4 key购买 nike

我正在将 Drools 视为规则应用程序用例的可能性。此时,我可以让 Drools 独立地引用 .xls 文件和 .drl 文件中的规则集。但是,就我而言,有时规则并不以 .xls 文件形式存在,而是在 .drl 文件中进行编程。因此,我想知道在同一程序执行中是否可以根据某些输入条件使用这两个文件?例如,如果 State == "GA" 则使用 .xls,否则如果State == "FL" 然后使用 .drl

我已经阅读了不同的 KieConcepts 并在较高层次上理解了它们,我相信我必须将每个规则文件创建为单独的 KieContainer,然后将它们加载到基于 definitions given to each here. 的单个 KieBase 中。然而,当谈到这一步时,我对如何实现这一点感到困惑。我已经创建了两个单独的实例,我是否能够使用 KieBase 将这两个实例简单地组合到一个程序中?

.xls 实现

public static void main (String[] args)   {
try {
KieServices ks = KieServices.Factory.get();
// add excel sheet to knowledge base
Resource dt = ResourceFactory.newClassPathResource("dtables/StateInterest.xls");
KieFileSystem kieFileSystem = ks.newKieFileSystem().write(dt);

KieBuilder kieBuilder = ks.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();

KieRepository kieRepository = ks.getRepository();

ReleaseId krDefaultReleaseID = kieRepository.getDefaultReleaseId();
KieContainer kieContainer = ks.newKieContainer(krDefaultReleaseID);

KieSession kSession = kieContainer.newKieSession();

// go !
StateInterestRequest stateInterestRequest = new StateInterestRequest();
stateInterestRequest.setPolicyIssueState("GA");
stateInterestRequest.setPolicyIssueDate("10/2018");

kSession.insert(stateInterestRequest);
kSession.fireAllRules();

.drl 实现

public static final void main(String[] args) {
try {
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");

// go !
StateInterestRequest stateInterestRequest = new StateInterestRequest();
stateInterestRequest.setPolicyIssueState("FL");
stateInterestRequest.setPolicyIssueDate("2008-03-04");

kSession.insert(stateInterestRequest);
kSession.fireAllRules();

作为附录,如果可能的话,这可以通过最终组合程序的 main() 来完成,还是在规则本身内完成?

最佳答案

是的,您可以将两种类型的文件合并到一个项目中。您可以以 xls 格式编写规则,这将与状态“GA”匹配,而在 DRL 文件中编写的规则将与其他状态匹配。我建议首先阅读 Drools 文档,这样您就可以了解规则、KJars 等的基本概念[1]。我认为本章会对您有所帮助 [2]。

[1] https://docs.jboss.org/drools/release/7.16.0.Final/drools-docs/html_single/index.html
[2]https://docs.jboss.org/drools/release/7.16.0.Final/drools-docs/html_single/index.html#_builddeployutilizeandrunsection

关于java - 是否可以在 JBoss Drools 的同一程序中引用 .drl 和 .xls 中的规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54295133/

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