⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reteexample.java

📁 人工智能中基于产生式规则的经典规则匹配与推理算法-RETE算法实现示例;包括文档说明
💻 JAVA
字号:
package com.sample.rete;

/*
 * This code and the accompanying presentation is licensed for use in the United States under a
 * Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
 * http://creativecommons.org/licenses/by-nc-sa/3.0/us/
 * All other rights reserved, copyright 2008, EBDX.COM, LLC

 * Author: Lawrence Terrill, Sr. Partner, EBDX.COM, LLC, 5/1/2008
 * This code supports the presentation, An Introduction to the Rete Algorithm, by Lawrence Terrill
 * 
 */

import java.io.InputStreamReader;
import java.io.Reader;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;

/**
 * This is a sample file to launch a rule package from a rule source file.
 */
public class ReteExample {

    public static final void main(String[] args) {
        try {
        	
        	//load up the rulebase
    		Reader source = new InputStreamReader( ReteExample.class.getResourceAsStream( "ReteExample.drl" ) );
    		
    		PackageBuilder builder = new PackageBuilder();
    		builder.addPackageFromDrl( source );
    		Package pkg = builder.getPackage();
    		
    		//add the package to a rulebase (deploy the rule package).
    		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
    		ruleBase.addPackage( pkg );
            WorkingMemory workingMemory = ruleBase.newStatefulSession();
            
            //go !
            A a_1 = new A(1, 100, "a_1"); 
            A a_2 = new A(2, 100, "a_2"); 
            B b_1 = new B(2, 10, 100, "b_1");
            B b_2 = new B(2, 11, 100, "b_2");
            B b_3 = new B(2, 11, 200, "b_3");
            C c_1 = new C(10, "c_1");
            D d_1 = new D(300, 11, "d_1");
            E e_1 = new E(200, "e_1");

            workingMemory.insert( a_1 );
            workingMemory.insert( a_2 );
            workingMemory.insert( b_1 );
            workingMemory.insert( b_2 );
            workingMemory.insert( b_3 );
            workingMemory.insert( c_1 );
            workingMemory.insert( d_1 );
            workingMemory.insert( e_1 );
            workingMemory.fireAllRules();
            
            E e_2 = new E(100, "e_2");
            System.out.println("-> Inserting object e_2 <-");
            
            workingMemory.insert( e_2 );
            workingMemory.fireAllRules();           

            D d_2 = new D(300, 10, "d_2");
            System.out.println("-> Inserting object d_2 <-");
            
            workingMemory.insert( d_2 );
            workingMemory.fireAllRules();           

        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
	    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -