[jboss-user] [JBoss jBPM] - Re: Using Drools for jBPM decision

turpin_vincent do-not-reply at jboss.com
Thu Mar 12 04:59:00 EDT 2009


hi,

First thanks for answering me so fast. Actually i understood that the problem comes from the data handler witch return "null" in spite of "toDeliver" or "toEnd". But i can't find why, the file AccountAproval.drl is correctly parsed and even if when the rule doesn't evaluate to setOutcome("toDeliver"), it return null, i think that the condition in the rule is evaluated (if the syntaxe condition isn't correct i get an error about that).

For the moment i just can add that i'm working from this example:  http://docs.jboss.com/seam/latest/reference/en-US/html/drools.html (chapter 14.3) btw that's why i execute the same rules again on the transition 'toDeliver' (to be closest from the example) and there is no difference if i delete this part:

  | <action  class="org.jboss.seam.drools.DroolsActionHandler">
  | <workingMemoryName>accountApprovalWorkingMemory</workingMemoryName>
  |       <assertObjects>
  |                <element>#{actor}</element>
  |                <element>#{orderStock}</element>
  |       </assertObjects>
  | </action >


I'm going to try an other way with less code in the process and more in the java class like in this example:  http://www.jboss.org/community/docs/DOC-11096.


I give my java class too (mabe it will help) i think that the problem can come from the fact that i dont know if i have to declare again the data handler in this class or if the code in the process is enough.

  | package org.domain.test.session;
  | 
  |  import org.jboss.seam.annotations.bpm.CreateProcess;  
  |  import org.jboss.seam.annotations.bpm.EndTask;  
  |  import org.jboss.seam.annotations.Name;  
  |  import org.jboss.seam.annotations.bpm.StartTask;  
  |  import org.jboss.seam.annotations.*;  
  |  import org.jboss.seam.ScopeType;  
  |    
  |  @Name("orderStock")   
  |  public class OrderStock  
  |  {  
  |     
  |     @Out(scope=ScopeType.BUSINESS_PROCESS, required=false)  
  |     Long processQuantity;  
  |       
  |     public Long getProcessQuantity() {
  | 		return processQuantity;
  | 	}
  | 
  | 	public void setProcessQuantity(Long processQuantity) {
  | 		this.processQuantity = processQuantity;
  | 	}
  | 
  | 	private int quantity ;  
  |         
  |     public int getQuantity()  
  |     {  
  |        return quantity;  
  |     }  
  |    
  |     public void setQuantity(int quantity) {  
  |     
  |        this.quantity = quantity;  
  |     }  
  |         
  |    @CreateProcess(definition="simple")  
  |    
  |    public  void startProcess() 
  |    {        
  |      processQuantity = new Long(getQuantity());  
  |      System.out.println("Order: "+getQuantity());
  |      
  |    }  
  |    
  |    @StartTask  
  |    @EndTask(transition="todecision")  
  |    	public void done() 
  |    	{  
  | 	   System.out.println("done");
  |    	}  
  |    
  |    @StartTask  
  |    @EndTask(transition="cancel")  
  |      public void cancel() 
  |    	{  
  |    	}  
  | 


View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4217313#4217313

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4217313



More information about the jboss-user mailing list