`
zuimeitulip
  • 浏览: 59808 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

spring整合规则

 
阅读更多

开发环境
IDE intellij idea 12
grails-1.3.7

一、安装插件
grails install-plugin drools-gorm
 
二、加入drools-spring-5.2.0.Final.jar,drools-grid-impl-5.2.0.Final.jar

三、代码

1.conf/spring/resources.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" 
      xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 <import resource="drools.xml" />
 </beans>

2.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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-2.5.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">
   <drools:kbase id="kBaseHelloWorld">
       <drools:resources>   
   <!--不是<drools:resource type="DRL" source="classpath:com/jsptpd/rjy/zyj/service/Login.drl"/> -->
           <drools:resource type="DRL" source="classpath:drools/HelloWorld.drl"/>
        </drools:resources>
    </drools:kbase>
    <!--不能用这个,这样是单例,并发有问题-->
    <!--<drools:ksession id="kSessionHelloWorld" type="stateful" kbase="kBaseHelloWorld"/>-->
    <bean id="droolsSpringDemo" class="com.drools.demo.spring.DroolsSpringDemo">
        <property name="kBaseHelloWorld" ref="kBaseHelloWorld" />
    </bean>
</beans>

 3.DroolsSpringDemo
 package com.drools.demo.spring
 import com.drools.demo.main.Message
 import org.drools.runtime.StatefulKnowledgeSession
 class DroolsSpringDemo { 
    def kBaseHelloWorld
    def helloWorld(){
      new Thread(new Runnable() {
            void run() {
                while (true){
                     Thread.sleep(100)
                     run()
                 }
            }
         }) .start()
      
      new Thread(new Runnable() {
            void run() {
                while (true){
                     Thread.sleep(76)
                     run()
                   }
                }
           }) .start()
   
     new Thread(new Runnable() {
             void run() {
                while (true){             
                    Thread.sleep(43)
                       run()
                     }
               }	 
       }) .start()
        while (true);
    }
 
    private run() {
      StatefulKnowledgeSession kstateful = kBaseHelloWorld.newStatefulKnowledgeSession()
      Message message = new Message();
      message.setMessage("Hello World");
      message.setStatus(Message.HELLO);
      kstateful.insert(message);
      kstateful.fireAllRules();  
      kstateful.dispose();
    }}

 

4.测试
class DemoDroolsSpringTest extends GroovyTestCase{
    def droolsSpringDemo  
    public void testSomething() {
        droolsSpringDemo.helloWorld()
     }
}
HelloWorld.drl文件内容
package com.drools.demoimport com.drools.demo.main.Message; 
   rule "Hello World"
   dialect "mvel"  
when
   m : Message( status == Message.HELLO, message : message )
then
     System.out.println( message );
modify ( m ) {
     message = "Goodbyte cruel world",
     status = Message.GOODBYE };
     System.out.println( message );
 end
 rule "Good Bye"
 dialect "java" 
 when   Message( status == Message.GOODBYE, message : message )
 then   System.out.println( message );
 end
                
分享到:
评论

相关推荐

    基于Spring的规则引擎

    - **集成Spring框架**:使用Spring框架的IoC容器管理规则模型的对象创建和依赖注入,确保规则模型的独立性和可重用性。 - **设计规则执行器**:设计一个规则执行器组件,它负责接收业务请求,调用相应的规则模型,并...

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在压缩包文件`spring_gateway_security_webflux`中,可能包含了示例代码或配置文件,用于演示如何在Spring Cloud Gateway中集成Spring Security,实现统一登录认证鉴权。这些资源可以帮助开发者更快地理解和实践上述...

    drools6.4+spring集成

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

    spring整合Mybatis

    本文将深入探讨如何进行"Spring整合Mybatis"的基础搭建,以及涉及到的相关技术点。 首先,Spring框架是一个开源的应用程序框架,它简化了Java EE应用的开发,提供了依赖注入(DI)和面向切面编程(AOP)等功能。在...

    spring整合rabbitmq需要的jar包(spring版本4.2.0)

    在"spring整合rabbitmq需要的jar包(spring版本4.2.0)"中,提到了几个核心的库文件,它们分别是: 1. **spring-rabbit-1.5.1.RELEASE.jar**:这是Spring对RabbitMQ的官方支持模块,它提供了与RabbitMQ集成的API和...

    规则引擎drools与spring整合

    ** Drools 规则引擎与 Spring 整合详解 ** Drools 是一个开源的、基于Java的业务规则管理系统(BRMS),它提供了一个规则引擎,用于在应用程序中执行业务规则。Spring 框架是Java开发中最常用的应用框架,它简化了...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - Spring还提供了对其他库的集成,如JDBC、JMS、JTA等,以及对其他框架如Hibernate、Struts2的整合支持。 2. **Hibernate框架**: - Hibernate是一个对象关系映射(Object-Relational Mapping,ORM)框架,它简化...

    SpringMybatisSpringMvc整合包

    Spring、Mybatis和Spring MVC是Java开发中常用的三大框架,它们各自负责不同的职责,并通过合理的集成,构建出高效、灵活的Web应用。本整合包包含了这三个框架的核心组件和依赖,适用于学习、测试或快速搭建项目。 ...

    servlet与spring整合例子

    【Servlet与Spring整合详解】 在Java Web开发中,Servlet与Spring框架的整合是常见的实践,尤其是在构建企业级应用时。Spring作为一个强大的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)容器...

    Shiro和Spring整合 这个资源真的可运行

    提供的资源“Shiro和Spring整合完全可运行”应该是一个包含完整配置和示例代码的项目。通过这个实例,你可以了解如何设置 Realm,定义权限和角色,以及如何在控制器和视图层实现登录、权限控制等功能。通过实际运行...

    Spring Boot整合SpringDataJPA

    本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,实现高效且简洁的数据持久化。 首先,Spring Boot整合Spring Data JPA的基础是引入相关的依赖。在`pom.xml`或`build.gradle`文件中,我们需要添加...

    在Web项目中集成Spring

    在Web项目中集成Spring是一个常见的开发实践,Spring框架以其强大的依赖注入、面向切面编程以及丰富的功能模块,极大地简化了Java Web应用的开发。本文将深入探讨如何在Web项目中集成Spring,包括Spring MVC的使用、...

    spring 与 servlet整合

    5. **数据访问集成**:Spring支持多种数据访问技术,包括JDBC、Hibernate、MyBatis等,提供统一的API进行数据操作。 **Servlet的角色** 1. **HTTP服务器端接口**:Servlet是Java EE平台中用于接收和处理HTTP请求的...

    Quartz与Spring整合练习源代码

    将Quartz与Spring整合,可以方便地管理和控制定时任务,同时利用Spring的依赖注入和管理功能,提高代码的可维护性和可测试性。 Quartz的核心概念包括Job、Trigger和Scheduler。Job是实际需要执行的任务,Trigger是...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    6. 控制事务:Spring的声明式事务管理可以在配置文件中定义事务规则,使得在业务处理过程中,一旦发生异常,所有更改都将自动回滚,保证数据的一致性。 通过以上步骤,我们可以构建出一个稳定、高效的企业级应用。...

    struts+habernate+spring整合实例源代码

    在“struts+habernate+spring整合实例”中,这三个框架协同工作,实现了高效、灵活的业务逻辑处理。具体步骤可能包括: 1. **配置环境**:首先,需要在项目中引入这三个框架的库,并配置相关的XML文件,如struts-...

    Spring集成SpringSecurity依赖包

    在Spring MVC项目中集成Spring Security,可以实现用户认证、权限控制等功能,大大增强了应用的安全性。 首先,让我们了解一下Spring Security的核心组件和概念: 1. **Authentication(认证)**:验证用户身份的...

    SpringMVC集成SpringSecurity

    2. **集成过程**:在SpringMVC项目中集成SpringSecurity,首先需要在pom.xml文件中引入相应的依赖,接着配置SpringSecurity的XML配置文件,定义安全规则、用户认证方式等。 3. **默认账户和密码**:“admin,admin...

    spring整合shiro

    Spring 和 Apache Shiro 的整合是企业级应用中常见的安全框架集成方式,主要用于实现用户认证、授权和会话管理等功能。Spring 提供了强大的依赖注入和面向切面编程能力,而Shiro则以其轻量级、易用性在权限管理领域...

    Spring整合JMS(四)——事务管理

    在Spring整合JMS的过程中,我们通常会使用`DefaultMessageListenerContainer`或`SimpleMessageListenerContainer`类来消费消息。这些容器提供了与JMS提供者(如ActiveMQ、RabbitMQ等)的连接管理,并且支持事务性...

Global site tag (gtag.js) - Google Analytics