圖 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 定義的調用模型。
根據 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 服務綁定導入 |
本地和遠程 |
下面幾節詳細討論每種調用方法。
SCA POJO 調用的效率很高,因為它不需要對輸入和響應參數進行序列化和解序列化。但是,它的限制是只支持本地調用。這意味着 JRules Execution Server 必須在與 Process Server 相同的 JVM(發出調用的業務流程所在的 JVM)中運行。圖 14 顯示使用 SCA POJO 組件調用規則集的模型。
在這個模型中,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…