RAT (Release Audit Tool) results

The following document contains the results of RAT (Release Audit Tool).

*****************************************************
Summary
-------
Notes: 2
Binaries: 4
Archives: 0
Standards: 119

Apache Licensed: 93
Generated Documents: 1

JavaDocs are generated and so license header is optional
Generated files do not required license headers

25 Unknown Licenses

*******************************

Archives (+ indicates readable, $ unreadable): 

 
*****************************************************
  Files with AL headers will be marked L
  Binary files (which do not require AL headers) will be marked B
  Compressed archives will be marked A
  Notices, licenses etc will be marked N
 !????? build.properties.sample
  GEN   build.xml
 !????? checkstyle.xml
  N     LICENSE.txt
  N     NOTICE.txt
  AL    pom.xml
 !????? project.properties
 !????? project.xml
 !????? PROPOSAL.html
 !????? src/conf/MANIFEST.MF
  AL    src/java/org/apache/commons/workflow/Activity.java
  AL    src/java/org/apache/commons/workflow/base/BaseActivity.java
  AL    src/java/org/apache/commons/workflow/base/BaseBlock.java
  AL    src/java/org/apache/commons/workflow/base/BaseContext.java
  AL    src/java/org/apache/commons/workflow/base/BaseContextBean.java
  AL    src/java/org/apache/commons/workflow/base/BaseDescriptor.java
  AL    src/java/org/apache/commons/workflow/base/BaseRegistry.java
  AL    src/java/org/apache/commons/workflow/base/BaseRuleSet.java
  AL    src/java/org/apache/commons/workflow/base/BaseScope.java
  AL    src/java/org/apache/commons/workflow/base/BaseStep.java
  AL    src/java/org/apache/commons/workflow/base/DescriptorStep.java
 !????? src/java/org/apache/commons/workflow/base/package.html
  AL    src/java/org/apache/commons/workflow/Block.java
  AL    src/java/org/apache/commons/workflow/BlockState.java
  AL    src/java/org/apache/commons/workflow/Context.java
  AL    src/java/org/apache/commons/workflow/ContextEvent.java
  AL    src/java/org/apache/commons/workflow/ContextListener.java
  AL    src/java/org/apache/commons/workflow/core/AndStep.java
  AL    src/java/org/apache/commons/workflow/core/BreakStep.java
  AL    src/java/org/apache/commons/workflow/core/CallStep.java
  AL    src/java/org/apache/commons/workflow/core/ConstructStep.java
  AL    src/java/org/apache/commons/workflow/core/ContinueStep.java
  AL    src/java/org/apache/commons/workflow/core/CoreRuleSet.java
  AL    src/java/org/apache/commons/workflow/core/DuplicateStep.java
  AL    src/java/org/apache/commons/workflow/core/ExitStep.java
  AL    src/java/org/apache/commons/workflow/core/GetStep.java
  AL    src/java/org/apache/commons/workflow/core/GotoStep.java
  AL    src/java/org/apache/commons/workflow/core/IfAnyStep.java
  AL    src/java/org/apache/commons/workflow/core/IfNotAnyStep.java
  AL    src/java/org/apache/commons/workflow/core/IfNotStep.java
  AL    src/java/org/apache/commons/workflow/core/IfStep.java
  AL    src/java/org/apache/commons/workflow/core/InvokeStep.java
  AL    src/java/org/apache/commons/workflow/core/LoadStep.java
 !????? src/java/org/apache/commons/workflow/core/NotAndStep.java
 !????? src/java/org/apache/commons/workflow/core/NotOrStep.java
  AL    src/java/org/apache/commons/workflow/core/OrStep.java
 !????? src/java/org/apache/commons/workflow/core/package.html
  AL    src/java/org/apache/commons/workflow/core/PopStep.java
  AL    src/java/org/apache/commons/workflow/core/PutStep.java
  AL    src/java/org/apache/commons/workflow/core/RemoveStep.java
  AL    src/java/org/apache/commons/workflow/core/StringStep.java
  AL    src/java/org/apache/commons/workflow/core/SuspendStep.java
  AL    src/java/org/apache/commons/workflow/core/SwapStep.java
  AL    src/java/org/apache/commons/workflow/core/WhileAnyStep.java
  AL    src/java/org/apache/commons/workflow/core/WhileNotAnyStep.java
  AL    src/java/org/apache/commons/workflow/core/WhileNotStep.java
  AL    src/java/org/apache/commons/workflow/core/WhileStep.java
  AL    src/java/org/apache/commons/workflow/demo/Main.java
 !????? src/java/org/apache/commons/workflow/demo/main.xml
  AL    src/java/org/apache/commons/workflow/Descriptor.java
  AL    src/java/org/apache/commons/workflow/Descriptors.java
  AL    src/java/org/apache/commons/workflow/io/DisplayStep.java
  AL    src/java/org/apache/commons/workflow/io/GetStep.java
  AL    src/java/org/apache/commons/workflow/io/IoRuleSet.java
 !????? src/java/org/apache/commons/workflow/io/package.html
  AL    src/java/org/apache/commons/workflow/io/PeekStep.java
  AL    src/java/org/apache/commons/workflow/io/ReadStep.java
  AL    src/java/org/apache/commons/workflow/io/WriteStep.java
  AL    src/java/org/apache/commons/workflow/Iterator.java
  AL    src/java/org/apache/commons/workflow/Owner.java
 !????? src/java/org/apache/commons/workflow/package.html
  AL    src/java/org/apache/commons/workflow/Registry.java
  AL    src/java/org/apache/commons/workflow/Scope.java
  AL    src/java/org/apache/commons/workflow/ScopeEvent.java
  AL    src/java/org/apache/commons/workflow/ScopeListener.java
  AL    src/java/org/apache/commons/workflow/Step.java
  AL    src/java/org/apache/commons/workflow/StepException.java
  AL    src/java/org/apache/commons/workflow/util/ContextSupport.java
  AL    src/java/org/apache/commons/workflow/util/MapEntry.java
 !????? src/java/org/apache/commons/workflow/util/package.html
  AL    src/java/org/apache/commons/workflow/util/ScopeSupport.java
  AL    src/java/org/apache/commons/workflow/util/WorkflowUtils.java
  AL    src/java/org/apache/commons/workflow/web/ActivityServlet.java
  AL    src/java/org/apache/commons/workflow/web/DemoBean.java
  AL    src/java/org/apache/commons/workflow/web/ForwardStep.java
  AL    src/java/org/apache/commons/workflow/web/GotoStep.java
  AL    src/java/org/apache/commons/workflow/web/HttpSessionScope.java
  AL    src/java/org/apache/commons/workflow/web/IncludeResponse23.java
  AL    src/java/org/apache/commons/workflow/web/IncludeStep23.java
 !????? src/java/org/apache/commons/workflow/web/package.html
  AL    src/java/org/apache/commons/workflow/web/PopulateStep.java
  AL    src/java/org/apache/commons/workflow/web/ServletContextScope.java
  AL    src/java/org/apache/commons/workflow/web/ServletRequestScope.java
  AL    src/java/org/apache/commons/workflow/web/WebContext.java
  AL    src/java/org/apache/commons/workflow/web/WebRuleSet.java
  AL    src/java/org/apache/commons/workflow/WorkflowException.java
  B     src/site/resources/images/workflow-logo-white.png
  B     src/site/resources/images/workflow-logo-white.xcf
  AL    src/site/site.xml
  AL    src/test/org/apache/commons/workflow/base/Address.java
  AL    src/test/org/apache/commons/workflow/base/BaseActivityTestCase.java
  AL    src/test/org/apache/commons/workflow/base/BaseContextTestCase.java
  AL    src/test/org/apache/commons/workflow/base/BaseExecuteTestCase.java
  AL    src/test/org/apache/commons/workflow/base/Employee.java
  AL    src/test/org/apache/commons/workflow/base/TestStep.java
  AL    src/test/org/apache/commons/workflow/core/CoreBlockTestCase.java
  AL    src/test/org/apache/commons/workflow/core/CoreExecuteTestCase.java
  AL    src/test/org/apache/commons/workflow/core/TestBean.java
  AL    src/test/org/apache/commons/workflow/io/IOExecuteTestCase.java
  AL    src/test/org/apache/commons/workflow/TestAll.java
  AL    src/test/org/apache/commons/workflow/web/WebContextTestCase.java
  AL    src/test/org/apache/commons/workflow/web/WebExecuteTestCase.java
 !????? src/wizard-demo/finish.jsp
 !????? src/wizard-demo/index.jsp
 !????? src/wizard-demo/WEB-INF/web.xml
 !????? src/wizard-demo/WEB-INF/wizard.xml
 !????? src/wizard-demo/wizard-1.jsp
 !????? src/wizard-demo/wizard-2.jsp
 !????? src/wizard-demo/wizard-3.jsp
 !????? STATUS.html
 !????? xdocs/downloads.xml
  B     xdocs/images/workflow-logo-white.png
  B     xdocs/images/workflow-logo-white.xcf
 !????? xdocs/index.xml
  AL    xdocs/navigation.xml
 
 *****************************************************
 Printing headers for files without AL header...
 
 
 =======================================================================
 ==build.properties.sample
 =======================================================================
 # build.properties.sample - Sample build.properties for "workflow"

# Base properties for expansion below
commons.home=../../jakarta-commons
sandbox.home=../../jakarta-commons-sandbox
jaxp.home=/usr/local/jaxp-1.1
junit.home=/usr/local/junit3.7

# Derived home directories
beanutils.home=${commons.home}/beanutils
collections.home=${commons.home}/collections
digester.home=${commons.home}/digester
jpath.home=${sandbox.home}/jpath
logging.home=${commons.home}/logging
servletapi.home=../../jakarta-servletapi-4

# Jakarta JAR files
commons-beanutils.jar=${beanutils.home}/dist/commons-beanutils.jar
commons-collections.jar=${collections.home}/dist/commons-collections.jar
commons-digester.jar=${digester.home}/dist/commons-digester.jar
commons-logging.jar=${logging.home}/dist/commons-logging.jar
servlet.jar=${servletapi.home}/lib/servlet.jar

# External packages
jaxp.jaxp.jar=${jaxp.home}/jaxp.jar
jaxp.parser.jar=${jaxp.home}/crimson.jar
jaxp.xalan.jar=${jaxp.home}/xalan.jar
junit.jar=${junit.home}/junit.jar

# URL for the "get" test in IOExecuteTestCase
ioexecute.url=http://localhost:8080/index.html

 =======================================================================
 ==checkstyle.xml
 =======================================================================
 <?xml version="1.0"?>
<!DOCTYPE module PUBLIC
    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">

<!--
  Checkstyle checks configured for Maven.
-->

<module name="Checker">

    <!-- Checks that a package.html file exists for each package.     -->
    <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
    <module name="PackageHtml"/>

    <!-- Checks whether files end with a new line.                        -->
    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
    <module name="NewlineAtEndOfFile"/>

    <!-- Checks that property files contain the same keys.         -->
    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
    <module name="Translation"/>

    <module name="TreeWalker">

        <property name="cacheFile" value="${checkstyle.cache.file}"/>

        <!-- ************************************************************** -->
        <!-- Checks that are different from the sun coding conventions ones -->
        <!-- ************************************************************** -->
        <module name="Header">
            <property name="headerFile" value="${basedir}/LICENSE.txt"/>
            <property name="ignoreLines" value="2,3,4,10"/>
        </module>
        <property name="tabWidth" value="4"/>
        <module name="LeftCurly">
          <property name="option" value="eol"/>
        </module>
        <module name="RightCurly">
          <property name="option" value="alone"/>
        </module>
        <module name="LineLength">
          <property name="max" value="132"/>
        </module>
        <module name="MethodLength">
          <property name="max" value="175"/>
        </module>
        <!-- No Paren pad check
        <module name="ParenPad"/>
        -->

 =======================================================================
 ==project.properties
 =======================================================================
 maven.checkstyle.properties = checkstyle.xml

# uncomment the next line to work in offline mode (no jar download & no linkcheck)
#maven.mode.online=
maven.changelog.factory=org.apache.maven.svnlib.SvnChangeLogFactory

maven.javadoc.author=false
maven.javadoc.links=http://java.sun.com/products/jdk/1.4/docs/api

maven.xdoc.jsl=../commons-build/commons-site.jsl
maven.xdoc.date=bottom
maven.xdoc.poweredby.image=maven-feather.png
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.developmentProcessUrl=http://commons.apache.org/charter.html
maven.xdoc.includeProjectDocumentation=yes

maven.compile.debug=on
maven.compile.deprecation=off
maven.compile.optimize=off

maven.jarResources.basedir=src/java
maven.jar.excludes=**/package.html
maven.junit.fork=true
maven.junit.sysproperties=org.xml.sax.driver
org.xml.sax.driver=org.apache.xerces.parsers.SAXParser

clover.excludes=**/Test*.java

 =======================================================================
 ==project.xml
 =======================================================================
 <?xml version="1.0"?>
<project>
  <extend>../commons-build/sandbox-project.xml</extend>
  <name>Commons Workflow</name>
  <id>commons-workflow</id>
  <logo>/images/workflow-logo-white.png</logo>
  <url>http://commons.apache.org/sandbox/workflow/</url>
  <inceptionYear>2001</inceptionYear>
  <shortDescription>Commons Workflow</shortDescription>
  <description>Commons Workflow</description>

  <currentVersion>0.1-dev</currentVersion>
  <versions>
  </versions>
  <branches>
  </branches>

  <developers>
    <developer>
      <name>Craig R. McClanahan</name>
      <id>craigmcc</id>
      <email></email>
      <organization></organization>
    </developer>
  </developers>
  
  <dependencies>
    <dependency>
      <id>servletapi</id>
      <version>2.3</version>
    </dependency>
    <dependency>
      <id>commons-beanutils</id>
      <version>1.6</version>
    </dependency>
    <dependency>
      <id>commons-digester</id>
      <version>1.5</version>
    </dependency>
    <dependency>
      <id>commons-collections</id>
      <version>2.1</version>
    </dependency>
    <dependency>
      <id>commons-logging</id>
      <version>1.0.4</version>
    </dependency>
    <dependency>
      <id>commons-jxpath</id>
      <version>1.1</version>

 =======================================================================
 ==PROPOSAL.html
 =======================================================================
 <html>
<head>
<title>Proposal for Workflow Package</title>
</head>
<body bgcolor="white">

<div align="center">
<h1>Proposal for <em>Workflow</em> Package</h1>
</div>

<h3>(0) Rationale</h3>

<p>Modern application architecture and design practices recommend the concept
of "composition" (of existing modules and components) in the assembly of an
overall application, to maximize the resuse of previously built functionality.
However, it is still generally necessary to write original code that "glues"
the components together.  It would be useful if individuals familiar with the
business requirements of their systems could create "scripts" to represent
the linkages between components, rather than requiring Java code.  The
<em>Workflow</em> proposal intends to create support for just such a
capability.</p>

<p>Scripted workflows is an idea that can be used in many different
application environments and use cases.  In particular, a highly desired use
is in managing the interaction with web application users, where the
transaction being performed requires more than one HTML page to be displayed.
However, the <em>Workflow</em> implementation will be strictly layered so
that the underlying scripting engine can be used without any reliance on
web layer APIs</p>


<h3>(1) Scope of the Package</h3>

<p>The <em>Workflow</em> project shall create and maintain an engine to
manage and execute scripts, codified in XML.  The basic engine shall be
environment independent, but specialized implementations of the basic engine
can adapt the engine to that environment.</p>

<p>One specialized implementation will be included in the <em>Workflow</em>
package itself - an adapter to integrate the workflow engine into the web
layer, by mapping the Workflow concept of bean scopes into the scopes
provided by the Servlet API (request, session, and application).  This
implementation will be independent of any particular web application
framework - it is expected that frameworks will further specialize the
web layer implementation in order to integrate the framework's own
capabilities and features.</p>

<p>Scripts for the workflow engine will be codified in XML.  It shall be
possible for specialized implementations to register their own sets of custom
Step implementations, under a specific XML namespace, to transparently extend

 =======================================================================
 ==src/conf/MANIFEST.MF
 =======================================================================
 Extension-Name: @name@
Specification-Vendor: Apache Software Foundation
Specification-Version: 1.0
Implementation-Vendor: Apache Software Foundation
Implementation-Version: @version@


 =======================================================================
 ==src/java/org/apache/commons/workflow/base/package.html
 =======================================================================
 <body>
<p>Basic implementations and base classes for Workflow Management System
applications.</p>

<p>This package contains basic implementations of the primary interfaces
defined in the <code>org.apache.commons.workflow</code> package, and can be
either used directly or as superclasses on which more specialized
implementations are created.</p>
</body>

 =======================================================================
 ==src/java/org/apache/commons/workflow/core/NotAndStep.java
 =======================================================================
 package org.apache.commons.workflow.core;

import org.apache.commons.workflow.Context;
import org.apache.commons.workflow.Descriptor;
import org.apache.commons.workflow.Step;
import org.apache.commons.workflow.StepException;


/**
 * <p>Evaluate properties specified by the associated Descriptors, and
 * transfer control to the specified step if ALL of them are
 * <code>false</code> (if boolean) or null (if Object).
 *
 * <b>This is the exact opposite of AndStep</b>
 *
 * To avoid non-deterministic evaluation stack behavior, all of the 
 * specified Descriptors are always evaluated.</p>
 *
 * <p>Supported Attributes:</p>
 * <ul>
 * <li><strong>step</strong> - Identifier of the Step to which control
 *     should be transferred if the condition is not met.</li>
 * </ul>
 *
 * @version $Revision: 155475 $ $Date: 2005-02-26 13:31:11 +0000 (Sat, 26 Feb 2005) $
 * @author Preston Sheldon
 */

public class NotAndStep extends GotoStep {


    // ----------------------------------------------------------= Constructors


    /**
     * Construct a default instance of this Step.
     */
    public NotAndStep() {

        super();

    }
    /**
     * Construct an instance of this Step with the specified identifier.
     *
     * @param id Step identifier
     */
    public NotAndStep(String id) {

        this(id, null, null);

 =======================================================================
 ==src/java/org/apache/commons/workflow/core/NotOrStep.java
 =======================================================================
 package org.apache.commons.workflow.core;

import org.apache.commons.workflow.Context;
import org.apache.commons.workflow.Descriptor;
import org.apache.commons.workflow.Step;
import org.apache.commons.workflow.StepException;


/**
 * <p>Evaluate properties specified by the associated Descriptors, and
 * transfer control to the specified step if ANY of them are
 * <code>false</code> (if boolean) or null (if Object).
 *
 * <b>This is the exact opposite of OrStep</b>
 *
 * To avoid non-deterministic evaluation stack behavior, all of the
 * specified Descriptors are always evaluated.</p>
 *
 * <p>Supported Attributes:</p>
 * <ul>
 * <li><strong>step</strong> - Identifier of the Step to which control
 *     should be transferred if the condition is met.</li>
 * </ul>
 *
 * @version $Revision: 155475 $ $Date: 2005-02-26 13:31:11 +0000 (Sat, 26 Feb 2005) $
 * @author Preston Sheldon
 */

public class NotOrStep extends GotoStep {


    // ----------------------------------------------------------= Constructors


    /**
     * Construct a default instance of this Step.
     */
    public NotOrStep() {

        super();

    }
    /**
     * Construct an instance of this Step with the specified identifier.
     *
     * @param id Step identifier
     */
    public NotOrStep(String id) {

        this(id, null, null);

 =======================================================================
 ==src/java/org/apache/commons/workflow/core/package.html
 =======================================================================
 <body>
<p>Implementations of <code>Steps</code> in the <em>core</em> library.</p>

<div align="center">
<h2>Core Step Library - Overview</h2>
</div>

<p>This package contains
<a href="../Step.html">org.apache.commons.workflow.Step</a> implementations
for the <em>core</em> library.  This library includes Steps for fundamental
object stack manipulation, as well as conditional branching.  Such Steps are
commonly required in defining Activities, no matter what domain you are using
the Workflow system in.</p>

<p>The sections below define each of the Step definitions included in this
library, utilizing the XML syntax that is recognized by the Digester used to
process your Activity definition files.  Although you can use any namespace
prefix, the convention is to declare <code>core</code> as the namespace prefix,
as in the following example:</p>
<pre>
  &lt;base:activity id="Demonstration Activity"
    xmlns:base="http://commons.apache.org/workflow/base"
    xmlns:core="http://commons.apache.org/workflow/core"
  &gt;

    &lt;core:string value="This is a string value"/&gt;

  &lt;/base:activity&gt;
</pre>

<p><em>NOTE</em> - It is <strong>not</strong> required that you use the XML
syntax, processed with a Digester, to initialize the Steps associated with
each Activity.  However, this usage is very convenient, and is likely to be
the most common case, so the Steps are documented from that perspective.  To
use the underlying implementation classes directly, see the Javadocs for each
Step implementation class, just as you would for any other Java class.</p>

<div align="center">
[<a href="#core:and">core:and</a>]
[<a href="#core:call">core:call</a>]
[<a href="#core:construct">core:construct</a>]
[<a href="#core:duplicate">core:duplicate</a>]
[<a href="#core:exit">core:exit</a>]
[<a href="#core:get">core:get</a>]
[<a href="#core:goto">core:goto</a>]
[<a href="#core:if">core:if</a>]
[<a href="#core:ifAny">core:ifAny</a>]
[<a href="#core:ifNot">core:ifNot</a>]
[<a href="#core:ifNotAny">core:ifNotAny</a>]
[<a href="#core:invoke">core:invoke</a>]

 =======================================================================
 ==src/java/org/apache/commons/workflow/demo/main.xml
 =======================================================================
 <base:activity id="Demonstration Activity"
   xmlns:base="http://commons.apache.org/workflow/base"
   xmlns:core="http://commons.apache.org/workflow/core"
   xmlns:io="http://commons.apache.org/workflow/io"
   xmlns:web="http://commons.apache.org/workflow/web">

  <core:string id="01" value="This is a string value"/>

  <core:put id="02">
    <core:descriptor name="foo"/>
  </core:put>

  <core:get id="03">
    <core:descriptor xpath="foo"/>
  </core:get>

  <io:peek id="04"/>

  <core:pop id="05"/>

  <core:string id="06" value="Non-null String"/>

  <core:if id="07">
    <core:descriptor/> <!-- Top of stack value -->
    <core:string id="07a" value="Correctly exected the conditional"/>
    <io:peek id="07b"/>
    <core:pop id="07c"/>
  </core:if>

  <core:string id="08" value="Non-null String"/>

  <core:while id="09">
    <core:descriptor/>
    <core:string id="09a" value="While should iterate once"/>
    <io:peek id="09b"/>
    <core:pop id="09c"/>
    <core:string id="09d" value=""/>
  </core:while>

</base:activity>

 =======================================================================
 ==src/java/org/apache/commons/workflow/io/package.html
 =======================================================================
 <body>
<p>Implementations of <code>Steps</code> in the <em>io</em> library.</p>

<div align="center">
<h2>I/O Step Library - Overview</h2>
</div>

<p>This package contains
<a href="../Step.html">org.apache.commons.workflow.Step</a> implementations
for the <em>io</em> library.  This library includes Steps for importing
information from (or exporting information to) external locations.</p>

<p>The sections below define each of the Step definitions included in this
library, utilizing the XML syntax that is recognized by the Digester used to
process your Activity definition files.  Although you can use any namespace
prefix, the convention is to declare <code>io</code> as the namespace prefix,
as in the following example:</p>
<pre>
  &lt;base:activity id="Demonstration Activity"
    xmlns:base="http://commons.apache.org/workflow/base"
    xmlns:core="http://commons.apache.org/workflow/core"
    xmlns:io="http://commons.apache.org/workflow/io"
  &gt;

    &lt;io:write file="topitem.txt"/&gt;

  &lt;/base:activity&gt;
</pre>

<p><em>NOTE</em> - It is <strong>not</strong> required that you use the XML
syntax, processed with a Digester, to initialize the Steps associated with
each Activity.  However, this usage is very convenient, and is likely to be
the most common case, so the Steps are documented from that perspective.  To
use the underlying implementation classes directly, see the Javadocs for each
Step implementation class, just as you would for any other Java class.</p>

<div align="center">
[<a href="#io:display">io:display</a>]
[<a href="#io:get">io:get</a>]
[<a href="#io:peek">io:peek</a>]
[<a href="#io:read">io:read</a>]
[<a href="#io:write">io:write</a>]
</div>

<div align="center">
<h2>I/O Step Library - Step Definitions</h2>
</div>

<a name="io:display"></a>
<h3>io:display</h3>

 =======================================================================
 ==src/java/org/apache/commons/workflow/package.html
 =======================================================================
 <body>
<p>This package contains the core interfaces and classes that define the major
components of the workflow management system.  There are divided into several
categories, as follows.</p>

<p>The static representation of a set of possible workflows is represented
internally as a tree of objects that implement the following interfaces.
There is a one-to-many relationship between each component and the one
immediately below it.</p>
<ul>
<li><strong>Process</strong> - A "business process" that is composed of several
    independent activities, possibly executed by different individuals at
    different times.  <em>NOTE - not yet implemented</em>.</li>
<li><strong>Activity</strong> - A particular "business task" that may be
    comprised of one or more discrete computations, typically involving
    interaction with a single individual in a manner that is outside the
    scope of the workflow system.</li>
<li><strong>Step</strong> - A discrete computation that can be performed as
    part of an <code>Activity</code>.  Informally, the set of defined
    <code>Steps</code> can be considered to be the "instruction set" of a
    "workflow computer".  Several sets of predefined <code>Step</code>
    implementations are included, and additional sets can be defined by
    workflow implementations layered on top of the basic classes (for example,
    the web-layer Steps are valid only within a web application, but such
    a workflow implementation can still use all of the core Steps).</li>
</ul>

<p>The components described above are typically represented textually in an
XML document whose format is not of interest to the core platform.  However,
the internal representation of these components is shared among concurrent
users of those components, so the corresponding object tree (and the bean
properties used to represent the linkages) should be considered read only
after it is constructed.</p>

<p>The dynamic state of a computation is represented by the following
components.  Each "in progress" computation, whether executed by the same
thread or different threads, <em>must</em> have its own <code>Context</code>
to represent the current state.</p>
<ul>
<li><strong>Context</strong> - The current execution state of a particular
    <code>Activity</code>.  Each <code>Context</code> provides an evaluation
    stack for in-process computations, plus access to one or more
    <code>Scopes</code> for interacting with the object model of the
    surrounding application environment.</li>
<li><strong>Scope</strong> - An implementation of <code>java.util.Map</code>
    that provides a pluggable mechanism to attach the workflow engine to the
    object model of a surrounding application.  Every <code>Context</code>
    provides at least one <code>Scope</code> (called "local"), and
    additional <code>Scopes</code> can be registered by the application.
    For example, a web application implementation of the workflow system

 =======================================================================
 ==src/java/org/apache/commons/workflow/util/package.html
 =======================================================================
 <body>
<p>General purpose utility classes required by the Workflow Management
System.</p>
</body>

 =======================================================================
 ==src/java/org/apache/commons/workflow/web/package.html
 =======================================================================
 <body>
<p>Implementations of <code>Steps</code> in the <em>web</em> library.</p>

<div align="center">
<h2>Web Step Library - Overview</h2>
</div>

<p>This package contains
<a href="../Step.html">org.apache.commons.workflow.Step</a> implementations
for the <em>web</em> library.  This library includes Steps for that are
executed in a web application, utilizing the
<code>org.apache.commons.workflow.web.WebContext</code> implementation
of Context.  Utilizing this feature makes the request, session, and
application scope attributes of the servlet API available to workflows
as Scopes named "request", "session", and "application", respectively.</p>

<p>The sections below define each of the Step definitions included in this
library, utilizing the XML syntax that is recognized by the Digester used to
process your Activity definition files.  Although you can use any namespace
prefix, the convention is to declare <code>io</code> as the namespace prefix,
as in the following example:</p>
<pre>
  &lt;base:activity id="Demonstration Activity"
    xmlns:base="http://commons.apache.org/workflow/base"
    xmlns:core="http://commons.apache.org/workflow/core"
    xmlns:web="http://commons.apache.org/workflow/web"
  &gt;

    &lt;web:forward page="/mainMenu.jsp"/&gt;

  &lt;/base:activity&gt;
</pre>

<p><em>NOTE</em> - It is <strong>not</strong> required that you use the XML
syntax, processed with a Digester, to initialize the Steps associated with
each Activity.  However, this usage is very convenient, and is likely to be
the most common case, so the Steps are documented from that perspective.  To
use the underlying implementation classes directly, see the Javadocs for each
Step implementation class, just as you would for any other Java class.</p>

<div align="center">
[<a href="#web:forward">web:forward</a>]
[<a href="#web:goto">web:goto</a>]
[<a href="#web:include">web:include</a>]
[<a href="#web:populate">web:populate</a>]
</div>

<div align="center">
<h2>Web Step Library - Step Definitions</h2>
</div>

 =======================================================================
 ==src/wizard-demo/finish.jsp
 =======================================================================
 <html>
<head>
<title>Workflow Wizard Demo - End</title>
</head>
<body bgcolor="white">

<jsp:useBean id="bean" scope="session"
          class="org.apache.commons.workflow.web.DemoBean"/>

<p>The collected information about this person was:</p>

<table border="0" cellpadding="5">

  <tr>
    <th align="right">First Name:</th>
    <td align="left">
      <jsp:getProperty name="bean" property="firstName"/>
    </td>
  </tr>

  <tr>
    <th align="right">Last Name:</th>
    <td align="left">
      <jsp:getProperty name="bean" property="lastName"/>
    </td>
  </tr>

  <tr>
    <th align="right">Favorite Car:</th>
    <td align="left">
      <jsp:getProperty name="bean" property="favoriteCar"/>
    </td>
  </tr>

  <tr>
    <th align="right">Favorite City:</th>
    <td align="left">
      <jsp:getProperty name="bean" property="favoriteCity"/>
    </td>
  </tr>

  <tr>
    <th align="right">Favorite Sport:</th>
    <td align="left">
      <jsp:getProperty name="bean" property="favoriteSport"/>
    </td>
  </tr>

  <tr>
    <th align="right">Favorite Team:</th>

 =======================================================================
 ==src/wizard-demo/index.jsp
 =======================================================================
 <html>
<head>
<title>Workflow Wizard Demo - Begin</title>
</head>
<body bgcolor="white">

<jsp:useBean id="bean" scope="session"
          class="org.apache.commons.workflow.web.DemoBean"/>

<p>This web application illustrates a very simple wizard-style user interface
based upon the <em>Workflow</em> package that is currently in the sandbox of
the Jakarta Commons project.  The actual steps of the activity being
executed are in the <code>/WEB-INF/wizard.xml</code> definition file
within the web application.</p>

<p>The demo simply populates properties of a JavaBean, spread across multiple
input pages.  Navigation controls on each page of the wizard allow the user
to proceed to the previous page, the next page, or to finish the wizard (in
the usual style for this interface design pattern.</p>

<form method="POST" action="wizard">
  <input type="hidden" name="step" value="wizard-0">
  <input type="submit" value="Start">
</form>

</body>
</html>

 =======================================================================
 ==src/wizard-demo/WEB-INF/web.xml
 =======================================================================
 <?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

  <!-- "Wizard" Activity Servlet Configuration -->
  <servlet>
    <servlet-name>wizard</servlet-name>
    <servlet-class>
      org.apache.commons.workflow.web.ActivityServlet
    </servlet-class>
    <init-param>
      <param-name>activity</param-name>
      <param-value>/WEB-INF/wizard.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>999</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>999</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!-- "Wizard" Activity Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>wizard</servlet-name>
    <url-pattern>/wizard</url-pattern>
  </servlet-mapping> 

  <!-- The Welcome File List -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

 =======================================================================
 ==src/wizard-demo/WEB-INF/wizard.xml
 =======================================================================
 <base:activity id="Web Wizard Demo"
   xmlns:base="http://commons.apache.org/workflow/base"
   xmlns:core="http://commons.apache.org/workflow/core"
   xmlns:io="http://commons.apache.org/workflow/io"
   xmlns:web="http://commons.apache.org/workflow/web">

  <!-- Reset the session bean properties -->
  <core:invoke id="wizard-0" method="reset">
    <core:descriptor name="bean" scope="session"/>
  </core:invoke>

  <!-- Display page 1 of 3 -->
  <web:forward id="wizard-1" page="/wizard-1.jsp"/>
  <web:populate id="populate-1">
    <web:descriptor name="bean" scope="session"/>
  </web:populate>
  <web:goto id="goto-1"/>

  <!-- Display page 2 of 3 -->
  <web:forward id="wizard-2" page="/wizard-2.jsp"/>
  <web:populate id="populate-2">
    <web:descriptor name="bean" scope="session"/>
  </web:populate>
  <web:goto id="goto-2"/>

  <!-- Display page 3 of 3 -->
  <web:forward id="wizard-3" page="/wizard-3.jsp"/>
  <web:populate id="populate-3">
    <web:descriptor name="bean" scope="session"/>
  </web:populate>
  <web:goto id="goto-3"/>

  <!-- Display the summary page -->
  <web:forward id="finish" page="/finish.jsp"/>
  <core:goto id="finish-goto" step="wizard-0"/>

</base:activity>

 =======================================================================
 ==src/wizard-demo/wizard-1.jsp
 =======================================================================
 <html>
<head>
<title>Workflow Wizard Demo - Page 1 of 3</title>
<script language="javascript">
  function submitForm(s) {
    document.wizardform.step.value = s;
    document.wizardform.submit();
    return false;
  }
</script>
</head>
<body bgcolor="white">

<jsp:useBean id="bean" scope="session"
          class="org.apache.commons.workflow.web.DemoBean"/>

<form name="wizardform" method="POST" action="wizard">

<table border="0" cellspacing="5">

  <tr>
    <th align="right">First Name:</th>
    <td align="left">
      <input type="text" name="firstName" size="30"
            value="<%= bean.getFirstName() %>">
    </td>
  </tr>

  <tr>
    <th align="right">Last Name:</th>
    <td align="left">
      <input type="text" name="lastName" size="30"
            value="<%= bean.getLastName() %>">
    </td>
  </tr>

  <tr>
    <td align="center" colspan="2">
      <input type="hidden" name="step" value="unknown">
      <input type="reset" value="Reset">
      <input type="submit" value="Next" onclick="submitForm('wizard-2')">
      <input type="submit" value="Finish" onclick="submitForm('finish')">
    </td>
  </tr>

</table>

</form>

</body>

 =======================================================================
 ==src/wizard-demo/wizard-2.jsp
 =======================================================================
 <html>
<head>
<title>Workflow Wizard Demo - Page 2 of 3</title>
<script language="javascript">
  function submitForm(s) {
    document.wizardform.step.value = s;
    document.wizardform.submit();
    return false;
  }
</script>
</head>
<body bgcolor="white">

<jsp:useBean id="bean" scope="session"
          class="org.apache.commons.workflow.web.DemoBean"/>

<form name="wizardform" method="POST" action="wizard">

<table border="0" cellspacing="5">

  <tr>
    <th align="right">Favorite Car:</th>
    <td align="left">
      <input type="text" name="favoriteCar" size="30"
            value="<%= bean.getFavoriteCar() %>">
    </td>
  </tr>

  <tr>
    <th align="right">Favorite City:</th>
    <td align="left">
      <input type="text" name="favoriteCity" size="30"
            value="<%= bean.getFavoriteCity() %>">
    </td>
  </tr>

  <tr>
    <td align="center" colspan="2">
      <input type="hidden" name="step" value="unknown">
      <input type="submit" value="Previous" onclick="submitForm('wizard-1')">
      <input type="reset" value="Reset">
      <input type="submit" value="Next" onclick="submitForm('wizard-3')">
      <input type="submit" value="Finish" onclick="submitForm('finish')">
    </td>
  </tr>

</table>

</form>


 =======================================================================
 ==src/wizard-demo/wizard-3.jsp
 =======================================================================
 <html>
<head>
<title>Workflow Wizard Demo - Page 3 of 3</title>
<script language="javascript">
  function submitForm(s) {
    document.wizardform.step.value = s;
    document.wizardform.submit();
    return false;
  }
</script>
</head>
<body bgcolor="white">

<jsp:useBean id="bean" scope="session"
          class="org.apache.commons.workflow.web.DemoBean"/>

<form name="wizardform" method="POST" action="wizard">

<table border="0" cellspacing="5">

  <tr>
    <th align="right">Favorite Sport:</th>
    <td align="left">
      <input type="text" name="favoriteSport" size="30"
            value="<%= bean.getFavoriteSport() %>">
    </td>
  </tr>

  <tr>
    <th align="right">Favorite Team:</th>
    <td align="left">
      <input type="text" name="favoriteTeam" size="30"
            value="<%= bean.getFavoriteTeam() %>">
    </td>
  </tr>

  <tr>
    <td align="center" colspan="2">
      <input type="hidden" name="step" value="unknown">
      <input type="submit" value="Previous" onclick="submitForm('wizard-2')">
      <input type="reset" value="Reset">
      <input type="submit" value="Finish" onclick="submitForm('finish')">
    </td>
  </tr>

</table>

</body>
</html>

 =======================================================================
 ==STATUS.html
 =======================================================================
 <html>
<head>
<title>Status File for Apache Commons "Workflow" Component</title>
<head>
<body bgcolor="white">


<div align="center">
<h1>The Apache Commons <em>Workflow</em> Component</h1>
$Id: STATUS.html 561913 2007-08-01 19:01:47Z dennisl $<br>
<a href="#Introduction">[Introduction]</a>
<a href="#Dependencies">[Dependencies]</a>
<a href="#Release Info">[Release Info]</a>
<a href="#Committers">[Committers]</a>
<br><br>
</div>


<a name="Introduction"></a>
<h3>1.  INTRODUCTION</h3>

 <p>
 This scope of the <em>Workflow</em> component is primarily
 oriented to managing the execution of work flow processes scripted in
 XML.
 </p>
 

<a name="Dependencies"></a>
<h3>2.  DEPENDENCIES</h3>

<p>The <em>Digester</em> component is dependent upon the following external
components for development and use:</p>
<ul>
<li><a href="http://java.sun.com/j2se">Java Development Kit</a>
    (Version 1.2 or later)</li>
<li><a href="http://commons.apache.org/beanutils/">Apache Commons BeanUtils</a></li>
<li><a href="http://commons.apache.org/collections/">Apache Commons Collections</a></li>
<li><a href="http://commons.apache.org/digester"/>Apache Commons Digester</a></li>
</ul>


<a name="Release Info"></a>
<h3>3.  RELEASE INFO</h3>

<p>Current Release:  <strong>Unreleased, SVN repository Only</strong></p>
<p>Planned Next Release: N/A</p>


<a name="Committers"></a>

 =======================================================================
 ==xdocs/downloads.xml
 =======================================================================
 <?xml version="1.0"?>
<document>
   <properties>
      <title>Downloads</title>
      <author email="dev@commons.apache.org">Commons Documentation Team</author>
      <revision>$Id: downloads.xml 561366 2007-07-31 15:58:29Z rahul $</revision>
   </properties>

   <body>
      <section name="Releases">
         <p>There are no releases available.</p>

<!--
         <p>The following releases are available:</p>
         <ul>
           <li>Version 1.1 - 20 October 2003</li>
           <li>Version 1.0 - 12 August 2002</li>
         </ul>
         <br/>
         <p>
            The latest binary release is always available on the 
            <a href="http://jakarta.apache.org/site/binindex.cgi#commons-workflow">
            Jakarta Binary Downloads page</a>,
            its source is available from 
            <a href="http://jakarta.apache.org/site/sourceindex.cgi#commons-workflow">
            Jakarta Source Downloads page</a>.
         </p>
         <p>
            Older releases are retained by the Apache Software Foundation but are 
            moved into a
            <a href="http://archive.apache.org/dist/jakarta/commons/workflow/">
            special archive area</a>.
         </p>
-->
         <p>
           <a href="http://cvs.apache.org/builds/jakarta-commons/nightly/commons-workflow/">
           Nightly source and binary drops</a> are available.
         </p>
         <p>
            Access to the source tree to see the latest and greatest code is possible
            through <a href="cvs-usage.html">anonymous SVN access</a>.
         </p>
      </section>

<!--
      <section name="Release Candidate">
         <p>
            Release candidates for the upcoming 1.1 release can be downloaded 
            <a href="http://cvs.apache.org/~dirkv/builds/">here</a>.
         </p>

 =======================================================================
 ==xdocs/index.xml
 =======================================================================
 <?xml version="1.0"?>

<document>

 <properties>
  <title>Overview</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>

 <body>

<section name="The Workflow Component">

<p>Modern application architecture and design practices recommend the concept
of "composition" (of existing modules and components) in the assembly of an
overall application, to maximize the resuse of previously built functionality.
However, it is still generally necessary to write original code that "glues"
the components together.  It would be useful if individuals familiar with the
business requirements of their systems could create "scripts" to represent
the linkages between components, rather than requiring Java code.  The
<em>Workflow</em> proposal intends to create support for just such a
capability.</p>

<p>Scripted workflows is an idea that can be used in many different
application environments and use cases.  In particular, a highly desired use
is in managing the interaction with web application users, where the
transaction being performed requires more than one HTML page to be displayed.
However, the <em>Workflow</em> implementation will be strictly layered so
that the underlying scripting engine can be used without any reliance on
web layer APIs</p>

<p>The <em>Workflow</em> project shall create and maintain an engine to
manage and execute scripts, codified in XML.  The basic engine shall be
environment independent, but specialized implementations of the basic engine
can adapt the engine to that environment.</p>

<p>One specialized implementation will be included in the <em>Workflow</em>
package itself - an adapter to integrate the workflow engine into the web
layer, by mapping the Workflow concept of bean scopes into the scopes
provided by the Servlet API (request, session, and application).  This
implementation will be independent of any particular web application
framework - it is expected that frameworks will further specialize the
web layer implementation in order to integrate the framework's own
capabilities and features.</p>

<p>Scripts for the workflow engine will be codified in XML.  It shall be
possible for specialized implementations to register their own sets of custom
Step implementations, under a specific XML namespace, to transparently extend
the set of built in Step implementations that is available to workflow
engine users.</p>