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

📄 main.java

📁 rule engine drools-2.0-beta-18
💻 JAVA
字号:
/* * Created on Mar 19, 2004 * @author Daniel Selman */package org.javarules.jsr94;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import javax.rules.RuleRuntime;import javax.rules.RuleServiceProvider;import javax.rules.RuleServiceProviderManager;import javax.rules.StatefulRuleSession;import javax.rules.StatelessRuleSession;import javax.rules.admin.Rule;import javax.rules.admin.RuleAdministrator;import javax.rules.admin.RuleExecutionSet;import org.drools.jsr94.rules.RuleServiceProviderImpl;/** * Simple test harness for running JSR-94 compliant rule engines * and exercising the runtime and admin API. * <br/> * This class was originally written by Daniel Selman from JavaRules.org * and is the "entry exam" for real JSR94 TCK testing. I've modified it * a little bit from his original version and kept a copy of it here for * the sake of posterity. * * @author N. Alex Rupp * @author Daniel Selman */public class Main{    public static void main( String[] args ) throws Exception    {        String DROOLS_RULE_SERVICE_PROVIDER_CLASS =            "org.drools.jsr94.rules.RuleServiceProviderImpl";        String DROOLS_RULE_SERVICE_PROVIDER = "http://drools.org/";        RuleServiceProviderManager.registerRuleServiceProvider(            DROOLS_RULE_SERVICE_PROVIDER, RuleServiceProviderImpl.class );        Class.forName( DROOLS_RULE_SERVICE_PROVIDER_CLASS );        runRuleset( DROOLS_RULE_SERVICE_PROVIDER, "testagent.drl", "Gecko" );    }    public static void runRuleset(            String ruleServiceProvider, String fileName, String userAgent )        throws Exception    {        log( "Rule Execution Set to run: " + fileName );        log( "Administrator API - Parse and Deploy RuleSet" );        // Get the rule service provider from the provider manager.        RuleServiceProvider serviceProvider =            RuleServiceProviderManager.getRuleServiceProvider(                ruleServiceProvider );        // get the RuleAdministrator        RuleAdministrator ruleAdministrator =            serviceProvider.getRuleAdministrator( );        // get the RuleAdministrator        log( "Got RuleAdministrator implementation: " + ruleAdministrator );        // get an input stream to the file to load        InputStream inStream = Main.class.getResourceAsStream( fileName );        log( "Acquired InputStream to input file: " + inStream );        // load a RuleExecutionSet        RuleExecutionSet ruleExecutionSet =            ruleAdministrator.getLocalRuleExecutionSetProvider( null )                .createRuleExecutionSet( inStream, null );        log( "Loaded RuleExecutionSet: " + ruleExecutionSet );        // print the metadata about the ruleset        log( "Name: " + ruleExecutionSet.getName( ) );        log( "Description: " + ruleExecutionSet.getDescription( ) );        log( "Rules:" );        // print the names of the rules in the ruleset        for ( Iterator it = ruleExecutionSet.getRules( ).iterator( );              it.hasNext( ); )        {            Rule rule = ( Rule ) it.next( );            log( rule.getName( ) );        }        // register the ruleset under a "random" URI        String uri = "uri_" + System.currentTimeMillis( );        ruleAdministrator                         .registerRuleExecutionSet( uri, ruleExecutionSet, null );        log( "Bound RuleExecutionSet to URI: " + uri );        log( "Runtime API - Query Deployed RuleSets" );        RuleRuntime ruleRuntime = serviceProvider.getRuleRuntime( );        // get the RuleRuntime from JNDI        log( "Acquired RuleRuntime: " + ruleRuntime );        // print the uris of the registered rulesets        List uriList = ruleRuntime.getRegistrations( );        log( "Registered RuleExecutionSets:" );        for ( Iterator it = uriList.iterator( ); it.hasNext( ); )        {            log( "Ruleset URI: " + it.next( ) );        }        log( "Runtime API - Stateless Execution" );        // create a StatelessRuleSession        StatelessRuleSession statelessRuleSession = ( StatelessRuleSession )            ruleRuntime.createRuleSession(                uri, new HashMap( ), RuleRuntime.STATELESS_SESSION_TYPE );        log( "Got Stateful Rule Session " + uri );        log( "Implementation: " + statelessRuleSession );        // add the user's User-Agent string to the session and execute it        List inputList = new LinkedList( );        inputList.add( userAgent );        log( "Adding browser User-Agent to session: " + userAgent );        List resultList = statelessRuleSession.executeRules( inputList );        log( "Called executeRules on Stateless Rule Session: "            + statelessRuleSession );        log( "Result of calling executeRules: " + resultList );        // release the session        statelessRuleSession.release( );        log( "Released Stateless Rule Session." );        log( "Runtime API - Stateful Execution" );        // create a StatefulRuleSession        StatefulRuleSession statefulRuleSession = ( StatefulRuleSession )            ruleRuntime.createRuleSession(                uri, new HashMap( ), RuleRuntime.STATEFUL_SESSION_TYPE );        log( "Got Stateful Rule Session " + uri );        log( ": " + statefulRuleSession );        // add an Object to the statefulRuleSession        log( "Adding browser User-Agent to session: " + userAgent );        statefulRuleSession.addObjects( inputList );        log( "Called addObject on Stateful Rule Session: "            + statefulRuleSession );        statefulRuleSession.executeRules( );        log( "Called executeRules" );        // extract the Objects from the statefulRuleSession        resultList = statefulRuleSession.getObjects( );        log( "Result of calling getObjects: " + resultList );        // release the statefulRuleSession so it is reset and repooled        statefulRuleSession.release( );        log( "Released Stateful Rule Session." );    }    private static void log( String msg )    {        System.out.println( msg );    }}

⌨️ 快捷键说明

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