ILOG JRules 和 WebSphere Process Server 集成概述2

圖 7. 在 WebSphere Process Server 中把 XU 部署為資源適配器

    把執行管理 EAR 部署到 Process Server(圖 8)。執行管理 EAR 是一個與 J2EE 兼容的 JRules 管理應用程序,它提供一個管理控制台,可以對部署到 Rule Execution Server 中的所有規則應用程序進行部署、導航、配置和管理。可以在 JRulesInstallDir\executionserver\applicationservers\WebSphere7\ jrules-res-management-WAS7.ear 找到執行管理 EAR。

圖 8. 把執行管理 EAR 部署到 WebSphere Process Server

    配置 JRules 運行時的安全設置。JRules Execution Server 定義幾個安全角色以限制對它的 MBean 的訪問。WebSphere Application Server 提供安全基礎設施和機制以保護敏感的 JEE 資源和管理資源。為了保護對 JRules 的訪問,需要為 Process Server 啟用全局安全性(圖 9)。

圖 9. 為 WebSphere Process Server 啟用全局安全性

還需要為 JRules 定義三個用戶組(圖 10):

o    resAdministrators

o    resDeployers

o    resMonitors

    然後,需要定義每個用戶組的成員(圖 11):

o    resAdmin

o    resDeployer

o    resMonitor

    

圖 10. 在 WebSphere Process Server 中為 JRules 定義用戶組

圖 11. 在 WebSphere Process Server 中為 JRules 定義用戶

要想訪問 Rule Execution Server 模型的 MBean,應用程序必須有適當的安全憑證。因此,需要把 Execution Server 定義的安全角色映射到正確的用戶組(圖 12)。

圖 12. 映射 JRules Execution Server 的安全角色

現在,JRules 運行時的基本組件已經集成在 Process Server 中了。可以使用它們開發規則應用程序並部署到 Process Server 上運行的 JRules 中。業務流程可以通過多種綁定作為決策服務節點調用規則集。

在業務流程中調用業務規則

圖 13 給出 JRules 定義的調用模型。

圖 13. JRules 調用模型

根據 XOM(在規則應用程序中定義的執行對象模型),客戶機可以通過多種方法調用 Rule Execution Server 中部署的規則集,比如 POJO、EJB(遠程或本地)、JMS 等等。同時,JRules 還提供一個透明的決策服務,讓客戶機可以使用 SOAP/HTTP 通過 Web 服務訪問規則集。在本文中,JRules 的客戶機是 Process Server 中部署的業務流程。因此,不同的調用方法與 Process Server 中不同的 SCA 組件對應。表 1 總結不同的 JRules 調用方法。

表 1. WebSphere Process Server 調用 JRules 的方法

調用方法

SCA 組件

本地還是遠程

POJO

SCA POJO

只能是本地的

EJB

SCA POJO

本地和遠程

JMS

MQ JMS 綁定導入

本地和遠程

Web 服務

Web 服務綁定導入

本地和遠程

下面幾節詳細討論每種調用方法。

使用 POJO 會話調用規則服務

SCA POJO 調用的效率很高,因為它不需要對輸入和響應參數進行序列化和解序列化。但是,它的限制是只支持本地調用。這意味着 JRules Execution Server 必須在與 Process Server 相同的 JVM(發出調用的業務流程所在的 JVM)中運行。圖 14 顯示使用 SCA POJO 組件調用規則集的模型。

圖 14. 使用 SCA POJO 調用 JRules

在這個模型中,SCA POJO 組件調用 jrules-bres-session-WAS7.jar 提供的 API,這會調用 XU 以訪問規則集並把結果返回給 SCA POJO 組件。清單 1 顯示的 Java 片段使用 POJO 會話調用 JRules。

清單 1. 使用 SCA POJO 調用 JRules 的示例

Map inputParameters = new HashMap();

String strAMERICASPricing = serialize(AMERICASPricingSdo,

“http://AMERICAS_Pricing”, “AMERICAS_Pricing”);

inputParameters.put(“AMERICASPricing”, strAMERICASPricing);

//Get the session factory for a Java rulesession invocation

IlrSessionFactory sessionFactory = new IlrPOJOSessionFactory();

IlrSessionRequest request = sessionFactory.createRequest();

request.setRulesetPath(IlrPath.parsePath(rulesetPath));

request.getInputParameters().putAll(inputParameters);

//create a stateless rule session

IlrStatelessSession ruleSession = sessionFactory.createStatelessSession();

IlrSessionResponse result = ruleSession.execute(request);

Map outputParameters = result.getOutputParameters();

String strOutAMERICASPricing = (String) outputParameters.get

(“AMERICASPricing”);

DataObject response = createResponse(“http://com”,

“AMERICAS_Pricing_RuleProjectExecutionResult”);

response.set(“AMERICASPricing”, deserialize

(strOutAMERICASPricing,”AMERICAS_Pricing”));

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標註