簡體   English   中英

升級到 Optaplanner 8/Drools:newKieSession 返回 null

[英]Upgrade to Optaplanner 8/Drools: newKieSession returns null

我正在嘗試從 Optaplanner 7 升級到 Optaplanner 8。我在我的項目中使用流口水。 由於我需要fireAllRules方法,因此我需要訪問kieSession 在升級之前,將kmodule.xml放在 META-INF 文件夾中並執行以下行很容易:

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
kieSession = kContainer.newKieSession("ksession-rules");
...
...
kieSession.fireAllRules()

升級后kContainer.newKieSession("ksession-rules"); 返回空值。

升級前的 Kmodule:

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="drl.eval" packages="drl.eval">
        <ksession name="ksession-rules" />
    </kbase>
</kmodule>

更改了 kmodule.xml:

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <kbase name="drl.eval" packages="drl.eval">
        <ksession name="ksession-rules" />
    </kbase>
</kmodule>

我嘗試了很多事情來讓它發揮作用,但我沒有成功。 有人知道我做錯了什么嗎?

這永遠不會奏效,如果您能夠在 OP 7 中執行此操作,那么您不應該這樣做。 KieSession 是 OptaPlanner 的內部細節,你不能訪問它 - 事實上,如果你這樣做,你可以破壞求解器。 我們無法支持您的用例。 (老實說,這是我第一次看到有人這樣做,我很驚訝。)

附帶說明一下,從 OptaPlanner 8.23.0.Final 開始, 不推薦使用分數 DRL 支持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM