`
MMSCAU
  • 浏览: 114308 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

基于Drools 规则引擎的信用卡申请系统<3> 之 后台代码

阅读更多

 

Beans设计,很简单都是基本的setter / getter方法

 

package com.chen.beans;

public class CardInfo {
 // 该类存放信用卡信息
 private String bankName;

 private int value;

 private User user;

 public String getBankName() {
  return bankName;
 }

 public void setBankName(String bankName) {
  this.bankName = bankName;
 }

 public User getUser() {
  return user;
 }

 public void setUser(User user) {
  this.user = user;
 }

 public int getValue() {
  return value;
 }

 public void setValue(int value) {
  this.value = value;
 }

}

package com.chen.beans;

public class User {
 
    private String username;
   
    private String degree;
   
    private String hasCar;
   
    private String hasHouse;
   
    private String hasCredit;
   
    private float salary;
   
    //是否通过
    private boolean approve=true;// 默认通过
   
    private CardInfo cardInfo;
   
   
 public String getDegree() {
  return degree;
 }

 public void setDegree(String degree) {
  this.degree = degree;
 }

 

 public String getHasCar() {
  return hasCar;
 }

 public void setHasCar(String hasCar) {
  this.hasCar = hasCar;
 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public boolean isApprove() {
  return approve;
 }

 public void setApprove(boolean approve) {
  this.approve = approve;
 }

 public CardInfo getCardInfo() {
  return cardInfo;
 }

 public void setCardInfo(CardInfo cardInfo) {
  this.cardInfo = cardInfo;
 }

 public String getHasCredit() {
  return hasCredit;
 }

 public void setHasCredit(String hasCredit) {
  this.hasCredit = hasCredit;
 }

 public String getHasHouse() {
  return hasHouse;
 }

 public void setHasHouse(String hasHouse) {
  this.hasHouse = hasHouse;
 }

 public float getSalary() {
  return salary;
 }

 public void setSalary(float salary) {
  this.salary = salary;
 }
}

 

Part II 使用Drools进行推理

 

package com.chen.drools;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.agent.RuleAgent;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;


public class WorkingMemoryHelper {
 private RuleBase ruleBase;

 private WorkingMemory workingMemory;

 public RuleBase getRuleBase(){
  
  //方法一 RuleAgent的部署方式,如果不行,再采取第一种方式
/*  RuleAgent agent=RuleAgent.newRuleAgent("/deploy2.properties"); //一个属性文件
  
  ruleBase=agent.getRuleBase();*/
  
  //方法选择二 package方法
  Reader resource=new InputStreamReader(WorkingMemoryHelper.class.getResourceAsStream("/rules.drl"));
  
  PackageBuilder builder=new PackageBuilder();
  try {
   builder.addPackageFromDrl(resource);
  } catch (DroolsParserException e) {

   e.printStackTrace();
  } catch (IOException e) {

   e.printStackTrace();
  }
 
  
  //第二个drl 开始
        resource=new InputStreamReader(WorkingMemoryHelper.class.getResourceAsStream("/payment.drl"));
  try {
   builder.addPackageFromDrl(resource);
  } catch (DroolsParserException e1) {
   
   e1.printStackTrace();
  } catch (IOException e1) {
   
   e1.printStackTrace();
  }
 
  //第二个drl结束
  
  //添加一个规则流
  //开始
  resource=new InputStreamReader(WorkingMemoryHelper.class.getResourceAsStream("/MyFlow.rfm"));
  builder.addRuleFlow(resource);
  //结束
  
  Package pkg=builder.getPackage();
  
  RuleBase ruleBase=RuleBaseFactory.newRuleBase();
  try {
   ruleBase.addPackage(pkg);
  } catch (Exception e) {
   // TODO 自动生成 catch 块
   e.printStackTrace();
  }
 
  
  return ruleBase;
 }

 public WorkingMemory getWorkingMemory()  {
  
  if(ruleBase==null)
  {
   ruleBase=getRuleBase();
  }
  workingMemory=ruleBase.newStatefulSession();
  
  return workingMemory;
 }

}

 

后台处理之:Struts 2,如下清单:

 

package com.chen.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.drools.WorkingMemory;

import com.chen.beans.CardInfo;
import com.chen.beans.User;
import com.chen.drools.WorkingMemoryHelper;
import com.opensymphony.xwork2.ActionSupport;

public class Apply extends ActionSupport {

 /**
  *
  */

 private boolean success;

 private String msg;

 private static final long serialVersionUID = 4042346926789559143L;

 public User user = new User();
 CardInfo card=new CardInfo();
 
 //定义工作引擎
 private WorkingMemory workingMemory;
 
 //Helper 方法二
 WorkingMemoryHelper wh=new WorkingMemoryHelper();
 
 //方法一
 //WMHelper hp=new WMHelper();

 public String execute() throws Exception {

  HttpServletRequest request = ServletActionContext.getRequest();
       
  //用户名:
  user.setUsername(request.getParameter("username"));

  //学历:
  user.setDegree(request.getParameter("degree"));
        //车子
  user.setHasCar(request.getParameter("hasCar"));
  //房子
  user.setHasHouse(request.getParameter("hasHouse"));
  
  //有信用卡
  user.setHasCredit(request.getParameter("hasCredit"));
  //收入
  user.setSalary(Float.parseFloat(request.getParameter("salary")));
  
    
  System.out.println(user.getUsername());
       
      
  //危险开始
  //取得workingMemory
  workingMemory=wh.getWorkingMemory();
  
  //将事实插入workingMemory
  workingMemory.insert(user);
  workingMemory.insert(card);
  
  //激活规则流
  workingMemory.startProcess("myflow");
  
  //激活规则
  workingMemory.fireAllRules();
  
  //关闭
  //workingMemory.clearAgenda();
  
  //危险结束
       
  //从规则引擎返回信息 判断是否申请成功
  
  //加入信用卡信息
  System.out.println("测试payment"+card.getBankName());
  
  if (user.isApprove()==true) {
   success = true;
   msg = user.getUsername()+"成功申请了"+card.getBankName()+card.getValue();
  } else {
   success = false;
   msg = "申请失败";

  }

  return this.SUCCESS;

 }

 public boolean isSuccess() {
  return success;
 }

 public void setSuccess(boolean success) {
  this.success = success;
 }

 public String getMsg() {
  return msg;
 }

 public void setMsg(String msg) {
  this.msg = msg;
 }
}

 

分享到:
评论

相关推荐

    Drools规则引擎介绍PPT及利用Drools实现的信用卡申请审批规则实例

    在信用卡申请审批的过程中,Drools 可以作为决策支持系统,处理各种复杂的审批规则。例如,它可以评估申请人的信用历史、收入水平、债务状况等多方面因素,根据预先设定的规则判断是否批准申请。这些规则可能包括: ...

    drools6.5规则引擎封装实例

    drools是中国大数据技术领域中广泛使用的规则引擎之一,特别是在决策管理和业务逻辑自动化方面。Drools 6.5是该框架的一个稳定版本,提供了强大的规则处理能力,支持复杂的业务规则编写、执行和管理。本实例将详细...

    Drools规则引擎从入门到精通

    Drools是一个强大的业务规则管理系统,它提供了业务规则引擎、Web创作工具(Drools Workbench)以及决策模型符号(DMN)的支持。作为一个开源项目,Drools使用Java编写,遵循Apache License 2.0,允许灵活管理和执行...

    从Drools规则引擎到风控反洗钱系统V0.2.3

    ### 从Drools规则引擎到风控反洗钱系统V0.2.3 #### Drools简介 **1.1 什么是规则引擎** 规则引擎是一种软件组件,它能够从应用程序中独立出来处理业务逻辑和决策制定。通过使用预定义的语义模块来编写这些决策...

    Drools规则引擎介绍.ppt

    以信用卡申请为例,我们可以通过Drools规则引擎实现如下功能: 1. **信息录入与合法性检查**:用户提交包含姓名、性别、年龄、学历、联系方式等个人信息的申请。Drools会依据预定义的规则(如检查学历与薪水)进行...

    drools文档教程-规则引擎文档

    下面是 Drools 规则引擎在在线申请信用卡业务场景中的应用。 问题引出现有一个在线申请信用卡的业务场景,用户需要录入个人信息,如姓名、性别、年龄、学历、电话、所在公司、职位、月收入、是否有房、是否有车、...

    Drools规则引擎使用demo

    Drools是一款强大的规则引擎,由Red Hat公司开发并维护,它主要用于实现业务规则的管理和执行。Drools提供了一种声明式的方式来定义业务规则,使得非技术人员也能理解和修改规则,从而降低了业务逻辑与代码的耦合度...

    基于Spring + Drools6.4规则引擎代码实例.

    ### 基于Spring + Drools 6.4规则引擎代码实例详解 #### 知识点一:Drools规则引擎介绍与应用背景 Drools是一款强大的业务规则管理系统(BRMS),它提供了核心的业务规则引擎(BRE)、Web作者和规则管理应用程序...

    Drools规则引擎样例系统

    在这个名为"Drools规则引擎样例系统"的项目中,我们可以深入学习如何利用Drools进行规则的定义、存储、管理和执行,以及如何与Java代码紧密结合,构建出高效运行的业务系统。 首先,让我们了解一下Drools的核心概念...

    规则引擎Drools入门实战案例

    信用卡申请 保险产品准入规则 规则引擎,全称为业务规则管理系统,英文名为BRMS(即Business Rule Management System)。规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务...

    Drools规则引擎从入门到精通源码

    从基础讲起,结合应用场景,由浅到深细化讲解drools规则引擎的的相关知识,并结合具体实例,演示功能的使用和注意事项。后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括...

    Drools 规则引擎的介绍及应用

    规则引擎是一种软件系统,用于执行基于预定义规则的决策逻辑。这些规则通常表示为业务规则,旨在模拟人类专家在解决特定问题时所遵循的逻辑过程。规则引擎的核心功能在于能够根据输入数据动态地选择和执行相应的规则...

    从Drools规则引擎到风控反洗钱系统v0.3.2.pdf

    从文档《从Drools规则引擎到风控反洗钱系统v0.3.2.pdf》中,我们可以提取到以下知识点: ### 规则引擎与Drools简介 1. **什么是规则引擎**:规则引擎是一种嵌入在应用程序中的组件,它允许业务决策逻辑从应用程序...

    Drools规则引擎手册.zip

    首先,Drools的基础是基于规则的推理系统,它采用领域特定语言(DSL)来编写规则,这些规则可以是简单的条件语句或复杂的逻辑表达式。DSL的使用使得业务专家无需深入编程即可理解和维护规则,大大提高了业务规则管理...

    基于Drools规则引擎的实例

    **基于Drools规则引擎的实例** Drools是一款强大的业务规则管理系统,它基于Java语言,主要用于实现复杂的业务逻辑和决策。Drools的核心是它的规则引擎,它能够执行基于事实的推理,允许开发者编写一系列的规则来...

    Drools规则引擎及教程

    Drools是一款强大的开源规则引擎,它基于Java平台,由JBOSS社区开发,主要用于实现业务规则的管理和执行。在企业应用中,Drools能够帮助开发者将复杂的业务逻辑以规则的形式分离出来,使得业务规则的修改和维护变得...

    Drools规则引擎介绍

    例如,当银行需要提高信用审查标准或调整信用额度分配策略时,只需更新对应的业务规则,而无需改动核心的申请系统。这种灵活性有助于企业更快地响应市场变化,降低运维成本。 总之,Drools 规则引擎通过分离业务...

    Drools4.0申请信用卡web例子

    【Drools4.0申请信用卡web例子】是一个基于规则引擎Drools 4.0的Web应用程序示例,它展示了如何将业务规则集成到Web应用程序中,以便于处理信用卡申请审批这样的复杂业务流程。Drools是一个强大的、开源的Java规则...

    springboot集成drools实现重新加载规则

    而Drools是一个强大的业务规则管理系统(BRMS),它允许开发者以声明式的方式定义业务规则,并在运行时执行这些规则。本篇文章将深入探讨如何在Spring Boot项目中集成Drools并实现规则的动态重载。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics