[jboss-user] [jBPM] - Integration with Drools

Shobhit Tyagi do-not-reply at jboss.com
Fri Dec 17 04:45:14 EST 2010

roxy1987 [http://community.jboss.org/people/roxy1987] created the discussion

"Integration with Drools"

To view the discussion, visit: http://community.jboss.org/message/576585#576585

Hi, I am trying to invoke the rules with jBPM. My class definition is following :

package com.jboss.dvd.seam;

import org.drools.PackageIntegrationException;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.RuleIntegrationException;
import org.drools.WorkingMemory;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.lang.descr.PackageDescr;
import org.drools.reteoo.*;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.Package;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;
import java.io.*;
import java.util.Iterator;
import java.util.List;

public class FireRulesActionHandler implements ActionHandler {

  private static final long serialVersionUID = 1L;

  public List objectNames;
  public static String ruleFile;

   * The FireRulesActionHandler gets variables from the Instance, and asserts
   * them into the Rules Engine and invokes the rules.
  public void execute(ExecutionContext executionContext) throws Exception {

    // load up the rulebase
    RuleBase ruleBase = readRule();
    WorkingMemory workingMemory = ruleBase.newWorkingMemory();

    // load the data
    Object object = null;

    Iterator iter = objectNames.iterator();
    String objectName = "";
    ContextInstance ci = executionContext.getContextInstance();
    while (iter.hasNext()) {
      objectName = (String) iter.next();
      object = ci.getVariable(objectName);
      System.out.println("object name is: " + objectName);
      // assert the object into the rules engine
    // assert the contextInstance so that it may be used to set results


   * Please note that this is the "low level" rule assembly API.
  private static RuleBase readRule() throws IOException, DroolsParserException, RuleIntegrationException, PackageIntegrationException, InvalidPatternException {
    // read in the source
    Reader reader = new InputStreamReader(FireRulesActionHandler.class.getResourceAsStream(ruleFile));
    DrlParser parser = new DrlParser();
    PackageDescr packageDescr = parser.parse(reader);

    // pre build the package
    PackageBuilder builder = new PackageBuilder();
    Package pkg = builder.getPackage();

    // add the package to a rulebase
    RuleBase ruleBase = RuleBaseFactory.newRuleBase();
    return ruleBase;


1. First thing is that, it is not able to recognize the function newWorkingMemory().
2. Secondly the function assertObject(Object) is also reported undefined.

Please Help.

Reply to this message by going to Community

Start a new discussion in jBPM at Community

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20101217/ab1f61e5/attachment-0001.html 

More information about the jboss-user mailing list