[bigdata-094] drools+eclipse+maven开发一个drools的应用
1. 此例子跟前述例子相似,但不需要在eclipse安装drools插件 2. 目录结构 ├── pom.xml 3. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ttz.demo</groupId> <artifactId>droolsdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>droolsdemo</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <runtime.version>6.4.0.Final</runtime.version> </properties> <repositories> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </snapshots> </repository> </repositories> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> <version>${runtime.version}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> <version>${runtime.version}</version> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> <version>${runtime.version}</version> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-test</artifactId> <version>${runtime.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>0.9.29</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>0.9.29</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>log4j-over-slf4j</artifactId> <version>1.6.1</version> </dependency> </dependencies> </project> 4.?App.java package com.ttz.demo.droolsdemo; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import com.ttz.demo.droolsdemo.Message; public class App { public static void main( String[] args ) { //KieServices是一个单实例,它为其他Services提供一个hub式的接口 KieServices ks = KieServices.Factory.get(); //1. KieBase: 定义了规则引擎的所有知识knowledge。它包括规则,过程,函数,类型等。不包含运行时数据。 //2. KieModule: KieModule是一个容器,它定义一组KieBase需要的所有资源。 //kmoudle.xml就像pom.xml一样,它可以指定KBase的name,能创建的KieSession,以及其他所需要的资源。 //3. KieContainer:指定了KieModule之后,KieContainer就这个KieModule里的所有KieBase的容器 KieContainer kContainer = ks.getKieClasspathContainer(); //KieSession:用户和规则引擎的交互方式,可以多次对话,保留对话过程信息,可以多次推理。 KieSession kSession = kContainer.newKieSession("ksession-rules"); Message message = new Message(); message.setMessage("Hello World 2"); message.setStatus(Message.HELLO); kSession.insert(message); kSession.fireAllRules(); //释放资源,可能有gc kSession.dispose(); } } 5.Message.java package com.ttz.demo.droolsdemo; public class Message { public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } } 6.kmodule.xml <?xml version="1.0" encoding="UTF-8"?> <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> <kbase name="rules" packages="rules"> <ksession name="ksession-rules"/> </kbase> </kmodule> 7. pom.properites groupId=com.ttz.demo artifactId=droolsdemo version=1.0.0-SNAPSHOT 8.Sample.drl package com.ttz.demo import com.ttz.demo.droolsdemo.Message; rule "Hello World" when m : Message( status == Message.HELLO,myMessage : message ) then //System.out.println( myMessage ); //m.setMessage( "THis is my hello world" ); //m.setStatus( Message.GOODBYE ); //update( m ); System.out.print("hello wroldn"); end rule "GoodBye" when Message( status == Message.GOODBYE,myMessage : message ) then System.out.println( myMessage ); end 9. Sample2.drl package com.ttz.demo import com.ttz.demo.droolsdemo.Message; rule "Hello World 2" when m : Message( status == Message.HELLO,myMessage : message ) then System.out.println("hello world 2n"); //System.out.println( myMessage ); //m.setMessage( "THis is my hello world 2" ); //m.setStatus( Message.GOODBYE ); //update( m ); end rule "GoodBye 2" when Message( status == Message.GOODBYE,myMessage : message ) then System.out.println( myMessage ); end? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |