[jboss-cvs] jboss-seam/src/main/org/jboss/seam/drools ...

Gavin King gavin.king at jboss.com
Tue Jul 10 04:57:37 EDT 2007


  User: gavin   
  Date: 07/07/10 04:57:37

  Modified:    src/main/org/jboss/seam/drools      
                        DroolsActionHandler.java
                        DroolsAssignmentHandler.java
                        DroolsDecisionHandler.java DroolsHandler.java
                        ManagedWorkingMemory.java
  Added:       src/main/org/jboss/seam/drools       SeamGlobalResolver.java
  Log:
  JBSEAM-1606, JBSEAM 1632
  
  Revision  Changes    Path
  1.6       +2 -4      jboss-seam/src/main/org/jboss/seam/drools/DroolsActionHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DroolsActionHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/drools/DroolsActionHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- DroolsActionHandler.java	20 Jun 2007 05:49:43 -0000	1.5
  +++ DroolsActionHandler.java	10 Jul 2007 08:57:36 -0000	1.6
  @@ -15,12 +15,10 @@
   public class DroolsActionHandler extends DroolsHandler implements ActionHandler
   {
      private static final long serialVersionUID = 7752070876220597913L;
  +   
      public List<String> assertObjects;
      public String workingMemoryName;
  -   /**
  -    * 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
      {
         getWorkingMemory(workingMemoryName, assertObjects, executionContext).fireAllRules();
  
  
  
  1.6       +4 -2      jboss-seam/src/main/org/jboss/seam/drools/DroolsAssignmentHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DroolsAssignmentHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/drools/DroolsAssignmentHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- DroolsAssignmentHandler.java	20 Jun 2007 05:49:43 -0000	1.5
  +++ DroolsAssignmentHandler.java	10 Jul 2007 08:57:36 -0000	1.6
  @@ -17,13 +17,15 @@
   public class DroolsAssignmentHandler extends DroolsHandler implements AssignmentHandler
   {
      private static final long serialVersionUID = -7114640047036854546L;
  +   
      public String workingMemoryName;
      public List<String> assertObjects;
  -   public void assign(Assignable assignable, ExecutionContext executionContext)
  -         throws Exception
  +   
  +   public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
      {
         WorkingMemory workingMemory = getWorkingMemory(workingMemoryName, assertObjects, executionContext);
         workingMemory.setGlobal( "assignable", assignable );
         workingMemory.fireAllRules();
      }
  +   
   }
  \ No newline at end of file
  
  
  
  1.6       +2 -4      jboss-seam/src/main/org/jboss/seam/drools/DroolsDecisionHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DroolsDecisionHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/drools/DroolsDecisionHandler.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -b -r1.5 -r1.6
  --- DroolsDecisionHandler.java	20 Jun 2007 05:49:43 -0000	1.5
  +++ DroolsDecisionHandler.java	10 Jul 2007 08:57:36 -0000	1.6
  @@ -16,12 +16,10 @@
   public class DroolsDecisionHandler extends DroolsHandler implements DecisionHandler
   {
      private static final long serialVersionUID = -8900810376838166513L;
  +   
      public List<String> assertObjects;
      public String workingMemoryName;
  -   /**
  -    * The FireRulesActionHandler gets variables from the Instance, and asserts
  -    * them into the Rules Engine and invokes the rules.
  -    */
  +   
      public String decide(ExecutionContext executionContext) throws Exception
      {
         WorkingMemory workingMemory = getWorkingMemory(workingMemoryName, assertObjects, executionContext);
  
  
  
  1.8       +0 -1      jboss-seam/src/main/org/jboss/seam/drools/DroolsHandler.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DroolsHandler.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/drools/DroolsHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -b -r1.7 -r1.8
  --- DroolsHandler.java	19 Jun 2007 19:02:32 -0000	1.7
  +++ DroolsHandler.java	10 Jul 2007 08:57:36 -0000	1.8
  @@ -26,7 +26,6 @@
         
         for (String objectName: expressions)
         {
  -         //TODO: delegate to jBPM instead of to JSF
            Object object = Expressions.instance().createValueExpression(objectName).getValue();
            //Object object = new SeamVariableResolver().resolveVariable(objectName);
            // assert the object into the rules engine
  
  
  
  1.14      +32 -20    jboss-seam/src/main/org/jboss/seam/drools/ManagedWorkingMemory.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ManagedWorkingMemory.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/drools/ManagedWorkingMemory.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -b -r1.13 -r1.14
  --- ManagedWorkingMemory.java	8 Jul 2007 21:13:36 -0000	1.13
  +++ ManagedWorkingMemory.java	10 Jul 2007 08:57:36 -0000	1.14
  @@ -4,6 +4,7 @@
   
   import org.drools.RuleBase;
   import org.drools.StatefulSession;
  +import org.drools.spi.GlobalResolver;
   import org.jboss.seam.Component;
   import org.jboss.seam.ScopeType;
   import org.jboss.seam.annotations.Destroy;
  @@ -63,6 +64,14 @@
      {
         if (statefulSession==null)
         {
  +         statefulSession = getRuleBaseFromValueBinding().newStatefulSession();
  +         statefulSession.setGlobalResolver( createGlobalResolver() );
  +      }
  +      return statefulSession;
  +   }
  +
  +   protected RuleBase getRuleBaseFromValueBinding()
  +   {
            RuleBase ruleBase;
            if (this.ruleBase!=null)
            {
  @@ -82,9 +91,12 @@
            {
               throw new IllegalStateException("RuleBase not found: " + ruleBaseName);
            }
  -         statefulSession = ruleBase.newStatefulSession();
  +      return ruleBase;
         }
  -      return statefulSession;
  +
  +   protected GlobalResolver createGlobalResolver()
  +   {
  +      return new SeamGlobalResolver();
      }
      
      @Destroy
  
  
  
  1.1      date: 2007/07/10 08:57:36;  author: gavin;  state: Exp;jboss-seam/src/main/org/jboss/seam/drools/SeamGlobalResolver.java
  
  Index: SeamGlobalResolver.java
  ===================================================================
  package org.jboss.seam.drools;
  
  import org.drools.spi.GlobalResolver;
  import org.jboss.seam.Component;
  import org.jboss.seam.contexts.Contexts;
  import org.jboss.seam.core.Init;
  
  /**
   * Resolves Seam context variables as Drools globals
   * 
   * @author Gavin King
   *
   */
  class SeamGlobalResolver implements GlobalResolver
  {
     public Object resolve(String name)
     {
        if ( !Contexts.isApplicationContextActive() )
        {
           //TODO: Drools should let us chain GlobalResolvers
           //return resolver.resolve(name)
           return null;
        }
        else
        {
           Object instance = Component.getInstance(name);
           if (instance==null)
           {
              /*instance = resolver.resolve(name);
              if (instance==null)
              {*/
                 return Init.instance().getRootNamespace().getChild(name);
              /*}
              else
              {
                 return instance;
              }*/
           }
           else
           {
              return instance;
           }
        }
     }
  }
  
  



More information about the jboss-cvs-commits mailing list