我有設置,我使用Drools Spring KnowledgeAgent從外部路徑加載規則。此時路徑中包含DRL文件,因此規則即時編譯。出於某種原因,我無法通過規則來檢測我的事實,無論他們在哪裏宣佈。我用下面的方法,並不斷獲取ClassNotFoundException
/NoClassDefFoundException
如何獲得Drools KnowledgeAgent檢測事實?
- 外部事實模型,即Java類包含的事實聲明的同DRL內
- 事實作爲規則
- 外部DRL文件
我需要得到所有上述案件的工作。
爲KnowledgeAgent我的春天配置是一樣
<!-- For scanning the changes -->
<drools:resource-change-scanner id="scanner" interval="10" />
<drools:kagent id="ruleAgent" kbase="ruleKBase" new-instance="true" >
<drools:resources>
<drools:resource source="file://external/path/rules/>
</drools:resources>
</drools:kagent>
<!-- For starting the resource scanner -->
<bean id="starter" class="study.ResourceChangeScannerStarter" depends-on="ruleAgent" />
包含我的日間行車燈規則和事實都在路徑//external/path/rules
。如果我刪除了所有對事實的引用並且有一個沒有LHS條件的規則,我可以在控制檯上獲得簡單的打印輸出,因此我可以驗證規則是否正確加載。
我正在使用Drools 5.5.0
這是一個Windows文件共享到一個叫做'external'的遠程服務器嗎? – Steve
btw - 如果您的事實模型在Java類中,那麼它需要位於類路徑中。 – Steve
@Steve,在這種情況下,它是一個Windows文件共享。當知識代理從我的應用程序中引用規則並即時完成編譯時,我會假設應用程序內的事實模型將位於類路徑中。此外,即使在同一個DRL文件中聲明瞭事實,我也會得到相同的異常。但是我會說你的假設是正確的,給出的例外是classpath中找不到的類的一個問題。 – kaskelotti