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
                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值