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> <base:activity id="Demonstration Activity" xmlns:base="http://commons.apache.org/workflow/base" xmlns:core="http://commons.apache.org/workflow/core" > <core:string value="This is a string value"/> </base:activity> </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> <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" > <io:write file="topitem.txt"/> </base:activity> </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> <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" > <web:forward page="/mainMenu.jsp"/> </base:activity> </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>