zoukankan      html  css  js  c++  java
  • Drools5集成Spring3

      在drools5.2,有一个jar包:drools-spring-5.2.0.Final.jar,其中定义了在spring中应用的drools的扩展。通过这些扩展,可以直接在spring的配置文件中,配置knowledgebase、session等bean,从而在spring配置的程序中直接应用。drools-spring-5.2.0.Final.jar在droolsjbpm-integration-distribution-5.2.0.Final\binaries文件夹下。

    登录例子部分代码:


    beans.xml

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
     4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
     5     xmlns:p="http://www.springframework.org/schema/p"  
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans     
     7         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
     8         http://www.springframework.org/schema/context     
     9          http://www.springframework.org/schema/context/spring-context-3.0.xsd     
    10         http://www.springframework.org/schema/tx     
    11         http://www.springframework.org/schema/tx/spring-tx-3.0.xsd     
    12         http://www.springframework.org/schema/aop      
    13          http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">   
    14      <import resource="classpath:com/jsptpd/rjy/zyj/drools/beans-drools.xml"/>  
    15 </beans>  

    beans-drools.xml

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  
     3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     4        xmlns:drools="http://drools.org/schema/drools-spring"   
     5        xmlns:camel="http://camel.apache.org/schema/spring"  
     6        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
     7                            http://drools.org/schema/drools-spring http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-container/drools-spring/src/main/resources/org/drools/container/spring/drools-spring-1.0.0.xsd  
     8                            http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">  
     9     
    10   <drools:kbase id="kbase1">  
    11      <drools:resources>  
    12           <!--不是<drools:resource type="DRL" source="classpath:com/jsptpd/rjy/zyj/service/Login.drl"/> -->  
    13          <drools:resource type="DRL" source="classpath:Login.drl"/>  
    14      </drools:resources>  
    15   </drools:kbase>  
    16     
    17   <drools:ksession id="ksession1" type="stateful" kbase="kbase1"/>  
    18     
    19    <bean id="vip" class="com.jsptpd.rjy.zyj.pojo.Vip" />  
    20    <bean id="loginService" class="com.jsptpd.rjy.zyj.service.LoginServiceImpl" >  
    21         <property name="vip" ref="vip" />  
    22    </bean>  
    23 </beans>  

      

    LoginTest.java

     1 package com.jsptpd.rjy.zyj.junit;  
     2     
     3 import org.drools.runtime.StatefulKnowledgeSession;  
     4 import org.junit.Test;  
     5 import org.springframework.context.support.ClassPathXmlApplicationContext;  
     6     
     7 import com.jsptpd.rjy.zyj.service.LoginServiceImpl;  
     8     
     9 public class LoginTest {  
    10     @Test  
    11     public void testLogin(){  
    12         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "beans.xml" );  
    13         LoginServiceImpl loginServiceImpl= (LoginServiceImpl) context.getBean( "loginService" );  
    14         StatefulKnowledgeSession kstateless = (StatefulKnowledgeSession) context.getBean( "ksession1" );  
    15         loginServiceImpl.checkLogin(kstateless);  
    16         System.out.println("aa");  
    17     }  
    18 }  

       

    LoginServiceImpl.java

     1 package com.jsptpd.rjy.zyj.service;  
     2     
     3 import org.drools.runtime.StatefulKnowledgeSession;  
     4 import org.drools.runtime.StatelessKnowledgeSession;  
     5 import org.springframework.context.support.ClassPathXmlApplicationContext;  
     6     
     7 import com.jsptpd.rjy.zyj.pojo.Vip;  
     8     
     9 public class LoginServiceImpl {  
    10         private Vip vip;  
    11     
    12         public Vip getVip() {  
    13             return vip;  
    14         }  
    15     
    16         public void setVip(Vip vip) {  
    17             this.vip = vip;  
    18         }  
    19                
    20         public void checkLogin(StatefulKnowledgeSession kstateless ){  
    21             System.out.println("s");  
    22             kstateless.insert(vip);  
    23             kstateless.fireAllRules();  
    24             kstateless.dispose();  
    25             System.out.println("e");  
    26         }  
    27              
    28         public static boolean checkDB(String name,String password){  
    29             //实际可以到数据库匹配  
    30             return name.trim().equals("jack")&&password.trim().equals("123");  
    31         }  
    32             
    33 }  

       

    Login.drl

     1 #created on: 2011-10-24  
     2 package com.jsptpd.rjy.zyj.service  
     3     
     4 #list any import classes here.  
     5 import com.jsptpd.rjy.zyj.pojo.Vip;  
     6 import java.io.Console;  
     7 import java.util.Scanner;  
     8 import com.jsptpd.rjy.zyj.service.LoginServiceImpl  
     9     
    10 #declare any global variables here  
    11     
    12     
    13     
    14     
    15 rule "vip初次登录"  
    16     salience 100  
    17     when  
    18         $vip:Vip((name==null||name=="")&&  
    19                  (password==null||password=="") )  
    20     then  
    21         String tempName;  
    22         String tempPassword;  
    23         Console console=System.console();  
    24         Scanner scanner = new Scanner(System.in);  
    25         System.out.print("请输入用户名: ");     
    26         tempName=(console!=null?console.readLine():scanner.nextLine());  
    27         System.out.print("请输入密码: ");  
    28         tempPassword=(console!=null?new String(console.readPassword()):scanner.nextLine());  
    29         $vip.setName(tempName.trim());  
    30         $vip.setPassword(tempPassword.trim());  
    31         update($vip);  
    32 end  
    33     
    34 rule "没有输入密码"  
    35     salience  90  
    36     when  
    37        $vip:Vip((name!=null&&name!="")&&  
    38                  (password==null||password==""),$name:name)  
    39     then  
    40         String tempPassword="";  
    41         Console console=System.console();  
    42         Scanner scanner = new Scanner(System.in);  
    43         System.out.print("请输入密码: ");  
    44         tempPassword=(console!=null?new String(console.readPassword()):scanner.nextLine());  
    45         $vip.setPassword(tempPassword.trim());  
    46         update($vip);  
    47     
    48 end  
    49     
    50     
    51 rule "没有输入用户名"  
    52     salience  90  
    53     when  
    54        $vip:Vip((name==null||name=="")&&  
    55                  (password!=null&&password!=""),$password:password )  
    56     then  
    57         String tempName="";  
    58         Scanner scanner = new Scanner(System.in);  
    59         System.out.print("请输入用户名: ");     
    60         tempName=scanner.nextLine();  
    61         $vip.setName(tempName.trim());  
    62         update($vip);  
    63     
    64 end  
    65     
    66     
    67 rule "输入正确的用户名和密码"  
    68     salience  80  
    69     when  
    70        $vip:Vip((name!=null&&name!=""),  
    71                  (password!=null&&password!=""),LoginServiceImpl.checkDB(name,password) )  
    72     then  
    73         System.out.print(" 欢迎 !!!"+$vip.getName());   
    74     
    75 end  
    76     
    77 rule "输入错误的用户名和密码"  
    78     salience  80  
    79     when  
    80        $vip:Vip((name!=null&&name!=""),  
    81                  (password!=null&&password!=""),!LoginServiceImpl.checkDB(name,password) )  
    82     then  
    83         System.out.print(" 输入错误用户名或密码,请重新输入 !!!\n");      
    84         $vip.setName("");  
    85         $vip.setPassword("");  
    86         update($vip);  
    87 end  


     

  • 相关阅读:
    多叉树
    PowerDesigner设置集锦(2)
    Delphi应用程序在命令行下带参数执行返回命令行提示的问题
    不允许在 '*******' 上使用扩展属性,或对象不存在
    仓库管理系统开发完成
    动态创建Frame窗体(根据类名,除T以外的字母)
    Access中的常用TSQL
    批量删除同类文件(带通配符)
    判断Access数据库中的表或查询是否存在的SQL
    序列化FastReport,重要提示少走弯路
  • 原文地址:https://www.cnblogs.com/ibook360/p/2615675.html
Copyright © 2011-2022 走看看