4 Replies Latest reply on Apr 27, 2007 5:06 AM by vtysh

    Problem with update of variable value

    vtysh

      Sorry for my ugly english at first.

      I can't decide my problem for a few days. I am working on web application similiar to native jbpm demo app.

      I am using this code to load taskInstance and save variables (little simplified):

       JbpmContext jbpmContext=null;
       try
       {
       jbpmContext=createJbpmContext();
       long taskId=0;
       String taskIds=request.getParameter("taskId");
       if(taskIds!=null)
       {
       try
       {
       taskId=Long.parseLong(taskIds);
       }
       catch(NumberFormatException e)
       {
       }
       }
       TaskInstance taskInstance=jbpmContext.getTaskMgmtSession().loadTaskInstance(taskId);
       List varAccesses=taskInstance.getTask().getTaskController().getVariableAccesses();
       if(varAccesses!=null)
       {
       for(Iterator iter=varAccesses.iterator();iter.hasNext();)
       {
       VariableAccess varAccess=(VariableAccess)iter.next();
       if(varAccess.isWritable())
       {
       String name=varAccess.getVariableName();
       String value=pRequest.getParameter(name);
       if(value==null||value.length()==0)
       {
       if(varAccess.isRequired())
       {
       throw new UserError("parameter_required");
       }
       }
       else
       {
       taskInstance.setVariable(name,value);
       }
       }
       }
       }
       //marker 1
       taskInstance.end(request.getParameter("transition"));
       //marker 2
       }
       finally
       {
       jbpmContext.close();
       }
      


      Before line marked as "marker 1" all seems to be ok, variable updates theirs values, if i display it to System.out i see, that values is changed. But after i end task instance if variable was setted before, in some earlier task, then it backs old value again.
      For example: variable "test" has value "first value" which was setted in some previouse task node. In current task node i am trying to update it to "second value" all seems to be good until i end task node. Before i end it i have a "second value" as a value of variable "test", but after i end task value returns to previous one and has "first value" as a value.

      Please explain what am i doing wrong?

      Thank you.