1 Reply Latest reply on Oct 31, 2007 7:38 AM by pmuir

    jBPM, action in a start-statestart-task and injection

    christophea

      I have a jBPM process, with actions fired from various nodes (to send notification emails).

      My backing bean is a SFSB, that retrieve business process variables by injection.

      The problem is that injection is working well from every action method cal, EXCEPT when action method is called from start node : injected variables are null, although they exist in the business process context.

      My jBPM graph :

      <process-definition name="EventApproval"
       xmlns="urn:jbpm.org:jpdl-3.1"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="urn:jbpm.org:jpdl-3.1 http://jbpm.org/xsd/jpdl-3.1.xsd"
       >
      
       <start-state name="event submission">
       <transition to="local head of business unit approval">
       <action expression="#{processManager.sendMailTo('LOCAL_HEAD_OF_BUSINESS_UNIT')}"/>
       </transition>
       </start-state>
      
      
       <task-node name="local head of business unit approval">
       ...
       </task-node>
      
       <decision name="decision1" expression="#{...}">
       <transition to="event approved" name="? $10.000"></transition>
       <transition to="local head of business line approval" name="? $10.000">
       <action expression="#{processManager.sendMailTo('LOCAL_HEAD_OF_BUSINESS_LINE')}"/>
       </transition>
       </decision>
      
      ...
      
      


      My SFSB code :

      @Stateful
      @Name("processManager")
      public class ProcessManagerAction implements ProcessManager
      {
       //
       // Business Process Variables
       //
      
       @In(required=false)
       @Out(scope=ScopeType.BUSINESS_PROCESS, required=false)
       @NotEmpty
       String eventName;
      
       @In(required=false)
       @Out(scope=ScopeType.BUSINESS_PROCESS, required=false)
       @NotEmpty
       Long requesterId;
      
       ...
      
       public void sendMailTo(Responsible resp)
       {
       // This is always working
       Context ctx = Contexts.getBusinessProcessContext();
       Long requesterId = (Long) Contexts.getBusinessProcessContext().get("requesterId");
      
       ...
      
       }
      
      }
      
      


      Is there something wrong I haven't seen, or is it Seam that does wrong in that case ?