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

📄 rulebaseloader.java

📁 jboss规则引擎
💻 JAVA
字号:
package org.drools.compiler;

import java.io.IOException;
import java.io.Reader;

import org.drools.CheckedDroolsException;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.rule.Package;

/**
 * A high level helper class for creating rulebases from source.
 * For additional control, refer to the DrlParser and PackageBuilder classes.
 * You can have much more detailed control with the lower level classes.
 * 
 * @author Michael Neale
 */
public class RuleBaseLoader {

    private static final RuleBaseLoader INSTANCE   = new RuleBaseLoader();
    private static int            engineType = RuleBase.RETEOO;

    private RuleBaseLoader() {
    }

    /** Get an instance of the loader */
    public static RuleBaseLoader getInstance() {
        return RuleBaseLoader.INSTANCE;
    }

    /**
     * Create a new RuleBase from the drl source. 
     * Uses the current default engine type.
     */
    public RuleBase loadFromReader(final Reader drl) throws CheckedDroolsException,
                                              IOException {
        final PackageBuilder builder = new PackageBuilder();
        builder.addPackageFromDrl( drl );
        return makeRuleBase( builder );
    }

    /**
     * Create a new RuleBase from the drl and dsl source.
     * Uses the current default engine type.
     */
    public RuleBase loadFromReader(final Reader drl,
                                   final Reader dsl) throws CheckedDroolsException,
                                              IOException {
        final PackageBuilder builder = new PackageBuilder();
        builder.addPackageFromDrl( drl,
                                   dsl );
        return makeRuleBase( builder );
    }

    /** Replace the default engine type that will be used (default is RETEOO) */
    public void setDefaultEngineType(final int type) {
        RuleBaseLoader.engineType = type;
    }

    private RuleBase makeRuleBase(final PackageBuilder builder) throws CheckedDroolsException {
        if ( builder.hasErrors() ) {
            throw new CheckedDroolsException( "There were errors in the rule source: " + builder.printErrors() );
        }
        final Package binaryPackage = builder.getPackage();

        final RuleBase rb = RuleBaseFactory.newRuleBase( RuleBaseLoader.engineType );
        try {
            rb.addPackage( binaryPackage );
        } catch ( final Exception e ) {
            throw new CheckedDroolsException( "Unable to add compiled package to rulebase. Nested error is: " + e.getMessage() );
        }
        return rb;
    }

}

⌨️ 快捷键说明

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