Drools规则引擎远程加载规则文件

1.创建一个drools工程:

Drools规则引擎远程加载规则文件_第1张图片

2.创建一个Dynamic Web Project(主要体现远程加载规则文件,将规则文件放在这个工程中,并配上服务器):

Drools规则引擎远程加载规则文件_第2张图片

  其中,Sample.drl是个规则文件,在浏览器中访问如图所示:

Drools规则引擎远程加载规则文件_第3张图片

3.再drools工程中创建一个类,我这里类名为:RemoteLoadRule,意思就是远程加载规则文件

Drools规则引擎远程加载规则文件_第4张图片

代码为:

package com.sample;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;

import com.sample.DroolsTest.Message;

/**
 * 远程加载规则文件
 * @author sihang
 *
 */
public class RemoteLoadRule {
	public static void main(String [] args) {
		//远程加载规则包
		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
		kbuilder.add(ResourceFactory.newUrlResource("http://localhost:8080/test/Sample.drl"), 
				ResourceType.DRL);
		//创建知识库
		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
		//将规则包加载到知识库中
		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
		
		//创建Fact对象
		Message message = new Message();
        message.setMessage("Hello World");
        message.setStatus(Message.HELLO);
        //创建KnowledgeSession,将Fact对象插入到WorkingMemory中
        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
        ksession.insert(message);
        ksession.fireAllRules();
        ksession.dispose();
	}
}

4.运行RemoteLoadRule类,结果如下:

Drools规则引擎远程加载规则文件_第5张图片

远程加载规则文件成功!

其中:如果远程 加载的规则是基于决策表类型的规则文件,则将ResourceType指定为决策表类型就可以了!

希望这篇文章对于研究规则引擎的人有所帮助!

你可能感兴趣的:(drools)