drools6.3+spring+Drools Workbench+activemq搭建风险控制系统

           根据业务的需求,从2015年10月份开始模式搭建一个风险控制系统,用于对实时交易的实时控制和非实时监控。当时上网搜索了一下,发现一个不错的框架drools,然后耗费了三个月,终于把drools引入到风控系统中。期间一路遇到的问题无数,如果是新手去搭建drools,估计至少折腾1-2个月。系统最终实现了在一个业务管控台中根据业务配置业务规则,生成决策表和规则的drl文件,然后通过drools workbench控制台构建项目和部署jar包方式发布规则。风控系统通过drools的maven机制,通过maven 的gav方式间隔一定时间扫描kie-workbench,最终实现动态更新drl规则,实现更新业务规则不用停机的目标。

 系统采用spring4.2.4、drools6.3、activemq、drools workbench实现。业务逻辑如下:实时交易系统通过MQ异步或同步方式,发送实时交易数据到风控系统。风控系统调用drools框架,判断交易数据是否满足风控监管要求。如果发现,则在drl规则文件中调用相应的spring服务,记录违反风控的案例。

其中的难点有:

       1、通过maven pom.xml引入drools的jar包

       2、风控系统动态刷新drools风控规则、风控参数;

       3、风控系统中的规则drl能够调用spring的服务,调用数据库层完成记录功能;

       4、drools决策表的使用;

       5、决策表转为drl文件;

       6、drl文件打成jar包实现动态部署,风控系统更新规则不需要重启;

       7、部署kie-workbench,drools workbench使用;

       8 、drools与spring集成;

       9、eclipse中安装drools插件;

      10、xsi:schemaLocation引入的麻烦。

       11、spring无法启动,报java.lang.NoSuchMethodError: com.google.inject.Binder.bindListener


第一章:关于drools


 drools官网:http://drools.org/

从这里可以下载最新的drools版本和drools workbench。我在这里只下载了drools workbench。实际是把drools workbench当成一个drl规则的编辑、管理、maven版本服务器。

       drools的相关jar包通过在项目中的pom引入:

        <dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>knowledge-api</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-spring</artifactId>
<version>6.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-ci</artifactId>
<version>6.3.0.Final</version>
</dependency>

通过pom引入drools的jar包,本来是一件很简单的事情,但就是下载不下来,折腾了几天,更换了JRE中jce等安全的jar包,最终下载下来。

但放上jenkins服务器后,始终还是不能下载,于是拼命google,最终发现老外们的谈话中说到一个maven的bug

果断让公司的同事更新了jenkins对应的nexus公司私服对应maven版本,最终解决了该问题。

原因是maven某个版本在解析依赖路径时,不支持jboss的某种文件方式。该问题也折腾了很久。

第二章:安装eclipse的drools插件。

这个插件在eclipse的直接更新即可。自行搜网上的攻略,这个问题不太。安装完这个插件后,就可以创建drools项目、debug drl程序、编辑drl文件等。

貌似还可以创建决策表之类,这个没有试。

第三章:编写drl文件。

drools drl文件是一种类java语言,基本规则是:

package com.test.risk.epay.vo.risk;
//generated from Decision Table
import com.test.risk.xxx.RiskRecordService;
import com.test.common.utils.RiskEcoUtils;
global RiskRecordService riskRecordService;

// rule values at C13, header at C8
rule "Epay Base Risk Rule_13"
when
$epayCommonEcoRiskVo:EpayCommonEcoRiskVo(passwd_error_cnt == "5", open_cancel_cnt == "5", pay_passwd_mod_cnt == "5", find_passwd_cnt == "5", bank_card_mod_cnt == "5", phoneNo_mod_cnt == "5")

then
riskRecordService.insertKieRecord($epayCommonEcoRiskVo,"base_00000001");
end

需要定义跟java类似的package,import 类,还有可以定义global的参数。其中EpayCommonEcoRiskVo是放到package com.test.risk.epay.vo.risk的类。

第四章:安装drools workbench

从drools官网下载tomcat7版本的Drools Workbench,实际就是一个war包,需要严格按照里面的readme的要求,配置好tomcat才可以运行起来。我尝试安装在本地的windows环境,但总是不成功,最后找了一台linux主机安装好了。具体步骤:通过maven可以下载相关的jar包,然后扔到tomcat的lib目录。需要按要求修改tomcat的一些配置。readme没有要求修改h2中sa的默认密码,但我多次尝试后,发现必须设置一个密码。可以通过命令:

java -cp h2-1.3.161.jar org.h2.tools.Shell -url jdbc:h2:~/jbpm2 -user sa -password 123456创建sa的账号密码,然后修改resources.properties中的sa的密码。

特别注意一点:由于资源有限,我尝试把风控系统与drools workbench部署到同一台机器,这个会出现问题。理由是:风控系统需要依赖本地的maven服务,需要配置~/.m2目录下的settting.xml,需要把setting.xml的url指向drools workbench的机器。但如果drools workbench启动时,它也会检查本地的setting.xml,而这个setting.xml需要指向自身,最终会导致drools workbench无法启动。因此:drools workbench必须部署在一台远程机器上。~/.m2/setting.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xs

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
金融风控系统是一种用于识别和减轻金融风险的系统,它结合了Spring Boot和Drools等技术。 Spring Boot是一个用于快速构建Java应用程序的开发框架。它提供了许多便利的功能和特性,例如自动化配置、内嵌Web服务器和简化的部署。使用Spring Boot可以快速搭建开发环境,并且减少了开发工作的复杂性。 Drools是一个基于规则引擎的业务规则管理系统。它采用了规则引擎的思想,通过将业务规则和逻辑抽象为规则文件,实现了业务逻辑的高效管理和灵活变更。Drools支持基于规则的决策,并提供了强大的规则引擎、规则文件的编辑和维护等功能。 金融风控系统结合了Spring Boot和Drools的优点,具有以下特点: 1. 灵活性:通过Drools规则引擎,金融风控系统可以灵活定义和管理业务规则。这意味着系统可以根据实际需求进行快速的变更和调整。 2. 高效性:Spring Boot提供了高效的开发框架和运行环境,使得金融风控系统可以快速响应并处理大量的金融交易数据。 3. 可扩展性:金融风控系统基于Spring Boot和Drools构建,具有良好的可扩展性。可以根据实际需求进行扩展和定制,以满足不同的业务需求。 4. 安全性:金融风控系统对于金融交易数据的安全性有着严格的要求。通过Spring Boot框架的安全机制和Drools规则引擎的权限控制,可以保证系统的数据安全性和访问权限。 总之,金融风控系统利用Spring Boot和Drools等技术,实现了金融风险的准确识别和有效控制。它具有灵活性、高效性、可扩展性和安全性等特点,为金融机构提供了一个可靠的风险管理解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值