前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >drool-6.5的自学demo

drool-6.5的自学demo

作者头像
ydymz
发布2018-09-10 15:46:04
4620
发布2018-09-10 15:46:04
举报
文章被收录于专栏:lgp20151222

先丢代码地址

https://gitee.com/a247292980/drools

再丢pom.xml

代码语言:javascript
复制
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yy</groupId>
  <artifactId>drools</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>drools Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
    <runtime.version>6.5.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>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>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>4.12</version>
	</dependency>

  </dependencies>
</project>

 最后丢目录结构

老规矩要说的基本都在注释里面,想看的去看源码就好了,只说几个重要的

Message

pojo类

DecisionTableTest

drools使用xxx.xls的例子

代码语言:javascript
复制
public class DecisionTableTest {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
	        KieServices ks = KieServices.Factory.get();
    	    KieContainer kContainer = ks.getKieClasspathContainer();
//    	    写名字则取相应的ksession下的东西
//        	KieSession kSession = kContainer.newKieSession("ksession-dtables");
//            不写名字则全取了
        	KieSession kSession = kContainer.newKieSession();

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);
            kSession.insert(message);
            kSession.fireAllRules();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }


}

 DroolsTest

drools操作xxxx.drl的例子

代码语言:javascript
复制
public class DroolsTest  {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
            KieServices ks = KieServices.Factory.get();
            KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-rules");

            // go !
            Message message = new Message();
            message.setMessage("Hello World");
            message.setStatus(Message.HELLO);

            kSession.insert(message);
            kSession.fireAllRules();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

}

 ProcessTest

drools操作xxxx.bpmn的例子

代码语言:javascript
复制
public class ProcessTest {

    public static final void main(String[] args) {
        try {
            // load up the knowledge base
            KieServices ks = KieServices.Factory.get();
            KieContainer kContainer = ks.getKieClasspathContainer();
            KieSession kSession = kContainer.newKieSession("ksession-process");

            // start a new process instance
            kSession.startProcess("com.sample.bpmn.hello");
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

}

StatelessTest

用来区分StatelessKieSession和KieSession

代码语言:javascript
复制
public class StatelessTest {
    protected KieServices kieServices;

    protected KieContainer kieContainer;

    protected KieSession kieSession;
    protected StatelessKieSession statelessKieSession;

    @Before
    public void init() {
//从Factory得到Services
        kieServices = KieServices.Factory.get();
//        在类路径中找到的所有DRL文件
        kieContainer = kieServices.getKieClasspathContainer();
//得到kmodule的ksession
        kieSession = kieContainer.newKieSession("ksession-rules");
//stateless必须注释kmodule里全部的kbase
//		statelessKieSession=kieContainer.newStatelessKieSession();
    }

    //kieSession和statelessKieSession的调用是不一样的
    @Test
    public void testKieSession() {
        Message message = new Message();
        message.setMessage("Hello World");
        message.setStatus(Message.HELLO);

        kieSession.insert(message);
        kieSession.fireAllRules();
    }

    @Test
    public void testStatelessKieSession() {
        Message message = new Message();
        message.setMessage("Hello World");
        message.setStatus(Message.HELLO);

        statelessKieSession.execute(message);

    }
}

kmodule.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <!--<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">-->
    <!--name kbase的唯一标志
    packages 路径必须正确可少写可多写可不写
    不写的话放于根目录(不建议)
    ksession 的唯一标记-->
    <!--<kbase name="rules" packages="Drools.rules">-->
    <kbase name="rules" packages="rules">
        <!--<kbase name="rules" packages="">-->
        <!--<kbase name="rules" packages="myrules">-->
        <!--默认用最后一个-->
        <!--<kbase name="rules" packages="rules,myrules">-->
        <ksession name="ksession-rules"/>
    </kbase>


    <kbase name="dtables" packages="dtables">
        <ksession name="ksession-dtables"/>
    </kbase>
    <kbase name="process" packages="process">
        <ksession name="ksession-process"/>
    </kbase>
</kmodule>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先丢代码地址
  • 再丢pom.xml
  •  最后丢目录结构
  • Message
  • DecisionTableTest
  •  DroolsTest
  •  ProcessTest
  • StatelessTest
  • kmodule.xml
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档