ILOG JRules 和 WebSphere Process Server 集成概述4

<message-driven>

<ejb-name>IlrRuleExecutionEJB</ejb-name>

<ejb-class>ILOG.rules.bres.mdb.ejb.IlrRuleExecutionBean</ejb-class>

</message-driven>

<message-driven>

<ejb-name>IlrRuleExecutionTopicEJB</ejb-name>

<ejb-class>ILOG.rules.bres.mdb.ejb.IlrRuleExecutionBean</ejb-class>

</message-driven>

當 JMS 消息到達時,EJB 容器調用 MDB IlrRuleExecutionBean 或 IlrRuleExecutionTopicEJB 的 onMessage 方法。IlrRuleExecutionBean 或 IlrRuleExecutionTopicEJB 可以駐留在客戶機應用程序本地,也可以駐留在遠程。MDB 進而調用 XU 中運行的規則集。對規則引擎的實際調用委託給一個簡單的規則會話。

在規則引擎處理完成之後,MDB 負責發送響應消息(如果有的話)。它把結果發送到由 JMSReplyTo 消息頭指定的 JMS 響應目的地。

在 JRules 中,用於 WebSphere Application Server 的 MDB IlrRuleExecutionBean 和 IlrRuleExecutionTopicEJB 實現類打包在 jrules-res-mdb-WAS7.jar 中。

在使用 JMS 調用規則集時,需要把 jrules-res-mdb-WAS7.jar 打包在一個假的 EAR 文件中,把它部署到 XU 所在的 Process Server。在 JRules MDB 端,需要定義以下資源:

    配置以下 MQ 連接工廠:

o    JNDI 名稱為 jms/BRESQueueConnectionFactory 的隊列連接工廠。

o    JNDI 名稱為 jms/BRESTopicConnectionFactory 的主題連接工廠。

    配置以下隊列或主題定義:

o    為 JRules MDB 創建用於接收消息的隊列定義。我們使用 JNDI 名稱 jms/BRESQueueIn。

o    為 JRules MDB 創建用於響應消息的隊列定義。我們使用 JNDI 名稱 jms/BRESQueueOut。

    如果需要使用主題,需要定義相應的主題定義。

    配置消息監聽器端口或激活設置,從而在 jms/BRESQueueIn 隊列中有消息時激活 JRules MDB。

在客戶端,可以使用導入和 JMS 綁定把 JMS 消息發送到 JRules MDB,或從 JRules MDB 接收 JMS 消息。JRules MDB 期望 JMS 對象消息的有效載荷是一個 java.util.Map,而 Process Server 中的客戶機 SCA 應用程序需要一個業務對象。需要創建一個定製的 JMS 數據綁定,它把 java.util.Map 映射到 Process Server 中的業務對象表示。清單 4 說明如何使用定製的數據綁定在業務對象和 java.util.HashMap 之間建立映射。

清單 4. 在 JMS 導入中使用定製的數據綁定調用 JRules 的示例

public class CustomerApplicationDataBinding implements JMSDataBinding {

public int getMessageType() {

return JMSDataBinding.OBJECT_MESSAGE;

}

public void write(Message message) throws JMSException {

try {

ObjectMessage requestMessage = (ObjectMessage) message;

//Get the data object

DataObject customerApplicationSdo = getDataObject();

// Create the java.util.HashMap

HashMap inputParameters = new HashMap();

// CustApplicationObj is the custom object defined in the

parameters of rule application

// convertSDOToCustApplicationObj converts the incoming SDO to

CustApplicationObj

CustApplicationObj customerApplicationObj

=convertSDOToCustApplicationObj(customerApplicationSdo);

inputParameters.put(“CustomerApplicationObj”, customerApplicationObj);

// Set the payload of the JMS Object Message

requestMessage.setObject(inputParameters);

String rulesetPath = “/” + RULEAPP_NAME + “/” + RULESET_NAME_EMEARULE;

//Set the JMS message header properties.

requestMessage.setStringProperty(“ILOG_rules_bres_mdb_rulesetPath”,

rulesetPath);

requestMessage.setStringProperty(“ILOG_rules_bres_mdb_status”, “request”);

} catch (DataBindingException e) {

throw new JMSException(e.getLocalizedMessage());

}

}

public void read(Message message) throws JMSException {

//Get the payload of the JMS Object message

ObjectMessage responseMessage = (ObjectMessage) message;

HashMap parameters = (HashMap) responseMessage.getObject();

CustApplicationObj outCustomerApplicationObj =

(CustApplicationObj) parameters.get(“CustomerApplicationObj”));

// convertCustApplicationObjToSDO converts the rule application parameter to SDO

DataObject dobject = convertCustApplicationObjToSDO(outCustomerApplicationObj);

try {

// Set the data object

setDataObject(dobject);

} catch (DataBindingException e) {

throw new JMSException(e.getLocalizedMessage());

}

}

}

在 WebSphere Process Server 中監視 JRules 服務

在 Process Server 中,可以監視基於 CEI 的業務流程。所有啟用的 Common Base Event (CBE) 事件都發送到 CEI 服務器並存儲以供監視使用。可以使用 Process Server 附帶的 CBE 瀏覽器檢查在業務流程運行時生成的事件。還可以使用 WebSphere Business Monitor 監視指定的度量數據,比如業務流程的指標和 KPI。

ILOG JRules 中的規則服務也可以把 CBE 事件發送給 CEI 框架,這提供與 Process Server 一致的監視機制。這些 CBE 事件可以提供詳細、綜合的 JRules 服務審計跟蹤。

JRules 提供發送 CEI 事件的 API。為了簡化,JRules 提供用於與 Process Server 集成的 ILOG JRules CEI Event Source 組件。它包含的 CEIEventBOM 模塊定義 CEI 事件 BOM 並封裝發送 CEI 事件的 API。規則項目可以引用 CEIEventBOM 模塊並定義一個 ilog.connector.ibm.runtime.EventContainer 類型的變量,從而把 CEI 事件發送給 Process Server。示例見圖 22 和圖 23。

圖 22. 引用 CEIEventBOM 模塊以發送 CEI 事件

圖 23. 定義 EventContainer 類型的變量以發送 CEI 事件

然後,可以在需要發送 CEI 事件的地方添加代碼,見圖 24。

圖 24. 添加代碼以發送 CEI 事件

調用規則集之後,可以使用 CBE 瀏覽器檢查事件(圖 25)。在這裡可以看到規則調用的審計跟蹤,這提供觸發的規則和執行的規則流等有用的信息。

圖 25. 使用 CBE 瀏覽器瀏覽規則生成的事件

結束語

本文概述了如何集成 ILOG JRules 和 WebSphere Process Server。討論了如何使用不同的方法從業務流程調用規則服務,包括 POJO、EJB、Web 服務和 JMS/MQ。最後,討論了在 WebSphere Process Server 中如何通過 CEI 監視 JRules 服務。

以下文章點擊率最高

Loading…

     

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

發表評論

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