簡體   English   中英

在 IBM ODM 規則的 XOM 中引用和部署 ILOG jrules jars

[英]Referencing and deploying ILOG jrules jars within XOM of an IBM ODM rule

我正在使用 IBM ODM 上的級聯規則執行來實現一些邏輯。 我幾乎是在遵循文檔中的這些說明 也就是說,我使用庫 class 編寫了一些從另一個規則集調用一個規則集的簡單邏輯,並引用了兩個 jar 文件: jrules-res-8.10.5.1-execution.jarjrules-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 檔案中,或者放在要導入的檔案的根目錄中,結果相同。 在嘗試查找有關在這種情況下應如何准確鏈接的文檔后,我不得不承認我很困惑並且不理解這里的一些原則:

  1. jrules* jars 應該出現在 xom 的 zip 存檔中嗎? 或者它們已經是安裝的一部分並且應該簡單地正確引用? (我檢查了相同的 jars 我在本地也存在於我部署到的 ODM 的遠程實例中)或者也許它們應該單獨部署?
  2. 鏈接外部(和內部)庫以便在規則的 XOM 中調用它們的首選方法是什么? 查看文檔和 github 中的一些示例后,我遇到了幾種方法:
  • 一種。 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"/>

取自這里

  • c。在帶有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 接口導入它進行部署。

  • d. 通過添加庫引用按鈕使用 Rule Execution Server 控制台的資源管理器選項卡引用為外部 jars 和庫
  1. 如果 jrules jar 文件已經存在於 ODM 實例中並且應該簡單地正確引用,那么檢查相對路徑和列出所有可訪問庫的方法是什么? 我是否需要授予特定的權利和特權才能進行此類引用?

在此先感謝您的幫助!

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.

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