📄 main.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 + -