Drools整和Maven项目开发

来源:互联网 发布:人工智能的上市公司 编辑:程序博客网 时间:2024/06/02 03:58
[html] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1.为Eclipse配置Drools工具及环境搭建参考:http://blog.sina.com.cn/s/blog_4da7b8a90102vm45.html </span>  

2.环境搭建完毕后即可建立一个实际的Drools与maven结合的实例。

 (1)建立一个maven项目:

       

按照上图的步骤建立一个maven项目

 (2)在pom.xml文件中引入依赖包

          

            打开如图所示配置文件输入如下配置数据

[html] view plain copy
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.    
  5.   <groupId>com.sample</groupId>  
  6.   <artifactId>Drools-test</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <name>Drools :: Sample Maven Project</name>    
  9.   <description>A sample Drools Maven project</description>    
  10.   <properties>    
  11.     <runtime.version>6.4.0.Final</runtime.version>    
  12.   </properties>    
  13.   <repositories>    
  14.     <repository>    
  15.       <id>jboss-public-repository-group</id>    
  16.       <name>JBoss Public Repository Group</name>    
  17.       <url>http://repository.jboss.org/nexus/content/groups/public/</url>    
  18.       <releases>    
  19.         <enabled>true</enabled>    
  20.         <updatePolicy>never</updatePolicy>    
  21.       </releases>    
  22.       <snapshots>    
  23.         <enabled>true</enabled>    
  24.         <updatePolicy>daily</updatePolicy>    
  25.       </snapshots>    
  26.     </repository>    
  27.   </repositories>    
  28.   <dependencies>  
  29.     <dependency>    
  30.       <groupId>org.kie</groupId>    
  31.       <artifactId>kie-api</artifactId>    
  32.       <version>${runtime.version}</version>    
  33.     </dependency>  
  34.     <dependency>    
  35.       <groupId>org.kie</groupId>    
  36.       <artifactId>kie-spring</artifactId>    
  37.       <version>${runtime.version}</version>    
  38.     </dependency>    
  39.     <dependency>    
  40.       <groupId>org.drools</groupId>    
  41.       <artifactId>drools-core</artifactId>    
  42.       <version>${runtime.version}</version>    
  43.     </dependency>   
  44.     <dependency>    
  45.       <groupId>org.drools</groupId>    
  46.       <artifactId>drools-decisiontables</artifactId>    
  47.       <version>${runtime.version}</version>    
  48.     </dependency>   
  49.     <dependency>  
  50.         <groupId>org.jbpm</groupId>  
  51.         <artifactId>jbpm-test</artifactId>  
  52.         <version>${runtime.version}</version>  
  53.     </dependency>   
  54.     <dependency>  
  55.         <groupId>org.slf4j</groupId>  
  56.         <artifactId>slf4j-nop</artifactId>  
  57.         <version>1.7.6</version>  
  58.     </dependency>  
  59.   </dependencies>  
  60. </project>  
 确定依赖包成功加载后(不成功就是什么clean呀,maven->update project什么的。。。。)

(3)如下图所示建立文件夹和包结构

      

 (4)在META-INF中建立kmodule.xml 内容如下

[html] view plain copy
  1. <span style="font-family: Arial, Helvetica, sans-serif;"> <?xml version="1.0" encoding="UTF-8"?>  </span>  

[html] view plain copy
  1. <kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.         xmlns="http://jboss.org/kie/6.0.0/kmodule">  
  3.    <kbase name="HelloWorldKB" packages="rules">  
  4.        <ksession name="HelloWorldKS"/>  
  5.    </kbase>      
  6. </kmodule>  
[html] view plain copy
  1. <pre name="code" class="html"><pre name="code" class="html"><span style="font-size: 14px;">(5)在rules文件夹中建立helloWorld.drl 内容如下:</span></pre>  
  2. <pre></pre>  
  3. <span style="font-size:14px; font-family:Arial,Helvetica,sans-serif"></span>  
  4. <pre></pre>  
  5. <pre name="code" class="html" style="font-size: 14px;"><pre name="code" class="html">   <?xml version="1.0" encoding="UTF-8"?>    
  6.    <kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  7.          xmlns="http://jboss.org/kie/6.0.0/kmodule">  
  8.     <kbase name="HelloWorldKB" packages="rules">  
  9.         <ksession name="HelloWorldKS"/>  
  10.     </kbase>      
  11.    </kmodule></pre><pre name="code" class="html"> (6)建立实体类Message.java</pre><pre name="code" class="html">      内容如下:<span style="font-family: Arial, Helvetica, sans-serif;">package com.sample;</span><pre name="code" class="java"><span style="white-space:pre">      </span>public class Message  
  12. <span style="white-space:pre">  </span>{  
  13.   
  14.     
  15.     //常量 HELLO 值0    
  16.       public static final int HELLO = 0;    
  17.       //常量 GOODBYE 值0    
  18.       public static final int GOODBYE = 1;    
  19.       
  20.       
  21.       //消息    
  22.       private String message;    
  23.       //状态    
  24.       private int status;    
  25.       
  26.       
  27.       public String getMessage() {    
  28.           return this.message;    
  29.       }    
  30.       
  31.       
  32.       public void setMessage(String message) {    
  33.           this.message = message;    
  34.       }    
  35.       
  36.       
  37.       public int getStatus() {    
  38.           return this.status;    
  39.       }    
  40.       
  41.       
  42.       public void setStatus(int status) {    
  43.           this.status = status;    
  44.       }    
  45.           
  46. }</pre><pre name="code" class="java"> (7)建立测试类HelloWorldExample.java <span style="font-family: Arial, Helvetica, sans-serif;"> 内容如下:</span></pre><pre name="code" class="java">    <pre name="code" class="java"><span style="white-space:pre"> </span>package com.sample;  
  47. <span style="white-space:pre">  </span>import org.kie.api.KieServices;  
  48. <span style="white-space:pre">  </span>import org.kie.api.runtime.KieContainer;  
  49. <span style="white-space:pre">  </span>import org.kie.api.runtime.KieSession;  
  50.   
  51. <span style="white-space:pre">  </span>public class HelloWorldExample  
  52. <span style="white-space:pre">  </span>{  
  53.   
  54.    <span style="white-space:pre">   </span> public static final void main(final String[] args) {  
  55.        <span style="white-space:pre">       </span>KieServices ks = KieServices.Factory.get();  
  56.         <span style="white-space:pre">  </span>KieContainer kc = ks.getKieClasspathContainer();  
  57.         <span style="white-space:pre">  </span>KieSession ksession = kc.newKieSession("HelloWorldKS");  
  58.         <span style="white-space:pre">  </span>final Message message = new Message();  
  59.         <span style="white-space:pre">  </span>message.setMessage( "Hello World" );  
  60.        <span style="white-space:pre">   </span> <span style="white-space:pre">  </span>message.setStatus( Message.HELLO );  
  61.        <span style="white-space:pre">   </span> <span style="white-space:pre">  </span>ksession.insert(message);  
  62.        <span style="white-space:pre">   </span> <span style="white-space:pre">  </span>ksession.fireAllRules();  
  63.        <span style="white-space:pre">       </span>ksession.dispose();  
  64.     <span style="white-space:pre">  </span> }  
  65.   
  66.        }  
  67. </pre> 运行测试类结果如下:<img src="http://img.blog.csdn.net/20161114085247640?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">  
  68. <pre></pre>  
  69. <pre></pre>  
  70. <pre></pre>  
  71. <p></p>  
  72. <pre></pre>  
  73. <pre name="code" class="java"></pre><pre name="code" class="java"> 此实例所实现的功能比较简单,就是对message当中的status字段进行判断从而进行不同的操作。<img src="http://img.blog.csdn.net/20161114085403888?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">在文章中出现的如上图所示的标签,为生成博客时自动产生的,在java文件及配置文件中请自动忽略。</pre><pre name="code" class="java"></pre><pre name="code" class="java"></pre>  
  74. <pre></pre>  
  75. <pre></pre>  
  76. <p></p>  
  77. <pre></pre>  
  78. <pre></pre>  
  79. <pre></pre>  
  80. <pre></pre>  
  81. <pre></pre>  
  82.      
  83. </pre></pre></pre></pre>  
原创粉丝点击