issues with loading and saving workflows

"Hubert Felber" <[email protected]>
Newsgroups gmane.comp.java.open-symphony.devel
Message-ID <[email protected]>
Hi,


--Problem: Saving a workflow that contains CDATA instruction like
 <condition type="beanshell">
    <arg name="script"><![CDATA[
       "Finished".equals(jn.getStep(6).getStatus()) && "Finished".equals(jn.getStep(8).getStatus())
     ]]></arg>
   </condition>

ommits the CDATA instruction
        <condition type="beanshell">
          <arg name="script">
	   "Finished".equals(jn.getStep(6).getStatus()) && "Finished".equals(jn.getStep(8).getStatus())
	</arg>         </condition> 
Loading the workflow again causes a parser exception. 

This concerns WriteXML functions from the following files in com.opensymphony.workflow.loader
  ConditionDescriptor.java
  FunctionDescriptor.java
  RegisterDescriptor.java
  ValidatorDescriptor.java
  ViewDescriptor.java

Solution: Maybe one could change the WriteXML functions 

from:
            out.print("<arg name=\"");
            out.print(entry.getKey());
            out.print("\">");
            out.print(entry.getValue());
            out.println("</arg>");

to:
            out.print("<arg name=\"");
            out.print(entry.getKey());
            out.print("\"><![CDATA[");
            out.print(entry.getValue());
            out.println("]]></arg>");

I am not sure if my file list is complete and if this is a general solution. What do you think?



--Problem: If a workflow is saved, the results have an additional empty attribut "id"
  original:
    <unconditional-result old-status="Finished" status="Underway" step="1" owner="${caller}"/>
      <result old-status="Finished" split="1">   is saved as:
    <unconditional-result id="" old-status="Finished" status="Underway" step="6" owner="test"/>
     <result id="" old-status="Finished" split="1"> 
  Solution:
    Modify: com.opensymphony.workflow.loader.ResultDescriptor 
    change line in:  public ResultDescriptor(Element result)
    from:    id = result.getAttribute("id");
    to:         if (result.hasAttribute("id")) {
                    id = result.getAttribute("id");
                  }


--Problem: The due-date is missing in the workflow.dtd

Regards
Hubert



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.