Tutorial - Setup a stateless rule session SourceForge.net Logo
 To do
 Project page

Setting up a stateless rule session

A stateless rule session can be created according to JSR-94 specifications.
JSR-94 specify that you have to:

  • load and get the RuleServiceProvider object
  • get the RuleAdministrator object
  • load rules by creating a RuleExecutionSet object; this object may be created by means of (i) an XML file to load or (ii) using LocalRuleExecutionSetProvider.createRuleExecutionSet method, passing to it a list of RuleImpl objects
  • create a RuleRuntime object
  • create the StatelessRuleSession object from the RuleRuntime

This is a java example showing the creation of a StatelessRuleSession object.

  try {
   // Load the rule service provider of the reference implementation.
   // Loading this class will automatically register this provider with the provider manager.
   Class.forName( "org.jruleengine.RuleServiceProviderImpl" );
   // get the rule service provider from the provider manager
   RuleServiceProvider serviceProvider = RuleServiceProviderManager.getRuleServiceProvider( "org.jruleengine" );
   // get the RuleAdministrator
   RuleAdministrator ruleAdministrator = serviceProvider.getRuleAdministrator();
   System.out.println("\nAdministration API\n");
   System.out.println( "Acquired RuleAdministrator: " + ruleAdministrator );
   // get an input stream to a test XML ruleset
   InputStream inStream = new FileInputStream( "example1.xml" );
   System.out.println("Acquired InputStream to example1.xml: " + inStream );
   // parse the ruleset from the XML document
   RuleExecutionSet res1 = ruleAdministrator.getLocalRuleExecutionSetProvider( null ).createRuleExecutionSet( inStream, null );
   System.out.println( "Loaded RuleExecutionSet: " + res1);
   // register the RuleExecutionSet
   String uri = res1.getName();
   ruleAdministrator.registerRuleExecutionSet(uri, res1, null );
   System.out.println( "Bound RuleExecutionSet to URI: " + uri);
   // Get a RuleRuntime and invoke the rule engine.
   System.out.println( "\nRuntime API\n" );
   RuleRuntime ruleRuntime = serviceProvider.getRuleRuntime();
   System.out.println( "Acquired RuleRuntime: " + ruleRuntime );
   // create a StatelessRuleSession
   StatelessRuleSession statelessRuleSession =
    (StatelessRuleSession) ruleRuntime.createRuleSession(uri,
    new HashMap(), RuleRuntime.STATELESS_SESSION_TYPE);
   // use it...
   // Release the session.
   catch (NoClassDefFoundError e) {
   if (e.getMessage().indexOf("Exception") != -1) {
    System.err.println("Error: The Rule Engine Implementation could not be found.");
   else {
    System.err.println("Error: " + e.getMessage());
   catch (Exception e) {

(c) 2006 by Mauro Carniel