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

基于Drools 规则引擎的信用卡申请系统<4> 之 Drools 实现业务规则

IDE 
阅读更多

设计规则流如下:

先执行:check,然后执行payment

规则流设计图

 

对应的规则流rmf文件如下: 【使用IDE生成,Drools4.0.7 的可读性,不如Drools 5】

 

<org.drools.ruleflow.core.impl.RuleFlowProcessImpl id="1">
  <nodes id="2">
    <entry>
      <long>1</long>
      <org.drools.ruleflow.core.impl.StartNodeImpl id="3">
        <id>1</id>
        <name>Start</name>
        <incomingConnections id="4"/>
        <outgoingConnections id="5">
          <org.drools.ruleflow.core.impl.ConnectionImpl id="6">
            <type>1</type>
            <from class="org.drools.ruleflow.core.impl.StartNodeImpl" reference="3"/>
            <to class="org.drools.ruleflow.core.impl.RuleSetNodeImpl" id="7">
              <ruleFlowGroup>check</ruleFlowGroup>
              <id>3</id>
              <name>check</name>
              <incomingConnections id="8">
                <org.drools.ruleflow.core.impl.ConnectionImpl reference="6"/>
              </incomingConnections>
              <outgoingConnections id="9">
                <org.drools.ruleflow.core.impl.ConnectionImpl id="10">
                  <type>1</type>
                  <from class="org.drools.ruleflow.core.impl.RuleSetNodeImpl" reference="7"/>
                  <to class="org.drools.ruleflow.core.impl.RuleSetNodeImpl" id="11">
                    <ruleFlowGroup>payment</ruleFlowGroup>
                    <id>4</id>
                    <name>payment</name>
                    <incomingConnections id="12">
                      <org.drools.ruleflow.core.impl.ConnectionImpl reference="10"/>
                    </incomingConnections>
                    <outgoingConnections id="13">
                      <org.drools.ruleflow.core.impl.ConnectionImpl id="14">
                        <type>1</type>
                        <from class="org.drools.ruleflow.core.impl.RuleSetNodeImpl" reference="11"/>
                        <to class="org.drools.ruleflow.core.impl.EndNodeImpl" id="15">
                          <id>2</id>
                          <name>End</name>
                          <incomingConnections id="16">
                            <org.drools.ruleflow.core.impl.ConnectionImpl reference="14"/>
                          </incomingConnections>
                          <outgoingConnections id="17"/>
                        </to>
                      </org.drools.ruleflow.core.impl.ConnectionImpl>
                    </outgoingConnections>
                  </to>
                </org.drools.ruleflow.core.impl.ConnectionImpl>
              </outgoingConnections>
            </to>
          </org.drools.ruleflow.core.impl.ConnectionImpl>
        </outgoingConnections>
      </org.drools.ruleflow.core.impl.StartNodeImpl>
    </entry>
    <entry>
      <long>2</long>
      <org.drools.ruleflow.core.impl.EndNodeImpl reference="15"/>
    </entry>
    <entry>
      <long>3</long>
      <org.drools.ruleflow.core.impl.RuleSetNodeImpl reference="7"/>
    </entry>
    <entry>
      <long>4</long>
      <org.drools.ruleflow.core.impl.RuleSetNodeImpl reference="11"/>
    </entry>
  </nodes>
  <variables id="18"/>
  <lastNodeId>4</lastNodeId>
  <id>myflow</id>
  <name>MyFlow</name>
  <version>1.0</version>
  <type>RuleFlow</type>
  <packageName>com.chen.drools</packageName>
</org.drools.ruleflow.core.impl.RuleFlowProcessImpl>

 

 

规则文件如下:

 

清单一:rules.drl


package com.chen.drools

#list any import classes here.
import com.chen.beans.User;


#declare any global variables here

 

#如果申请人既没房也没车,同时学历为大专及以下,并且月薪少于5000,那么不通过。
rule "No1"
 ruleflow-group "check"
 when
  #conditions
  $user: User(hasHouse =="无", hasCar =="无", degree =="大专以下", salary <5000)
 then
  #actions
  $user.setApprove(false);
end

#如果申请人既没房也没车,同时学历为大专或本科,并且月薪少于3000,那么不通过。

rule "No2"
 #include attributes such as "salience" here...
 ruleflow-group "check"
 when
  #conditions
  $user: User( hasHouse =="无", hasCar =="无", salary <3000,( degree =="大专" || degree =="本科"))
 then
  #actions
  $user.setApprove(false);
  
end

#如果申请人既没房也没车,同时学历为本科以上,并且月薪少于2000,同时之前没有信用卡的,那么不通过。

rule "No3"
    ruleflow-group "check"
 when
  $user:User( hasHouse =="无", hasCar =="无", degree =="本科以上", salary <2000)
 then
  $user.setApprove(false);
end

 

 

清单二: payment.drl
package com.chen.drools

#list any import classes here.
import com.chen.beans.CardInfo;
import com.chen.beans.User;
//如果申请人有房有车,或者月收入在20000以上,那么发放的信用卡信用额度为15000

rule "R1"
 ruleflow-group "payment"
 when
  $user: User( salary >20000 || (hasCar =="有" && hasHouse =="有") )
  $card: CardInfo(  )
 then
  
  $user.setCardInfo($card);
  $card.setValue(15000);
  $card.setBankName("中银广州");
  $card.setUser($user);
  #creatPayment(15000,$user);
  #输出测试
end

//如果申请人没房没车,但月收入在10000~20000之间,那么发放的信用卡信用额度为6000

rule "R2"
 #include attributes such as "salience" here...
 ruleflow-group"payment"
 when
  #conditions
  $user: User( hasHouse =="无" , hasCar =="无" , salary >10000 , salary <20000 )
  $card: CardInfo(  )
 then
  #actions
  $user.setCardInfo($card);
  $card.setValue(6000);
  $card.setBankName("中银广州2");
  $card.setUser($user);
  #creatPayment(6000,$user);
end

//如果申请人没房没车,月收入在10000以下,那么发放的信用额度为3000。

rule "R3"
    ruleflow-group"payment"
 when
  $user : User( hasHouse =="无", hasCar =="无" , salary <10000 )
  $card: CardInfo(  )
 then
     $user.setCardInfo($card);
  $card.setValue(3000);
  $card.setBankName("中银广州3");
  $card.setUser($user);
end

//如果申请人有房没车或者是没房但有车,月收入在10000以下,那么发放的信用额度为5000。

rule "R4"
    ruleflow-group"payment"
 when
    $user : User( ( hasHouse =="有" && hasCar =="无") || (hasHouse =="无" && hasCar =="有") && salary <10000 )
    $card: CardInfo(  )
 then
  $user.setCardInfo($card);
  $card.setValue(5000);
  $card.setBankName("中银广州4");
  $card.setUser($user);
end

// 如果申请人有房没车或者是没房但有车,月收入在10000~2000之间,那么发放的信用额度为8000。

rule "R5"
    ruleflow-group"payment"
 when
  $user: User( (hasHouse =="有" && hasCar =="无") || (hasHouse =="无" && hasCar =="有") && salary <= 20000 , salary >=10000 )
  $card: CardInfo(  )
 then
  $user.setCardInfo($card);
  $card.setValue(8000);
  $card.setBankName("中银广州5");
  $card.setUser($user);
end

 

 

  • 大小: 8.6 KB
分享到:
评论
2 楼 chenlinux 2012-10-18  
博主,我们现在也要用drools,能否提供一个完整的例子(包括java文件、规则文件、dsl文件等)供我们学习,万分感谢。email:chenlinux0768@sina.com
1 楼 benbenbaozai 2011-08-02  
你这个规则流图是怎么生成的?

相关推荐

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

    **Drools规则引擎介绍** Drools 是一个开源的业务规则管理系统(BRMS),它基于Java平台,属于JBoss企业级中间件的一部分。Drools 提供了一个强大的规则引擎,用于执行业务规则,使复杂逻辑得以简洁地表达。它的...

    Drools规则引擎介绍.ppt

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

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

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

    Drools规则引擎介绍

    以信用卡申请流程为例,Drools 可以用于实现如下功能: 1. **用户信息合法性检查**:在用户提交申请后,Drools 可以根据预设的规则(如检查学历与薪水的对应关系,限制信用卡数量等)对用户信息进行审核,只有满足...

    Drools4.0申请信用卡web例子

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

    drools规则引擎开发实例

    drools规则引擎是一款强大的业务规则管理系统,用于在Java应用程序中执行复杂的业务决策。它基于一个称为"马尔科夫决策过程"的理论模型,能够帮助开发者编写和管理一系列的规则,这些规则可以在运行时根据输入数据...

    Drools规则引擎介绍.pptx

    Drools规则引擎是一款强大的业务规则管理系统,由Jboss公司开发并开源。它基于Rete算法,旨在将业务规则从应用程序代码中分离出来,实现业务逻辑与业务规则的解耦。这样,业务规则可以集中管理,并且能够独立于应用...

    规则引擎drools讲义,讲解与实例demo

    总结来说,Drools 作为规则引擎,能够高效地处理信用卡申请业务中的复杂逻辑,提高代码质量,并且使得业务规则的管理变得更加灵活。通过学习和使用 Drools,开发人员可以更专注于业务逻辑本身,而不是纠结于如何实现...

    card_apply_drools.rar_applycreditcardde_drools_drools rule table

    Drools 是JBOSS公司开发的一个开源规则引擎,它基于BRMS(Business Rule Management System,业务规则管理系统)的概念,能够帮助开发者将业务规则与核心应用程序逻辑分离,从而使得业务规则的修改和维护变得更加...

    规则引擎的介绍

    通过Drools规则引擎的集成,信用卡申请流程变得更加自动化和高效,同时保证了决策的一致性和公正性,提升了用户体验和企业运营效率。 综上所述,规则引擎作为一项重要的IT技术,对于提升企业业务灵活性和响应速度...

    Drool规则引擎在实现业务逻辑中的应用

    ### Drools规则引擎在实现业务逻辑中的应用 #### 引言 随着企业级Java应用的日益复杂,业务逻辑的管理变得越来越困难。传统的做法是在Java代码中直接编写业务规则,这种方式虽然直观,但在应对需求变更时显得...

    drools的PPT介绍与工程实例

    通过 Drools 的信用卡审批实例,我们可以看到,规则引擎可以极大地简化复杂业务逻辑的实现,使得业务规则的维护和调整变得更加灵活和直观。无论是对信用卡审批,还是其他领域如金融风控、医疗诊断等,Drools 都能...

    Drools7技术指南

    Drools是JBoss社区推出的一款强大且灵活的规则引擎,主要用于实现基于业务规则的应用程序。在本文中,我们将深入探讨Drools 7的核心特性、开发流程、部署策略以及如何将其应用于风险管理场景。 1. **Drools概述** ...

    jbpm5.4信用卡发放流程源代码

    在这个案例中,jbpm5.4被用来模拟和自动化信用卡申请的审批过程,展示了如何通过代码控制业务流程的流转。 drools是另一个关键组件,它是一个规则引擎,用于处理基于规则的决策逻辑。在信用卡发放流程中,drools...

    DroolsExtDemo

    Drools是一款开源的业务规则管理系统(BRMS),它基于Java,支持复杂的业务规则处理。在DroolsExtDemo中,Drools被用来定义和执行信用卡申请的审批规则。这些规则可能包括申请人的信用评分、收入水平、债务状况等多...

Global site tag (gtag.js) - Google Analytics