开发环境
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