[英]Using JavaCompiler with Classpath referencing jars within ear
[英]Referencing and deploying ILOG jrules jars within XOM of an IBM ODM rule
我正在使用 IBM ODM 上的級聯規則執行來實現一些邏輯。 我幾乎是在遵循文檔中的這些說明。 也就是說,我使用庫 class 編寫了一些從另一個規則集調用一個規則集的簡單邏輯,並引用了兩個 jar 文件: jrules-res-8.10.5.1-execution.jar
和jrules-res-8.10.5.1-session-java.jar
。 我從本地 ODM 安裝中獲取並在 XOM 項目的 eclipse via.classpath 中引用它們,如下所示:
<classpathentry kind="var" path="ILOG_BR_HOME/WEB-INF/lib/jrules-res-8.10.5.1-session-java.jar"/>
類路徑變量ILOG_BR_HOME
指向具有所需 jars 的本地文件夾。
文檔指出我需要從導出中排除兩個 jars,我確實這樣做了。 但是,當我嘗試將更新的規則集部署到 ODM 實例時,問題就出現了。 我導出了一個所有項目的存檔(xom 有 jar 個文件和更新的 boms)並通過決策中心的 web 接口導入。 導入成功,例如,可以通過 web 操作規則編輯器訪問新項目的語言化。 但是,我在部署時收到以下錯誤:
errorilog.rules.teamserver.brm.builder.IlrBuildException: While applying business to execution (B2X) model mapping
GBREX0033E: Cannot load execution class 'io.cascadingruletest.RulesetChildRunner' for translating business class 'io.cascadingruletest.RulesetChildRunner', got '[java.lang.NoClassDefFoundError: ilog.rules.res.session.config.IlrSessionFactoryConfig]'
GBREX0001E: Cannot find execution class 'ilog.rules.res.session.IlrSessionException' for translating business class 'ilog.rules.res.session.IlrSessionException'
GBREX0033E: Cannot load execution class 'io.cascadingruletest.contracts.ValueContext' for translating business class 'io.cascadingruletest.contracts.ValueContext', got '[java.lang.NoClassDefFoundError: ilog.rules.res.session.IlrSessionException]'
據我所知,這意味着引用的 jars 無法訪問部署。 我嘗試了多種部署方式,將 jars 直接放在 xom 檔案中,或者放在要導入的檔案的根目錄中,結果相同。 在嘗試查找有關在這種情況下應如何准確鏈接的文檔后,我不得不承認我很困惑並且不理解這里的一些原則:
一種。 Via.classpath 文件(參見我下面的示例或gh 示例)
b. via.rule項目文件:
<entries xsi:type="ilog.rules.studio.model.xom:SystemXOMPathEntry" name="jrules-teamserver.jar" url="file:C:/Program Files/IBM/ODM8104/teamserver/lib/jrules-teamserver.jar" exported="true"/>
取自這里
res-deploy-xom
任務的部署 ant 腳本中引用:<target name="runloanvalidation">
<res-deploy-xom
hostname="localhost"
portnumber="9080"
webapp="res"
userid="resAdmin"
password="resAdmin"
jarMajorVersion="false"
libName="person"
outputRulesetProperty="ruleset.managedxom.uris">
<xompath>
<fileset dir="hello">
<include name="*.jar"/>
</fileset>
</xompath>
</res-deploy-xom>
<echo message="Resulting property: ${ruleset.managedxom.uris}"/>
</target>
取自文檔。 我目前沒有用於部署的 ant 腳本,之前我一直在使用 eclipse 與決策中心同步或通過導出 zip 並在 ODM 實例上使用 web 接口導入它進行部署。
在此先感謝您的幫助!
PS 我正在使用 8.10.5.1 版本的 ODM 決策中心和 eclipse 作為帶有規則設計器插件的 IDE。
文檔中提到的RulesetChildRunner是一種有趣的級聯規則集執行方式。 但是,使用起來有點復雜。
如果您有一個簡單的用例並且可以處理自己的規則項目依賴項,我建議創建一個頂級規則項目來編排您要級聯的 2 個主要規則流的順序。
這比創建自定義代碼更易於管理。
如果您需要將參數從 decisionoperation1 傳遞到 decisionoperation2 規則集,您可以使用 bal 規則從規則集 1 的參數 (or_xom) 信息初始化 parameter_ruleset2。
希望這可以幫助,
最好
伊曼紐爾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.