基于 Jboss Drools 规则引擎开发框架

介绍了一个基于Drools 3.0.*版本的规则引擎框架-bystruct,此框架包括事件注册器、事件分析引擎和风险处理系统三部分。事件注册器负责收集信息并发送事件,事件分析引擎使用Drools进行规则匹配,而风险处理系统则定义了风险模型及处理动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
1、框架概述
a)         CTU系统分为3部分:1、事件注册器。 2、事件分析引擎。 3、风险处理系统。
b)        事件注册器:收集服务器信息、事件触发人员信息、以及事件相关的数据,将这些数据组合成一个Event 。事件注册器负责将Event派送到事件分析引擎进行处理。
c)     事件分析引擎:采用Drools3.0.*版本作为规则引擎的核心。通过bread模块的支持,采用Lucene event数据源。实现大数据量查询相关的Event
d)    风险处理系统:通过定义风险模型(风险等级、风险描述、触发的处理动作)生成一个风险派送到风险处理系统进行相关的业务处理(目前只是在CTU Engine中处理,将来可以扩展一个Interceptor实现ESB架构的一个endpoint)。
应用服务器端(CTU client):
a)    事件注册器(业务层)EventRegister.java
public interface EventRegister {
     /**
      * 向事件库注册一条消息
      * @param event 要注册的事件
      * @return boolean 是否成功
      */
     public boolean register(Event event);
}
b)    事件注册器默认提供2种实现方式:
1、是JmsQueueEventRegister:采用Jms直接连接方式,该类是采用短连接方式(每发送一条消息都会创建连接),因此最好能够配合Jms JCA,让容器管理物理连接(关于JMS JCA的技术以及实现在下面将会解释)。
     2EventRouterRegistercommandDispatcher router list),采用路由方式,可以由多个commandDispatcher组合而成。
c)     提供发送失败存储的EventRegisterWrapper,该包装负责调用EventRegister进行发送,发送失败以后进行对象存储,直到重发成功。
 
a)    分析引擎,
1、        下面是分析引擎的总体预览图
2Drools:规则引擎核心开发包。
3FileObjectProvider:由多个FileManager负责管理文件。负责配置文件管理跟规则文件管理
默认实现有:
DefaultFileManager:普通的文件系统
ResourceLoaderFileManager:由ResourceLoaderService提供支持
3、BeanObjectProvider:由多种BeanObjectFactory以各种方式来生产bean。负责创建Beanbean生命周期的管理。
这些Bean可以标识为singletonLifecycleAble(如果为非singleton,则在引擎一次分析完成作为一次生命周期,如果是singleton则在配置重载的时候作为一次生命周期)
 
/**
 * bean 工厂
 */
public interface BeanObjectFactory {
 
     /**
      * Build a generic Java object of the given type.
      *
      * @param clazz the type of Object to build
      */
     public abstract Object buildBean(Class clazz) throws Exception;
 
     /**
      * Build a generic Java object of the given type.
      *
      * @param className the type of Object to build
      */
     public abstract Object buildBean(String className) throws Exception;
 
}
 
     默认实现:GenericBeanObjectFactory 普通的,根据Class直接实例化
  SpringBeanObjectFactory,由BeanFactoryService提供支持。
 
4、ReloadManager:负责重载可重载的item,只要类实现Reloadable,并且受ReloadManager管理,则reloadManager负责定期检查每个Reloadable是否需要reload。如果item需要reload,则reloadManager将调用reload方法重载配置等...….
    
     默认实现:DefaultReloadManager
     目前Reloadable实现类:
²   ConfigurationManager负责engine配置管理
²   RuleFiredAgendaEventListener:负责将触发的规则描述bean放入        ThreadLocalContext中,为生成risk风险模块提供数据,该类采用XStream来解析RuleDescription 的描述文件。
 
 
5、Engine Service配置
a)    可以模仿src/conf.test/services.xml的配置
b)    BeanFactoryService的实现类com.alibaba.ctu.engine.DefaultAutowireBeanFactoryService
c)     需要配置2ServiceBean
     autowireBeanFactoryService指向BeanFactoryService
    resourceLoaderService指向ResourceLoaderService
 
6、EngineConfiguration配置:
1、        Xml格式可以根据cut项目下面的engine/src/conf.test/Engine.dtd
2、    配置分成Risk(分析风险的规则引擎配置)、Event(分析事件的规则引擎配置)、interceptors(拦截器配置,供全局使用)、include(可包含另外一个配置)
3、    RiskEvent的配置解释:
a)   每种DomainObject都有各自的domainName。每个domainName都会找到配置文件中的(event/namerisk/name)相匹配的配置作为规则引擎的配置。
b)   他们都可以extends另外的类型一直的配置(主要是规则文件跟pulltool合并)。
c)   interceptor-stack他们有各自的拦截堆栈,该堆栈在规则引擎执行前后执行。在这儿可以对规则引擎的WorkingMemory、以及一些数据进行处理。
d)   Pulltool:将作为规则引擎的GlobalTool来使用。    对象由BeanObjectProvider负责产生。支持singletonLifecycleAble
e)   WorkingMemory配置:他们是构造DroolsWorkingMemory的主要配置。使用该领域需要对drools有一定的了解。
  
4、    interceptors配置解释
a)   Interceptor拦截在分析引擎分析前后。可对WorkingMemory进行操作。该 对象由BeanObjectProvider负责产生。支持singletonLifecycleAble
b)   RiskEvent提供拦截器堆栈(interceptor-stack)
 
5、    include配置解释:提供包含另外一个配置文件。方便管理配置。不用将所有的配置写在一个文件中,可以有条件地将他们归写在一个文件下面,然后有一个总文件来include这些文件。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值