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…


发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注