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

来源:互联网 发布:windows 共享 无权限 编辑:程序博客网 时间:2024/05/18 07:12

1.创建一个drools工程:


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


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


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


代码为:

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类,结果如下:


远程加载规则文件成功!

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

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

1 0
原创粉丝点击