我正在使用Guvnor(JBoss BRMS)來管理我在JBoss EAP 5.3中部署的drools規則引擎。我已經改變Guvnor爲其RDBMS使用Oracle 11g實例。我使用Guvnor來生成一個新的repository.xml,並將其放入JBoss目錄的'bin'文件夾中。 Guvnor和Drools運行良好,似乎很高興能夠連接到Oracle 11g實例。更改JBoss BRMS(Drools)以使用Oracle 11g:無法構建包
然後我開始創建一個包並添加一條新規則。我添加的規則如下:
dialect "mvel"
rule "TimeToClearRule"
when
#conditions
then
#actions
end
我驗證了此規則,然後重新構建了包。一切正常!
但是,我接着在規則上面添加了一個函數,意圖在規則中使用它。規則更改爲以下內容:
dialect "mvel"
function double logNormalPdf(double mu, double sigma, double timeT) {
return 0.0;
}
rule "TimeToClearRule"
when
#conditions
then
#actions
end
我驗證了此規則並重新構建了包。然而,隨後出現了一個錯誤。它無法'保存項目'。在我的JBoss的日誌,顯示出以下錯誤(注:不是完整的堆棧跟蹤,只加了什麼,我相信是根本原因)
17:59:51,815 ERROR [BundleWriter] Error while storing blob. id=9d26c61c-4dde-4009-a518-1f226431aa80/{http://www.jboss.org/drools-repository/1.0}compiledPackage idx=0 size=4353
java.lang.IllegalStateException: Unable to insert index for string: compiledPackage
at org.apache.jackrabbit.core.persistence.pool.NGKDbNameIndex.insertString(NGKDbNameIndex.java:66)
at org.apache.jackrabbit.core.persistence.pool.DbNameIndex.stringToIndex(DbNameIndex.java:95)
at org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager$DbBlobStore.createId(BundleDbPersistenceManager.java:1334)
Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("DROOLS"."PM_WS_DEFAULT_NAMES"."ID")
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
當Drools的/的Guvnor正在使用默認的DBMS解決方案的規則驗證和建立良好。自從將DBMS移至Oracle 11g以來,該規則無法再被驗證並生成了該包。
我不知道爲什麼會發生這種情況。任何幫助提供將非常感激。
感謝
UPDATE權,我找到了我認爲這是問題。在上面的例子中,我發現有一些東西是我錯誤的原因。我正在使用'Math'函數(java.lang.Math),這似乎會導致上面顯示的錯誤。我創建的規則如下:
import java.lang.Math
dialect "mvel"
function double logNormalPdf(double mu, double sigma, double timeT) {
return Math.log(2);
}
rule "TimeToClearRule"
when
#conditions
then
#actions
end
能流口水/的Guvnor處理數學函數?如果不是,我該如何去使用它?
感謝
您是否嘗試導出repository.xml並導入它,而不是替換bin文件夾中的原始repository.xml? – uaarkoti
嗨jBug,我找不到導入存儲庫的選項,只有導出。 – ScreamingMage