`
啸笑天
  • 浏览: 3460083 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

Drools与Spring集成 登录测试

阅读更多

Drools5.2.0.Final与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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
 		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
 		http://www.springframework.org/schema/context   
		 http://www.springframework.org/schema/context/spring-context-3.0.xsd   
 		http://www.springframework.org/schema/tx   
 		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
 		http://www.springframework.org/schema/aop    
		 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 
     <import resource="classpath:com/jsptpd/rjy/zyj/drools/beans-drools.xml"/>
</beans>
 

beans-drools.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:drools="http://drools.org/schema/drools-spring" 
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
                           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
                           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <drools:kbase id="kbase1">
     <drools:resources>
          <!--不是<drools:resource type="DRL" source="classpath:com/jsptpd/rjy/zyj/service/Login.drl"/> -->
         <drools:resource type="DRL" source="classpath:Login.drl"/>
     </drools:resources>
  </drools:kbase>

  <drools:ksession id="ksession1" type="stateful" kbase="kbase1"/>

   <bean id="vip" class="com.jsptpd.rjy.zyj.pojo.Vip" />
   <bean id="loginService" class="com.jsptpd.rjy.zyj.service.LoginServiceImpl" >
        <property name="vip" ref="vip" />
   </bean>
</beans>
 

LoginTest.java

package com.jsptpd.rjy.zyj.junit;

import org.drools.runtime.StatefulKnowledgeSession;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jsptpd.rjy.zyj.service.LoginServiceImpl;

public class LoginTest {
	@Test
	public void testLogin(){
	   	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( "beans.xml" );
    	LoginServiceImpl loginServiceImpl= (LoginServiceImpl) context.getBean( "loginService" );
    	StatefulKnowledgeSession kstateless = (StatefulKnowledgeSession) context.getBean( "ksession1" );
    	loginServiceImpl.checkLogin(kstateless);
    	System.out.println("aa");
	}
}
 

LoginServiceImpl.java

package com.jsptpd.rjy.zyj.service;

import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.jsptpd.rjy.zyj.pojo.Vip;

public class LoginServiceImpl {
        private Vip vip;

		public Vip getVip() {
			return vip;
		}

		public void setVip(Vip vip) {
			this.vip = vip;
		}
           
		public void checkLogin(StatefulKnowledgeSession kstateless ){
			System.out.println("s");
			kstateless.insert(vip);
			kstateless.fireAllRules();
			kstateless.dispose();
			System.out.println("e");
		}
         
		public static boolean checkDB(String name,String password){
			//实际可以到数据库匹配
			return name.trim().equals("jack")&&password.trim().equals("123");
		}
		
}
 

Login.drl

#created on: 2011-10-24
package com.jsptpd.rjy.zyj.service

#list any import classes here.
import com.jsptpd.rjy.zyj.pojo.Vip;
import java.io.Console;
import java.util.Scanner;
import com.jsptpd.rjy.zyj.service.LoginServiceImpl

#declare any global variables here




rule "vip初次登录"
    salience 100
    when
        $vip:Vip((name==null||name=="")&&
                 (password==null||password=="") )
    then
        String tempName;
    	String tempPassword;
    	Console console=System.console();
    	Scanner scanner = new Scanner(System.in);
    	System.out.print("请输入用户名: ");	
		tempName=(console!=null?console.readLine():scanner.nextLine());
		System.out.print("请输入密码: ");
		tempPassword=(console!=null?new String(console.readPassword()):scanner.nextLine());
        $vip.setName(tempName.trim());
        $vip.setPassword(tempPassword.trim());
        update($vip);
end

rule "没有输入密码"
    salience  90
    when
       $vip:Vip((name!=null&&name!="")&&
                 (password==null||password==""),$name:name)
    then
    	String tempPassword="";
    	Console console=System.console();
    	Scanner scanner = new Scanner(System.in);
		System.out.print("请输入密码: ");
		tempPassword=(console!=null?new String(console.readPassword()):scanner.nextLine());
        $vip.setPassword(tempPassword.trim());
        update($vip);

end


rule "没有输入用户名"
    salience  90
    when
       $vip:Vip((name==null||name=="")&&
                 (password!=null&&password!=""),$password:password )
    then
        String tempName="";
    	Scanner scanner = new Scanner(System.in);
    	System.out.print("请输入用户名: ");	
		tempName=scanner.nextLine();
        $vip.setName(tempName.trim());
        update($vip);

end


rule "输入正确的用户名和密码"
    salience  80
    when
       $vip:Vip((name!=null&&name!=""),
                 (password!=null&&password!=""),LoginServiceImpl.checkDB(name,password) )
    then
        System.out.print(" 欢迎 !!!"+$vip.getName());	

end

rule "输入错误的用户名和密码"
    salience  80
    when
       $vip:Vip((name!=null&&name!=""),
                 (password!=null&&password!=""),!LoginServiceImpl.checkDB(name,password) )
    then
        System.out.print(" 输入错误用户名或密码,请重新输入 !!!\n");	
        $vip.setName("");
        $vip.setPassword("");
        update($vip);
end

 

 

 

 

 

 

 

 

  • 大小: 30.7 KB
分享到:
评论
11 楼 thetazhou 2016-02-29  
完全跑不起来啊。求大神指点QQ:407028460
10 楼 zylucky 2016-01-26  
yxk790302 写道
onlyor 写道
到处都是错误

将这个 org.drools.runtime 全部修改成为org.kie.internal.runtime 这个就没有错误了我的是基于6.0的 。


你好,能把换成6.0的源码传一份吗,谢谢。。421756439@qq.com
9 楼 晨光流影 2015-10-25  
楼主你好,最近在研究drools,在做spring和drools整合的时候遇到一些问题,希望加个Q3208945136指导一下,不胜感激
8 楼 higherzjm 2015-05-18  
正在研究spring跟drools的整合方案,兄弟,方便的话加个QQ(353263668)交流下啊
7 楼 wusiyi 2015-04-21  
Eclipse8.5运行出错
原因:少了三个jar包:spring.jar, commons-logging.jar, drools-spring-5.5.0.Final.jar
6 楼 wanye8086 2015-01-08  
6.0.1跑的很好
5 楼 j77201613 2014-10-15  
你这个例子不知道怎么跑 是在跑不起来
4 楼 j77201613 2014-10-15  
你好 最近我也在做drools和spring的整合,遇到了些问题,方便的话 能否加个QQ跟你请教下问题 77201613
十分感谢
3 楼 yxk790302 2014-03-13  
onlyor 写道
到处都是错误

将这个 org.drools.runtime 全部修改成为org.kie.internal.runtime 这个就没有错误了我的是基于6.0的 。
2 楼 onlyor 2014-02-26  
到处都是错误
1 楼 ageha67 2012-04-27  
请教一下,我在Myeclipse8.5下做drools5.3+spring2.5.6进行集成,在启动tomcat的时候报以下错误,不知道怎么解决?
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'drools:kbase'.

我已经在MyEclipse8.5上配置了XML Catalog为本地的,可是还是报错,不知道楼主有没有处理过?

相关推荐

    drools6.4+spring集成

    drools6.4+spring集成是一项将业务规则引擎Drools与Spring框架相结合的技术实践,旨在利用Drools的强大规则处理能力,结合Spring的灵活应用管理,构建高效、可维护的业务系统。在这个项目实例中,我们将深入探讨如何...

    drools7.5.0和spring 4.3.12集成示例

    3. **可测试性**:Spring 提供了优秀的单元测试支持,我们可以方便地测试与 drools 集成的业务逻辑。 4. **易于维护**:由于 drools 的规则独立于业务代码,更改规则无需重新编译整个项目,降低了维护成本。 总的来...

    drools5.2final与spring3集成测试

    此包主要测试drools5.2与spring整合,drools可调用数据库参数 环境准备,mysql/postgres 用到的表及数据见db.sql 修改hibernate.properties对应的参数 运行测试: com/jview/test/testMapping.java ...

    drools集成springboot demo

    将drools与SpringBoot集成,可以让我们在微服务环境中方便地管理和执行业务规则。 在"drools集成springboot demo"项目中,我们首先需要了解如何配置drools和SpringBoot的整合。这通常涉及到以下几个步骤: 1. **...

    Drools+Spring环境构建

    通过以上步骤,你可以成功地构建一个Drools与Spring集成的环境,并开始利用规则流技术来管理复杂的业务逻辑。不断学习和实践,你将能够掌握更高级的Drools特性,如规则流、决策表、规则模板等,从而提升你的业务解决...

    spring boot 集成 websocket 与 drools 的实例

    在本文中,我们将深入探讨如何将Spring Boot与WebSocket和Drools集成,以构建一个能够实时更新前端数据并根据预定义规则执行业务逻辑的应用。首先,让我们分别了解这三个技术: **Spring Boot** Spring Boot是...

    Drools+Eclipse+Spring

    6. **源码分析**:可能涉及到Drools和Spring集成的具体代码示例,帮助读者理解如何在实际项目中实现这一集成。 7. **最佳实践**:分享关于如何有效利用Drools和Spring协同工作的经验,如规则的组织结构、错误处理和...

    drools-distribution-7.9.0.Final&spring;-drools-demo

    在版本 7.9.0.Final 中,Drools 提供了对复杂业务逻辑的高效处理能力,并且与流行的 Spring 框架无缝集成,使得业务规则的管理和执行更加灵活。"drools-distribution-7.9.0.Final&spring-drools-demo" 是一个综合...

    Drools7 + Springboot2 动态更新规则

    在本文中,我们将深入探讨如何将Drools 7与Spring Boot 2集成,实现动态更新规则的功能。Drools是一款强大的业务规则管理系统,而Spring Boot是Java领域广泛使用的微服务开发框架。通过结合这两者,我们可以构建一个...

    spring-boot-drools.zip

    - 在Spring Boot应用中,可以创建单元测试或集成测试来验证Drools规则的正确性。 - 使用Drools Workbench,一个可视化的规则编辑器和测试平台,可以更直观地创建、编辑和测试规则。 6. **应用场景** - 信用评分...

    springboot-drools

    综上,"springboot-drools"项目为学习和实践Spring Boot与Drools的集成提供了一个很好的起点,可以帮助开发者了解如何在现代Java应用中实现智能决策和业务逻辑自动化。对于那些需要处理复杂业务逻辑和规则变更的系统...

    Drools5规则引擎开发教程

    9. **Drools与Spring集成**:介绍如何将Drools与Spring框架结合,实现规则服务的灵活部署。 10. **测试与调试**:讲解如何对Drools规则进行单元测试和调试,确保规则的正确性。 阅读《Drools5规则引擎开发教程》...

    bluesky.cn-spring-boot-drools7-demo-master_Springbootdrools7_dro

    【标题】"bluesky.cn-spring-boot-drools7-demo-master_Springbootdrools7_dro" 提供了一个基于Spring Boot与Drools 7的示例项目,旨在帮助开发者理解和应用规则引擎Drools在Spring Boot环境中的集成。 【描述】"这...

    drools6的demo

    这个压缩包很可能是包含了一个使用Spring框架集成Drools 6的演示项目。项目中可能包含以下内容: - 一个`pom.xml`文件,用于管理依赖。 - `src/main/resources`目录下的DRL规则文件。 - Spring配置文件,定义了...

    drools实现demo

    在第二个demo中,Drools被集成到SpringBoot应用中,可能涉及了Spring的Bean管理和依赖注入。这使得Drools规则可以在服务启动时自动加载,或者在运行时动态调整。例如,可能会有一个`KieContainer`实例作为Spring ...

    Drools_Fusion_用户指南_中文

    - **测试与调试**:利用Drools提供的测试工具,如Drools Workbench,进行规则验证和性能测试。 通过深入学习《Drools Fusion 用户指南》中文版,开发者能够掌握这个强大的工具,从而构建出智能的、能够适应快速变化...

    drools 7.1中文文档pdf完整版本

    Drools整合方面,文档可能包含了如何将Drools集成到不同的环境和框架中,例如通过CDI(上下文依赖注入)集成到应用程序中,以及与Spring框架的整合。同时,也可能介绍了Drools与Android平台、Apache Camel等技术的...

    springdrools.rar

    Spring Drools是一个集成Drools规则引擎到Spring框架的示例项目。这个压缩包文件"springdrools.rar"很可能是包含了一个完整的配置...通过对该项目的学习和实践,开发者可以更好地理解和掌握Drools与Spring的集成技巧。

    Drools使用手册

    Drools 可轻松与Spring、Hibernate等框架集成,方便在现有的Java应用中使用。 综上,Drools 使用手册提供了全面的指导,帮助开发者理解和掌握如何利用Drools 创建、管理和执行业务规则,提升业务逻辑的灵活性和可...

Global site tag (gtag.js) - Google Analytics