I created a simple task manager which allows to start, end tasks and retrieve 
task's variables

import org.jboss.seam.core.TaskInstance;

@Stateful
@Name("taskManager")
@Scope(ScopeType.CONVERSATION)
public class TaskManagerImpl implements TaskManager {

  @In(required=false)
  private Long taskId;
  @DataModel
  private List transitions;
  @DataModelSelection("transitions")
  private Transition selectedTransition;
  @DataModel
  private List taskFormParameters;
  @DataModelSelection("taskFormParameters")
  private TaskFormParameter taskFormParameter;
        
  @BeginTask
  public String startTask() {

     org.jbpm.taskmgmt.exe.TaskInstance taskInstance = TaskInstance.instance();
     if(taskInstance != null) {
                        
           this.transitions = taskInstance.getAvailableTransitions();
           this.comments = taskInstance.getComments();
                        
           taskFormParameters = new ArrayList();
           TaskController taskController = 
taskInstance.getTask().getTaskController();
           if (taskController!=null) {
                  for(Object va : taskController.getVariableAccesses()) {
                          
                         VariableAccess variableAccess = (VariableAccess) va;
                         String mappedName = variableAccess.getMappedName();
                         String value = 
(String)taskInstance.getVariable(mappedName);
                         TaskFormParameter tfp = new 
TaskFormParameter(variableAccess, value);
                         System.out.println("reading [" + tfp.getLabel() + "]=" 
+ tfp.getValue() + " readable " + tfp.isReadable() + " writable " + 
tfp.isWritable());
                         taskFormParameters.add(tfp);
                   }
             }
                        
         }
         return "/task.xhtml";
                
     } 

   @EndTask
   public String  endTask() {

         org.jbpm.taskmgmt.exe.TaskInstance taskInstance = 
TaskInstance.instance();
         BusinessProcess.instance().transition(selectedTransition.getName());
                
         for(TaskFormParameter tfp : this.taskFormParameters){
             if (tfp.isWritable()) {
                                
                  System.out.println("isOpen " + taskInstance.isOpen());
                  System.out.println("submitting [" + tfp.getLabel() + "]=" + 
tfp.getValue() + " readable " + tfp.isReadable() + " writable " + 
tfp.isWritable());
                  taskInstance.setVariable(tfp.getLabel(), tfp.getValue());
                  System.out.println("test " + 
taskInstance.getVariable(tfp.getLabel()));
                                
              } else {
                        
                 System.out.println("ignoring unwritable [" + tfp.getLabel() + 
"]");
                        
            }

        }
                
       return "/available.xhtml";
                
    }
        
   @End
   public String cancelTask() {
                
           return "/available.xhtml";
                
   }
        
        
   @Remove @Destroy
   public void remove() {
                                
   }

}

then i defined a simple workflow 

<?xml version="1.0"?>

<process-definition name="sampleflow">
    <start-state name="start">
        < task name="start">
           <assignment pooled-actors="debuggers"/>
        </ task>
        
     </start-state>
        
    <task-node name="sample">
        < task name="sample" description="sample description">
           <assignment pooled-actors="debuggers"/>
           
                <variable name="readableVar" mapped-name="readableVar" 
access="read,write"/>
                <variable name="writableVar" mapped-name="writableVar" 
access="read,write"/>
          
        </ task>
        
        
   </task-node>
   <task-node name="task1">
        < task name="another sample task" description="sample description">
            <assignment pooled-actors="debuggers"/>
            
                  <variable name="readableVar" access="read" 
mapped-name="readableVar"/>
                  <variable name="writableVar" access="read" 
mapped-name="writableVar"/>
            
        </ task>
        
   </task-node>

    <end-state name="end"/>
        
</process-definition>

The trouble is that not null variables in task named sample, become null in 
task named another sample task






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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3999961
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to