1 Reply Latest reply on Feb 21, 2007 6:21 AM by Harald Strack

    Transient variables between process and subprocess II

    Harald Strack Newbie

      Hi,

      why is there not the same functionality for transient variables as for persistent ones when copying variables from a superprocess to a subprocess (process state)?

      I have seen this thread

      http://www.jboss.com/index.html?module=bb&op=viewtopic&t=70407

      The proposed solution as seen in jira

      http://jira.jboss.com/jira/browse/JBPM-399

      is implemented in jbpm 3.1.2 that I am actually using.
      I think this solution is simple but does not fit for the most common case, that a superprocess calls
      a common suprocess and the subprocess does not know anything about the superprocess.

      More specific, there could be different superprocesses with different transient variable names.
      These superprocesses may call a general subprocess...
      Using the present solution forces the subprocess to know about all possible variablenames of
      all possible superprocesses - that's really bad!

      What can we do?

      Is it difficult to implement similar code for transient variables as you did for persistent ones?


       // loop over all the variable accesses
      
       Iterator iter = variableAccesses.iterator();
      
       while (iter.hasNext()) {
      
       VariableAccess variableAccess = (VariableAccess) iter.next();
      
       // if this variable access is readable
      
       if (variableAccess.isReadable()) {
      
       // the variable is copied from the super process variable name
      
       // to the sub process mapped name
      
       String variableName = variableAccess.getVariableName();
      
       Object value = superContextInstance.getVariable(variableName, superProcessToken);
      
       String mappedName = variableAccess.getMappedName();
      
       log.debug("copying super process var '"+variableName+"' to sub process var '"+mappedName+"': "+value);
      
       if (value!=null) {
      
       subContextInstance.setVariable(mappedName, value);
      
       }
      
       }
      
       }
      
      


      Should I open a jira issue? Please give me a hint for a good approach to solve this problem..

      Best regards

      Harry