craigmcc 01/08/13 14:12:14 Added: workflow .cvsignore PROPOSAL.html STATUS.html build.properties.sample build.xml Log: Iniital check-in of the workflow management system proposal. Revision Changes Path 1.1 jakarta-commons-sandbox/workflow/.cvsignore Index: .cvsignore =================================================================== build.properties dist target 1.1 jakarta-commons-sandbox/workflow/PROPOSAL.html Index: 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 the set of built in Step implementations that is available to workflow engine users.</p> <h3>(1.5) Interaction With Other Packages</h3> <p><em>Digester</em> relies on: </p> <ul> <li>Java Development Kit (Version 1.2 or later)</li> <li>A JAXP 1.1 implementation</li> <li>A SAX 2.0 parser conforming to the JAXP 1.1 APIs</li> <li>BeanUtils from Commons - for instrospection information</li> <li>Collections from Commons - for object collections</li> <li>Digester from Commons - for parsing scripts in XML</li> <li>Servlet API - for web integration layer only</li> </ul> <h3>(2) Initial Source of the Package</h3> <p>This package represents a new approach to the workflow management process, so no initial codebase has been identified.</p> <p>The proposed package name for the new component is <code>org.apache.commons.workflow</code>, with subpackages for implementations of the basic interfaces.</p> <h3>(3) Required Jakarta-Commons Resources</h3> <ul> <li>CVS Repository - New directory <code>workflow</code> in the <code>jakarta-commons</code> CVS repository.</li> <li>Mailing List - Discussions will take place on the general <em>[EMAIL PROTECTED]</em> mailing list. To help list subscribers identify messages of interest, it is suggested that the message subject of messages about this component be prefixed with [Workflow].</li> <li>Bugzilla - New component "Workflow" under the "Commons" product category, with appropriate version identifiers as needed.</li> <li>Jyve FAQ - New category "commons-workflow" (when available).</li> </ul> <h3>(4) Initial Committers</h3> <p>The initial committers on the Workflow component shall be:</p> <ul> <li>Craig R. McClanahan</li> <li>TBD</li> </ul> </body> </html> 1.1 jakarta-commons-sandbox/workflow/STATUS.html Index: STATUS.html =================================================================== <html> <head> <title>Status File for Jakarta Commons "Workflow" Component</title> <head> <body bgcolor="white"> <div align="center"> <h1>The Jakarta Commons <em>Workflow</em> Component</h1> $Id: STATUS.html,v 1.1 2001/08/13 21:12:13 craigmcc Exp $<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://jakarta.apache.org/jakarta-commons/beanutils/">Jakarta Commons BeanUtils</a></li> <li><a href="http://jakarta.apache.org/jakarta-commons/collections/">Jakarta Commons Collections</a></li> <li><a href="http://jakarta.apache.org/jakarta-commons/digester"/>Jakarta Commons Digester</a></li> </ul> <a name="Release Info"></a> <h3>3. RELEASE INFO</h3> <p>Current Release: <strong>Unreleased, CVS Repository Only</strong></p> <p>Planned Next Release: N/A</p> <a name="Committers"></a> <h3>4. COMMITTERS</h3> <p>The following individuals are the primary developers and maintainers of this component. Developers who plan to use <em>Digester</em> in their own projects are encouraged to collaborate on the future development of this component to ensure that it continues to meet a variety of needs.</p> <ul> <li><a href="mailto:[EMAIL PROTECTED]">Craig McClanahan</a></li> <li>TBD</li> </ul> </body> </html> 1.1 jakarta-commons-sandbox/workflow/build.properties.sample Index: build.properties.sample =================================================================== # junit.jar - JUnit 3.7+ Classpath junit.jar=/java/junit/junit.jar 1.1 jakarta-commons-sandbox/workflow/build.xml Index: build.xml =================================================================== <project name="Workflow" default="compile" basedir="."> <!-- "Workflow" component of the Jakarta Commons Subproject $Id: build.xml,v 1.1 2001/08/13 21:12:13 craigmcc Exp $ --> <!-- ========== Initialize Properties ===================================== --> <property file="build.properties"/> <!-- Component local --> <property file="../build.properties"/> <!-- Commons local --> <property file="${user.home}/build.properties"/> <!-- User local --> <!-- ========== External Dependencies ===================================== --> <!-- The directories corresponding to your necessary dependencies --> <property name="jaxp.home" value="/usr/local/jaxp-1.1"/> <property name="junit.home" value="/usr/local/junit3.7"/> <property name="commons.home" value="../../jakarta-commons"/> <property name="beanutils.home" value="${commons.home}/beanutils"/> <property name="collections.home" value="${commons.home}/collections"/> <property name="digester.home" value="${commons.home}/digester"/> <property name="servletapi.home" value="../../jakarta-servleatpi-4"/> <!-- ========== Derived Values ============================================ --> <!-- The locations of necessary jar files --> <property name="jaxp.jaxp.jar" value="${jaxp.home}/jaxp.jar"/> <property name="jaxp.parser.jar" value="${jaxp.home}/crimson.jar"/> <property name="junit.jar" value="${junit.home}/junit.jar"/> <property name="commons-beanutils.jar" value="${beanutils.home}/build/commons-beanutils.jar"/> <property name="commons-collections.jar" value="${collections.home}/build/commons-collections.jar"/> <property name="commons-digester.jar" value="${digester.home}/lib/commons-digester.jar"/> <property name="servlet.jar" value="${servletapi.home}/lib/servlet.jar"/> <!-- ========== Component Declarations ==================================== --> <!-- The name of this component --> <property name="component.name" value="workflow"/> <!-- The title of this component --> <property name="component.title" value="Workflow Management System"/> <!-- The current version number of this component --> <property name="component.version" value="0.1-dev"/> <!-- The base directory for compilation targets --> <property name="build.home" value="target"/> <!-- The base directory for component configuration files --> <property name="conf.home" value="src/conf"/> <!-- The base directory for distribution targets --> <property name="dist.home" value="dist"/> <!-- The base directory for component sources --> <property name="source.home" value="src/java"/> <!-- The base directory for unit test sources --> <property name="test.home" value="src/test"/> <!-- ========== Compiler Defaults ========================================= --> <!-- Should Java compilations set the 'debug' compiler option? --> <property name="compile.debug" value="true"/> <!-- Should Java compilations set the 'deprecation' compiler option? --> <property name="compile.deprecation" value="false"/> <!-- Should Java compilations set the 'optimize' compiler option? --> <property name="compile.optimize" value="true"/> <!-- Construct compile classpath --> <path id="compile.classpath"> <pathelement location="${build.home}/classes"/> <pathelement location="${jaxp.jaxp.jar}"/> <pathelement location="${jaxp.parser.jar}"/> <pathelement location="${commons-beanutils.jar}"/> <pathelement location="${commons-collections.jar}"/> <pathelement location="${commons-digester.jar}"/> <pathelement location="${servlet.jar}"/> </path> <!-- ========== Test Execution Defaults =================================== --> <!-- Construct unit test classpath --> <path id="test.classpath"> <pathelement location="${build.home}/classes"/> <pathelement location="${build.home}/tests"/> <pathelement location="${commons-beanutils.jar}"/> <pathelement location="${commons-collections.jar}"/> <pathelement location="${commons-digester.jar}"/> <pathelement location="${servlet.jar}"/> <pathelement location="${junit.jar}"/> </path> <!-- Should all tests fail if one does? --> <property name="test.failonerror" value="true"/> <!-- The test runner to execute --> <property name="test.runner" value="junit.textui.TestRunner"/> <!-- ========== Demonstration Program Defaults ============================ --> <!-- Construct demonstration classpath --> <path id="demo.classpath"> <pathelement location="${build.home}/classes"/> <pathelement location="${jaxp.jaxp.jar}"/> <pathelement location="${jaxp.parser.jar}"/> <pathelement location="${commons-beanutils.jar}"/> <pathelement location="${commons-collections.jar}"/> <pathelement location="${commons-digester.jar}"/> <pathelement location="${servlet.jar}"/> </path> <!-- The demonstration program runner to execute --> <property name="demo.runner" value="org.apache.commons.workflow.demo.Main"/> <!-- The default pathname to the demonstration data file --> <property name="demo.filename" value="src/java/org/apache/commons/workflow/demo/main.xml"/> <!-- ========== Executable Targets ======================================== --> <target name="init" description="Initialize and evaluate conditionals"> <echo message="-------- ${component.name} ${component.version} --------"/> <filter token="name" value="${component.name}"/> <filter token="version" value="${component.version}"/> </target> <target name="prepare" depends="init" description="Prepare build directory"> <mkdir dir="${build.home}"/> <mkdir dir="${build.home}/classes"/> <mkdir dir="${build.home}/conf"/> <mkdir dir="${build.home}/tests"/> </target> <target name="static" depends="prepare" description="Copy static files to build directory"> <tstamp/> <copy todir="${build.home}/conf" filtering="on"> <fileset dir="${conf.home}" includes="*.MF"/> </copy> </target> <target name="compile" depends="static" description="Compile shareable components"> <javac srcdir="${source.home}" destdir="${build.home}/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" excludes="org/apache/commons/workflow/demo/**"> <classpath refid="compile.classpath"/> </javac> <copy todir="${build.home}/classes" filtering="on"> <fileset dir="${source.home}" excludes="**/*.java org/apache/commons/workflow/demo/**"/> </copy> </target> <target name="clean" description="Clean build and distribution directories"> <delete dir="${build.home}"/> <delete dir="${dist.home}"/> </target> <target name="all" depends="clean,compile" description="Clean and compile all components"/> <target name="javadoc" depends="compile" description="Create component Javadoc documentation"> <mkdir dir="${dist.home}"/> <mkdir dir="${dist.home}/docs"/> <mkdir dir="${dist.home}/docs/api"/> <javadoc sourcepath="${source.home}" destdir="${dist.home}/docs/api" packagenames="org.apache.commons.*" author="true" private="true" version="true" doctitle="<h1>${component.title}</h1>" windowtitle="${component.title} (Version ${component.version})" bottom="Copyright (c) 2001 - Apache Software Foundation"/> </target> <target name="dist" depends="compile,javadoc" description="Create binary distribution"> <mkdir dir="${dist.home}"/> <copy file="../LICENSE" todir="${dist.home}"/> <jar jarfile="${dist.home}/commons-${component.name}.jar" basedir="${build.home}/classes" manifest="${build.home}/conf/MANIFEST.MF"/> </target> <!-- ========== Unit Test Targets ========================================= --> <target name="compile.tests" depends="compile" description="Compile unit test cases"> <javac srcdir="${test.home}" destdir="${build.home}/tests" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}"> <classpath refid="test.classpath"/> </javac> <copy todir="${build.home}/tests" filtering="on"> <fileset dir="${test.home}" excludes="**/*.java"/> </copy> </target> <target name="test" depends="compile.tests" description="Run all unit test cases"> </target> <!-- <target name="test.property"> <echo message="Running PropertyUtils tests ..."/> <java classname="${test.runner}" fork="yes" failonerror="${test.failonerror}"> <arg value="org.apache.commons.beanutils.PropertyUtilsTestCase"/> <classpath refid="test.classpath"/> </java> </target> --> <!-- ========== Demonstration Program Target ============================== --> <target name="compile.demo" depends="compile" description="Compile demonstration program"> <javac srcdir="${source.home}" destdir="${build.home}/classes" debug="${compile.debug}" deprecation="${compile.deprecation}" optimize="${compile.optimize}" includes="org/apache/commons/workflow/demo/**"> <classpath refid="compile.classpath"/> </javac> <copy todir="${build.home}/classes" filtering="on"> <fileset dir="${source.home}" includes="org/apache/commons/workflow/demo/**" excludes="**/*.java"/> </copy> </target> <target name="demo" depends="compile.demo" description="Excecute the demonstration program"> <echo message="Excecuting demo program on ${demo.filename}"/> <java classname="${demo.runner}" fork="yes" failonerror="true"> <arg value="${demo.filename}"/> <classpath refid="demo.classpath"/> </java> </target> </project>