code: protected Map<String,String> createVariableBinding(List<Variable> childVars)
              throws Exception {
          Map<String,String> validParams = new HashMap<String,String>();
          String map = getAttributeValue(VARIABLES);
          if (map==null) map = "";
          String vn, v;
          for (Variable childVar : childVars) {
              if (!allowInput(childVar)) continue;
              vn = childVar.getName();
              v = StringHelper.getMapValue(map, vn, ';');
              if (vn.equals(VariableConstants.REQUEST)) {
                  VariableInstance varinst = getVariableInstance(VariableConstants.REQUEST);
                  v = varinst==null?null:varinst.getStringValue();
              } else if (vn.equals(VariableConstants.MASTER_DOCUMENT)) {
                  VariableInstance varinst = getVariableInstance(VariableConstants.MASTER_DOCUMENT);
                  v = varinst==null?null:varinst.getStringValue();
              } else {
                  v = evaluateBindingValue(childVar, v);
              }
              if (v != null && v.length() > 0)
                  validParams.put(vn, v);
          }
          return validParams;
      }
docs: This method returns variable bindings to be passed into subprocess.
  The method uses the attribute "variables" values as a mapping.
  The binding of each variable is an expression in the Java Expression Language (beginning with '#'),
  or the Magic Box rule language (beginning with '$').
  Example bindings: #{myVar}_suffix, "var1=12*12;var2=$parent_var.LIST.LN"
  Subclass may override this method to obtain variable binding in other ways.
  
  @param childVars variables defined for the child process
  @return a map (name-value pairs) of variable bindings
  @throws Exception various types of exceptions