IBM ODM规则服务集成的最佳实践
2015-03-11 17:08
169 查看
注:本文同时发布于http://decisionrule.com/zh/2015/03/rule-integration-best-practices/
企业IT架构中,我们通常会将规则引擎作为一个独立的服务,供企业中的不同应用消费,这也和当前一切皆服务的SOA思想吻合。那么问题来了,规则服务以什么形式部署呢?怎样和应用交互集成呢?Webservice? 好吧,这是一个标准答案,并且也是一个差不多正确的答案,但我们还有更多需要考虑的东西。
我曾在一个保险行业客户处看到这样一个设计:客户设计了一个webservice,用于定义核保的输入输出,然后定义了一个EJB服务来包装规则服务,供webservice调用,在该EJB的实现中,再调用ODM自带的EJB远程接口执行规则,关键是,这些服务全部部署在同一个应用服务器上。也许有历史原因,但显然这样繁琐的设计不是一个好的设计,对于性能,维护都将是一个挑战。你也许会问性能如何?客户告诉我大概一次核保交易调用的时间为1-2秒。我当时给他们的建议是,直接在Webservice中使用ODM的POJO方式来调用规则引擎,删除中间两层EJB,这样执行性能至少可以提高一个数量级。
在ODM中,产品分别提供了在JavaSE和JavaEE环境中的调用方式,使用都通过规则会话(Rule Session)API完成。
适用场景如下:
Java SE: 用于JavaSE环境或者 web-only容器. 这种规则会话使用Java SE 执行单元(eXecution Unit).
POJO: 用于Java EE 环境中的简单Java对象模型. 这种规则会话使用Java EE 执行单元(eXecution Unit).
EJB: 用于Java EE 环境中的 EJB. 这种规则会话使用Java EE 执行单元,可支持本地或远程访问.
MDB: 用于Java EE 环境中的异步执行. 这种规则会话使用Java EE 执行单元.
ODM也提供了自动生成的Webservice和Rest service,供有远程调用需要的应用使用。具体调用方式的使用,必须根据需求架构做出合理的选择。
例如,下图是某客户计价平台和规则引擎的集成设计,在批量场景下,使用了JavaSE方式,联机场景下,则使用了Webservice+POJO的模式。
一般而言,规则服务集成设计时的原则是:
本地调用优先于远程调用,
在必须支持远程调用的时候,自定义一个Webservice或者Restservice,并在内部通过POJO调用规则
尽量不使用EJB
批处理执行模式下,使用JavaSE方式执行,
追求极致性能的情况下,可考虑使用嵌入式规则引擎(IlrContext)
企业IT架构中,我们通常会将规则引擎作为一个独立的服务,供企业中的不同应用消费,这也和当前一切皆服务的SOA思想吻合。那么问题来了,规则服务以什么形式部署呢?怎样和应用交互集成呢?Webservice? 好吧,这是一个标准答案,并且也是一个差不多正确的答案,但我们还有更多需要考虑的东西。
我曾在一个保险行业客户处看到这样一个设计:客户设计了一个webservice,用于定义核保的输入输出,然后定义了一个EJB服务来包装规则服务,供webservice调用,在该EJB的实现中,再调用ODM自带的EJB远程接口执行规则,关键是,这些服务全部部署在同一个应用服务器上。也许有历史原因,但显然这样繁琐的设计不是一个好的设计,对于性能,维护都将是一个挑战。你也许会问性能如何?客户告诉我大概一次核保交易调用的时间为1-2秒。我当时给他们的建议是,直接在Webservice中使用ODM的POJO方式来调用规则引擎,删除中间两层EJB,这样执行性能至少可以提高一个数量级。
在ODM中,产品分别提供了在JavaSE和JavaEE环境中的调用方式,使用都通过规则会话(Rule Session)API完成。
适用场景如下:
Java SE: 用于JavaSE环境或者 web-only容器. 这种规则会话使用Java SE 执行单元(eXecution Unit).
POJO: 用于Java EE 环境中的简单Java对象模型. 这种规则会话使用Java EE 执行单元(eXecution Unit).
EJB: 用于Java EE 环境中的 EJB. 这种规则会话使用Java EE 执行单元,可支持本地或远程访问.
MDB: 用于Java EE 环境中的异步执行. 这种规则会话使用Java EE 执行单元.
ODM也提供了自动生成的Webservice和Rest service,供有远程调用需要的应用使用。具体调用方式的使用,必须根据需求架构做出合理的选择。
例如,下图是某客户计价平台和规则引擎的集成设计,在批量场景下,使用了JavaSE方式,联机场景下,则使用了Webservice+POJO的模式。
一般而言,规则服务集成设计时的原则是:
本地调用优先于远程调用,
在必须支持远程调用的时候,自定义一个Webservice或者Restservice,并在内部通过POJO调用规则
尽量不使用EJB
批处理执行模式下,使用JavaSE方式执行,
追求极致性能的情况下,可考虑使用嵌入式规则引擎(IlrContext)
相关文章推荐
- IBM ODM规则服务集成的最佳实践
- Sring核心技术与最佳实践- 9.2 集成任务调度服务
- Spring最佳实践-9.1 集成邮件服务
- Spring最佳实践-9.1 集成邮件服务
- Spring最佳实践- 9.3 集成Java消息服务
- MSDN Webcast - 微软SDLC最佳实践系列课程(3)- 报表服务
- 2008中国服务外包企业最佳实践五十强
- Web 服务最佳实践
- SOA 中的服务接口设计最佳实践,第 2 部分:使用服务向服务使用者应用程序报告错误
- IBM SOA 解决方案设计师认证考试准备,第 1 部分:SOA 最佳实践
- 将 Flex 集成到 Java EE 应用程序的最佳实践
- MSDN Webcast - 微软SDLC最佳实践系列课程(3)- 报表服务
- IBM 认证 SOA 解决方案设计师认证考试准备,第 1 部分: SOA 最佳实践
- 将 Flex 集成到 Java EE 应用程序的最佳实践
- 将 Flex 集成到 Java EE 应用程序的最佳实践
- 将 Flex 集成到 Java EE 应用程序的最佳实践
- IBM WebSphere Portal6 最佳项目实践
- 软件开发管理中的最佳实践——日构建和持续集成
- IBM Rational 开发团队的变更管理最佳实践
- 让我们一起成为中国IT服务管理最佳实践的见证人!