com.opensymphony.workflow.loader
Class XMLWorkflowFactory

java.lang.Object
  extended by com.opensymphony.workflow.loader.AbstractWorkflowFactory
      extended by com.opensymphony.workflow.loader.XMLWorkflowFactory
All Implemented Interfaces:
WorkflowFactory, Serializable
Direct Known Subclasses:
JDBCWorkflowFactory, SpringWorkflowFactory

public class XMLWorkflowFactory
extends AbstractWorkflowFactory
implements Serializable

Author:
Hani Suleiman Date: May 10, 2002 Time: 11:30:41 AM
See Also:
Serialized Form

Field Summary
protected  boolean reload
           
protected  Map workflows
           
 
Fields inherited from class com.opensymphony.workflow.loader.AbstractWorkflowFactory
properties
 
Constructor Summary
XMLWorkflowFactory()
           
 
Method Summary
 void createWorkflow(String name)
           
protected  String getBaseDir(org.w3c.dom.Element root)
          Get where to find workflow XML files.
protected  InputStream getInputStream(String name)
          Load the workflow config file from the current context classloader.
 Object getLayout(String workflowName)
           
 String getName()
           
 WorkflowDescriptor getWorkflow(String name, boolean validate)
          Get a workflow descriptor given a workflow name.
 String[] getWorkflowNames()
          Get all workflow names in the current factory
 void initDone()
          Invoked after the properties of the factory have been set.
 boolean isModifiable(String name)
           
 boolean removeWorkflow(String name)
           
 void renameWorkflow(String oldName, String newName)
           
 void save()
           
 boolean saveWorkflow(String name, WorkflowDescriptor descriptor, boolean replace)
          Save the workflow.
 void setLayout(String workflowName, Object layout)
           
protected  void writeXML(WorkflowDescriptor descriptor, Writer out)
           
 
Methods inherited from class com.opensymphony.workflow.loader.AbstractWorkflowFactory
getProperties, getWorkflow, init
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

workflows

protected Map workflows

reload

protected boolean reload
Constructor Detail

XMLWorkflowFactory

public XMLWorkflowFactory()
Method Detail

setLayout

public void setLayout(String workflowName,
                      Object layout)
Specified by:
setLayout in interface WorkflowFactory

getLayout

public Object getLayout(String workflowName)
Specified by:
getLayout in interface WorkflowFactory

isModifiable

public boolean isModifiable(String name)
Specified by:
isModifiable in interface WorkflowFactory

getName

public String getName()
Specified by:
getName in interface WorkflowFactory

getWorkflow

public WorkflowDescriptor getWorkflow(String name,
                                      boolean validate)
                               throws FactoryException
Description copied from interface: WorkflowFactory
Get a workflow descriptor given a workflow name.

Specified by:
getWorkflow in interface WorkflowFactory
Parameters:
name - The name of the workflow to get.
Returns:
The descriptor for the specified workflow.
Throws:
FactoryException - if the specified workflow name does not exist or cannot be located.

getWorkflowNames

public String[] getWorkflowNames()
Description copied from interface: WorkflowFactory
Get all workflow names in the current factory

Specified by:
getWorkflowNames in interface WorkflowFactory
Returns:
An array of all workflow names

createWorkflow

public void createWorkflow(String name)
Specified by:
createWorkflow in interface WorkflowFactory

initDone

public void initDone()
              throws FactoryException
Description copied from class: AbstractWorkflowFactory
Invoked after the properties of the factory have been set. Subclasses should override this method and add any specific setup code required. For example, connecting to an external resource or database.

Specified by:
initDone in interface WorkflowFactory
Overrides:
initDone in class AbstractWorkflowFactory
Throws:
FactoryException - if there was an error during initialization.

removeWorkflow

public boolean removeWorkflow(String name)
                       throws FactoryException
Specified by:
removeWorkflow in interface WorkflowFactory
Throws:
FactoryException

renameWorkflow

public void renameWorkflow(String oldName,
                           String newName)
Specified by:
renameWorkflow in interface WorkflowFactory

save

public void save()
Specified by:
save in interface WorkflowFactory

saveWorkflow

public boolean saveWorkflow(String name,
                            WorkflowDescriptor descriptor,
                            boolean replace)
                     throws FactoryException
Description copied from interface: WorkflowFactory
Save the workflow. Is it the responsibility of the caller to ensure that the workflow is valid, through the WorkflowDescriptor.validate() method. Invalid workflows will be saved without being checked.

Specified by:
saveWorkflow in interface WorkflowFactory
Parameters:
name - The name of the workflow to same.
descriptor - The descriptor for the workflow.
replace - true if an existing workflow with this name should be replaced.
Returns:
true if the workflow was saved.
Throws:
FactoryException - if there was an error saving the workflow
InvalidWorkflowDescriptorException - if the descriptor specified is invalid

getBaseDir

protected String getBaseDir(org.w3c.dom.Element root)
Get where to find workflow XML files.

Parameters:
root - The root element of the XML file.
Returns:
The absolute base dir used for finding these files or null.

getInputStream

protected InputStream getInputStream(String name)
Load the workflow config file from the current context classloader. The search order is:
  • Specified URL
  • <name>
  • /<name>
  • META-INF/<name>
  • /META-INF/<name>

  • writeXML

    protected void writeXML(WorkflowDescriptor descriptor,
                            Writer out)

    OpenSymphony Workflow Project Page