husted 02/02/19 16:49:36 Added: doc/proposals workflow.xml todo-1.1.xml todo-1.0.xml release-plan-1.0b1.xml release-plan-1.0.1.xml project.xml Log: Commit documentation changes from this weekend. Revision Changes Path 1.1 jakarta-struts/doc/proposals/workflow.xml Index: workflow.xml =================================================================== <?xml version="1.0"?> <document url="./proposal-workflow.xml"> <properties> <author>Craig R. McClanahan</author> <title>Proposal - Workflow Management System</title> </properties> <body> <section name="Background and Goals"> <p>Struts 1.0 has become an increasingly popular platform for constructing web applications based on a Model-View-Controller type design pattern (also known as the <em>Front Controller</em> pattern. It has achieved this popularity for many reasons, but key among them have been:</p> <ul> <li>The simplicity of the basic organizational principles (once you understand them)</li> <li>The principle of <em>logical naming</em> to assist in isolating the view layer and the model layer, so that changes in one do not have to impact the other</li> <li>A rich set of tools to assist in creating pages with dynamic content exposed by the model layer through JavaBeans</li> </ul> <p>One consequence of the original Struts design, however, is that the framework does not provide much assistance in organizing business transactions that require more than one interaction with the user (i.e. they span more than one JSP page and/or Action). Applications are left to manage navigation issues, as well as deal with ActionForms whose logical contents crosses page boundaries.</p> <p>The original Struts design materially assists page designers in creating dynamic pages, while protecting them from having to be very concerned with the business logic -- other than the names of the JavaBeans used to communicate model layer data to the presentation layer. However, Struts 1.0 still requires a Java developer to be involved on the business logic side (even if all of the functional logic is already available in Java classes) in order to create the Action classes.</p> <p>The purpose of this <em>Workflow Management System</em> proposal is to address some of these consequences. In particular, it intends to address the following set of goals:</p> <ul> <li>Create a means where multiple-user-interaction business processes can be configured (scripted), including support for conditional processing and branching.</li> <li>Support scripting elements that lets business application experts, who are not necessarily Java developers, can integrate pre-existing business functionality that is available as public methods on arbitrary Java classes.</li> <li>Assist page designers in creating the user interface elements that correspond to navigation links within, or between, work flows.</li> </ul> </section> <section name="Use Cases and Examples"> <p>To give a flavor of what scripted workflow activities might look like, it is useful to consider some possible use case scenarios. The syntax that is shown for the examples should be considered as illustrative of what should be possible, rather than normative. No rigorous attempt has been made to guarantee consistency between (or even within) these examples.</p> <subsection name="Application Logon"> <p>The example application included with Struts (like many other web applications) uses application-managed security, including a logon form. Consider that a business logic bean might be available (in some scope under key <code>authenticator</code>) that knows how to authenticate users given a username and password. It could be utilized to script application logon like this:</p> <pre> <activity id="Application Logon"> <-- Display the logon form (web framework independent) --> <web:forward id="display" page="/logon.jsp"/> <-- Authenticate the username and password, returning a Principal if accepted, or null if not --> <web:set name="username" value="$parameter:username"/> <web:set name="password" value="$parameter:password"/> <core:invoke bean="authenticator" method="authenticate"> <core:param type="java.lang.String" value="$username"/> <core:param type="java.lang.String" value="$password"/> <core:return name="principal"/> </core:invoke> <-- If no Principal was returned, branch back to the logon form --> <core:if expr="$principal == null"> <web:set name="error" value="$messages.lookup('invalid.logon')"/> <core:branch idref="display"/> </core:if> <-- Exit to the "Main Menu" workflow --> <core:goto name="Main Menu"/> </activity> </pre> </subsection> <subsection name="Simple Multi-Page Wizard"> <p>Many complex data entry operations can be simplified (from the user's point of view) by dividing them up into a series of simple dialog pages that ask a few (often one) question that leads ultimately to a completed set of information required to process a request. In many cases, each page of the interaction will have navigation controls so that the user can short cut to immediate execution, or cancel the entire interaction. Such an interaction might be modelled like this:</p> <pre> <activity id="Simple Wizard Application"> <!-- Display the first page of the interation --> <!-- (Using Struts-specific logical-to-physical mapping) --> <struts:forward id="page1" name="Simple Wizard Page 1"> <!-- Process navigation input from the first page --> <!-- (Can do something much like this framework-independently too) --> <struts:navigate> <struts:branch control="CANCEL" idref="cancel"/> <struts:branch control="FINISH" idref="finish"/> <struts:branch control="NEXT" idref="page2"/> </struts:navigate> <!-- Display the second page of the interation --> <struts:forward id="page2" name="Simple Wizard Page 2"> <!-- Process navigation input from the second page --> <struts:navigate> <struts:branch control="CANCEL" idref="cancel"/> <struts:branch control="FINISH" idref="finish"/> <struts:branch control="NEXT" idref="page3"/> <struts:branch control="PREV" idref="page1"/> </struts:navigate> <!-- Display the third page of the interation --> <struts:forward id="page3" name="Simple Wizard Page 3"> <!-- Process navigation input from the third page --> <struts:navigate> <struts:branch control="CANCEL" idref="cancel"/> <struts:branch control="FINISH" idref="finish"/> <struts:branch control="PREV" idref="page2"/> </struts:navigate> <!-- Process the FINISH navigation control as appropriate --> <xxx:yyy id="finish" .../> <core:goto name="Main Menu"/> <!-- Process the CANCEL navigation control as appropriate --> <xxx:yyy id="cancel" .../> <core:goto name="Main Menu"/> </activity> </pre> <p>Not illustrated above, but also interesting to explore, would be the situation where choices on one page affect whether some pages in the overall flow might be skipped.</p> </subsection> </section> <section name="User Visible Features"> <p>Workflow system capabilities will be exposed to applications through Java APIs that represent both the static description of particular activities and the dynamic current state of a computation. Object factory and pluggable implementation patterns shall be used where appropriate to maximize the generality and flexibility of the system.</p> <subsection name="Workflow Management System Implementation Objects"> <p>The following classes represent the primary components of the workflow management system:</p> <p><strong>Registry</strong> - Collection into which multiple <em>Process</em> and <em>Activity</em> static descriptions can be stored and retrieved by String-valued keys.</p> <p><strong>Process</strong> - The static description of a tree of business activities that are executed in a nested fashion, often by separate individuals (or application systems).</p> <p><strong>Activity</strong> - The static description of a sequence of Steps that are generally executed by a single individual (or application system), within a reasonably short period of time.</p> <p><strong>Step</strong> - The static description of an individual task to be performed as a discrete, indivisible, unit. Steps can also be nested inside other steps, to provide for looping and conditional processing. A rich set of built-in Step implementations shall be provided (including powerful capabilities such as the execution of an abitrary method on an arbitrary Java object), and mechanisms to extend the set of supported Step implementations allows arbitrary extensibility.</p> <p><strong>Context</strong> - The dynamic state of a computation through an <em>Activity</em> (or a set of nested <em>Activities</em>), including provision of storage space for JavaBeans produced and consumed by other Steps. Contexts keep track of the current Step being executed, so that activity processing can be suspended and resumed later.</p> <p><strong>Scope</strong> - A <code>Map</code> into which arbitrary Java objects can stored and retrieved by String-valued keys. Context support a number of individual Scopes, each of which can be plugged in from application logic, to provide integration into existing application functionality. For example, in a web application imlementation, Scopes will generally be mapped directly to request attributes, session attributes, and servlet context attributes as provided by the Servlet API.</p> </subsection> <subsection name="Built-In Steps"> <p>A rich variety of built-in <em>Step</em> implementations (and corresponding XML elements in specified namespaces) will be provided as part of the basic workflow engine, and as part of the associated Struts integration of this engine.</p> <p><strong>Bean Interaction</strong> - The ability to get and set JavaBeans in arbitrary Scopes (mapped via the Context to real collections of objects).</p> <p><strong>Control Flow</strong> - Conditionals and looping, where control flow Steps can contain nested sets of Steps to an arbitrary degree.</p> <p><strong>Method Execution</strong> - Execute arbitrary public methods of beans stored in some Scope, passing specified arguments (expressions or bean references) and returning the method's result (if any) to a named bean in some Scope. To maximize usefulness of the workflow system in composing applications, <strong>no</strong> restrictions should be placed on the object types these Steps can interact with.</p> <p><strong>Activity Management</strong> - GOTO a named Activity (exiting the current one), CALL a named Activity (resuming the current one when the called Activity returns, RETURN from a called Activity, EXIT the Activity system.</p> <p><strong>User Interaction</strong> - Suspend workflow execution to interact with the user in some application specific way. For example, a web application would display a page and wait for input to be submitted before resuming the workflow.</p> <p><strong>Specialized Processing</strong> - Prebuilt Steps for common processing functions such as XSLT transformations, performing arbitrary SQL queries, sending mail, and so on.</p> </subsection> </section> <section name="Implementation Notes"> <p>The implementation of this proposal will be divided into three major development layers:</p> <ul> <li>Core workflow management system capabilities and built in Step implementations that are independent of application environment. [Code in jakarta-commons]</li> <li>Specialized implementation of workflow management system components that integrate with the Servlet API in a manner that is independent of any specific application framework. [Code in jakarta-commons]</li> <li>Specialized implementation of workflow management system components that is tightly integrated with Struts's internal architecture and custom tag libraries. [Code in jakarta-struts]</li> </ul> <p>The workflow management system will support the general concept of <em>Scopes</em> in which beans can be stashed, with pluggable implementations for integration into different working environments. None of the APIs in the workflow engine itself will have any reference to the web layer (i.e. no imports of <code>javax.servlet.*</code>).</p> <blockquote><em> <p>Suitable object factory and pluggability APIs will be included to guarantee extensibility of the basic framework.</p> </em></blockquote> <p>Scripting of business transactions will be codified in XML documents that conform to an appropriate DTD and/or schema. The XML technology that is used will facilitate extensible definitions of <em>Steps</em> and other components, in both the XML description of these components and in the set of Java objects that implements them.</p> <blockquote><em> <p>When designing the detailed syntax of the XML representation of Steps, consider whether it is feasible for advanced development tools to "compile" activities into individual classes to optimize overall performance.</p> </em></blockquote> <blockquote><em> <p>When designing the detailed syntax of the XML representation of Steps, consideration should be given to emulating the syntax of other XML applications that are similar in spirit or detail to the concepts of scripting a business transaction. Useful models to consider include:</p> <ul> <li><a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT)</a> - Includes control flow mechanisms that are becoming widely known and understood, which could be mimiced.</li> <li><a href="http://jakarta.apache.org/taglibs/jsptl-doc/intro.html"> JSP Standard Tag Library (Early Access)</a> - The design goals for many of the JSP custom tags in this library (produced by the JSR-052 expert group under the Java Community Process) are similar enough to provide a useful model for conditionals, looping, and interaction with objects in arbitrary scopes.</li> </ul> </em></blockquote> <blockquote><em> <p>To maximize the usefulness of built-in actions, an expression language that knows how to manipulate objects in the Scopes associated with the current Context will need to be supported. Useful models to consider include:</p> <ul> <li><a href="http://www.w3.org/TR/xpath">XML Path Language (XPath)</a> - Will be familar to XML-oriented application developers because it is used throughout the suite of XML specifications.</li> <li>JavaScript like expression languages - Will be familiar to page developers (as well as Struts developers familiar with the nested and indexed property accessor syntax of many Struts tags).</li> </ul> </em></blockquote> <blockquote><em> <p>From the workflow script developer's point of view, XML namespaces will be used to introduce extended sets of Step implementations. There will need to be mechanisms to map a particular namespace to a set of legal XML elements (within that namespace) and corresponding Java classes that provide the functionality for those Steps.</p> </em></blockquote> <p>The web layer integration will include a mechanism to map scopes (from the workflow perspective) into the standard <em>request</em>, <em>session</em>, and <em>application</em> scopes of the web layer. Thus, workflow scripts will be able to place beans in appropriate scopes such that JSP pages can directly pull that data into the presentation, much as Struts Actions (and the business logic classes that are called by those Actions) can place beans there in a Struts 1.0 based application. Utilizing these capabilities, application developers will be able to "script" the business logic requirements of many applications, by combining functional logic already available as methods on business logic beans, without having to involve Java programmers to create new Actions (or otherwise synthesize business logic out of the constituent pieces).</p> <blockquote><em> <p>Components in the web layer integration may import APIs from the Servlet and JSP specifications, but not from any application specific framework. Framework-specific integration will occur on top of the generic web layer integration.</p> </em></blockquote> <p>In addition, the Struts integration will include a small custom tag library will be included, so that page developers can easily create navigational links and controls. Examples of such controls include links to the "next", "previous", and "finish" pages of a wizard dialog, a "cancel" button to exit a workflow early, or an "invoke" button to invoke a new workflow as a subroutine, and then return to the current step of the original workflow. Utilizing these capabilities, page developers can create the individual visible pieces of a work flow dialog, without having to be involved in navigational complexities.</p> </section> </body> </document> 1.1 jakarta-struts/doc/proposals/todo-1.1.xml Index: todo-1.1.xml =================================================================== <?xml version="1.0"?> <document url="./todo-1.1.xml"> <properties> <author>Craig R. McClanahan</author> <title>Features We'd Like To See - The Struts Project Wish List</title> </properties> <body> <section name="Introduction" href="Intro"> <p>Application frameworks, like the applications we build with them, never seem to be completed. The following major areas of improvement are being considered for implementation in a future version of Struts. </p> <p>Which features are implemented first depends greatly on individual developers becoming involved in the process. Many key features in Struts grew out of code first distributed on the mailing list. If there is a feature here that you need, or already have, please start a thread and show us the code!</p> <p align="center"><a href="userGuide/kickstart.html#release"><b>So, when is the next release coming out?</b></a></p> <p>An external development that is likely to affect the development of Struts 1.1 will be the emerging Standard Tag Library, being produced under the <a href="http://www.jcp.org/jsr/detail/52.jsp">Java Community Process</a>. A very early release is now available at <a href="http://jakarta.apache.org/taglibs/doc/jsptl-doc/intro.html">Jakarta Taglibs</a>.</p> <p>The existing Struts tags were used as input to the standardization process, but in the case where standard tags with similar functionality are adopted, we should migrate Struts tags to maintain maximum compatibility with the new standard library.</p> </section> <section name="Pending Tasks" href="pending"> <ul> <li><a href="proposal-workflow.html">Workflow</a></li> <li><a href="http://husted.com/struts/resources/struts-security.htm">Role Based Actions</a></li> <li><a href="http://husted.com/struts/resources/logic-niallp.htm">If/Else/Switch tags</a></li> <li><a href="http://husted.com/struts/resources/codemaker.htm">Code generator</a></li> </ul> <p>See also the Tiles, Validator, and Service Manager packages in the contrib folder.</p> <p>The wish list tasks are divided into functional areas that correspond to the major components of the Struts Framework. References in square brackets are the Java package containing the corresponding source code. Listing a task here is not a guarantee that it will be present in the next release. Again, whether a wish becomes a feature depends on whether there are volunteers who choose to work on the task. </p> </section> <task-list name="Struts Documentation" href="Docs"> <info> <p>Omnibus task list for items related to the Struts Documentation, which do not have direct relationships with code bases.</p> </info> <task name="Taglib Chapters for User Guide"> <info> Incorporate the Taglib documentation and Developer Guides into the User Guide, by including the source of these from their present locations. </info> </task> <task name="TODO stylesheet"> <info> Revise TODO stylesheet to add Status and Source elements, and to support mailto links for volunteers in Assigned element. All elements should support hypertext links. </info> </task> <task name="Taglib stylesheet"> <info> Add support for "since" element for tracking changes to tags between versions. </info> </task> <task name="Contribution Reviews"> <info> Area to post articles about contributions from Struts developers. </info> </task> <task name="Expanded FAQ"> <info> Area to post a "choice" FAQ of truly common questions. </info> </task> </task-list> <task-list name="Struts Example Application" href="Example"> <info> <p>An example web application utilizing the Struts framework and custom tag library.</p> </info> <task name="Better Database Support"> <info> <p>Use a "real" database of some sort (while still making Struts easy to install.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Ted Husted</a> </assigned> </task> <task name="Locale Switching"> <info> <p>Add support for switching Locales on the fly to the Struts example application.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Ted Husted</a> </assigned> </task> </task-list> <task-list name="MVC Framework [org.apache.struts.action]" href="MVC"> <info> <p>This is the core controller servlet, with support for the developer's action and form bean classes, plus the supporting data structures.</p> </info> <task name="Remove Deprecations"> <info> <p>Clean out all 1.0 deprecated classes and files, framework-wide.</p> </info> </task> <task name="ActionForms With Dynamic Properties"> <info> <p>Create mechanisms to support ActionForm implementations where the set of properties to be included is dynamically calculated, in addition to the current support for properties that are accessed through the Java Reflection APIs and are therefore fixed.</p> </info> </task> <task name="Workflow Processing"> <info> <p>Create a mechanism by which business logic (now encoded in <code>Action</code> classes) can be subdivided into individual work <code>Tasks</code> that are combined according to configuration information (including flow control and iteration support) in the <code>struts-config.xml</code> file. Support for workflow processing would be provided by a set of standard <code>Actions</code>, and will offer an alternative mechanism (not a replacement of Actions) to organizing your business logic.</p> <p><a href="proposal-workflow.html"><b>A Workflow Proposal is pending.</b></a></p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Craig Tataryn</a>, <a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a> </assigned> </task> <task name="PropertyEditor Support"> <info> <p>Add support for JavaBeans that include a <code>PropertyEditor</code> class for conversion to and from the string representation used in an HTML input field. This support should operate in a manner consistent with the way that standard JSP tags do in JSP 1.2.</p> </info> </task> <task name="Event and Listener Model"> <info> <p>Retrofit the Struts controller framework with supports for event generation (and the corresponding registration of listeners) for all interesting events created by the framework. The list of interesting events will undoubtedly be influenced by changes related to other work items on this list (such as workflow processing and standard validations), so work on this should be coordinated with those changes.</p> <p> [STRUTS-DEV, Robert Leland, 10/10/2000] [STRUTS-DEV, David Geary, 12/20/2000] [STRUTS-USER, Ted Husted, 12/23/2000] </p> </info> </task> <task name="EJB Design Patterns"> <info> <p>Begin adding design patterns and support for easy integration with Enterprise JavaBeans (EJBs) for encapsulation of business logic and application data.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Mike Schachter</a> </assigned> </task> <task name="HTML No-Cache Support"> <info> <p>Improve the current Struts support for generating no-cache headers to provide finer-grained, configurable control on a per-page basis. </p> <p> [STRUTS-DEV, Hou Yunfeng, 10/07/2000] [STRUTS-DEV, Matthias Kerkhoff, 11/18/2000] </p> </info> </task> <task name="Role-Based Action Execution"> <info> <p>Add the ability to require the current user to be in a particular security role before they can execute a particular action. </p> <p> <a href="http://husted.com/struts/resources/struts-security.htm"><b>A proposed extension is available.</b></a> </p> <p> [STRUTS-DEV, James W., 01/23/2001] </p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a> </assigned> </task> </task-list> <task-list name="Bean Tag Library [org.apache.struts.taglib.bean]" href="BEAN"> <info> <p>This tag library contains basic tags useful in manipulating JavaBeans and their properties. It includes support for getting and setting bean properties using simple, nested, and subscripted accessor expressions. </p> </info> <task name="XPath Support"> <info> <p>Update all of the relevant tags to include property accessor support using the syntax specified by the XPath standard (www.w3c.org).</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a> </assigned> </task> <task name="XML DOM Support"> <info> <p>Update all of the relevant tags to get and set attributes from a Java object that implements the XML Document Object Model, as well as from the current tree of JavaBean objects. How the underlying data object is stored should be transparent to page writers using these tags.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a> </assigned> </task> <task name="XML DOM / JDBC RowSet Support"> <info> <p>Update all of the relevant tags to get and set attributes from a JDBC RowSet (or ResultSet) object, as well as from XML DOM objects and the current tree of JavaBean objects. How the underlying data object is stored should be transparent to page writers using these tags. </p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a> </assigned> </task> <task name="Formatting Support"> <info> <p>Add the ability to use formatting patterns (suitably localized) for presenting numbers, dates, times, timestamps, and so on via formatted patterns.</p> <p> [STRUTS-DEV, Oleg Alexeev, 10/27/2000] [STRUTS-USER, Ned Seagoon, 12/11/2000] [STRUTS-DEV, Ned Seagoon, 12/13/2000] [STRUTS-USER, Ned Seagoon, 01/04/2001] </p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a> </assigned> </task> </task-list> <task-list name="HTML Tag Library [org.apache.struts.taglib.html]" href="HTML"> <info> <p>This tag library contains tags useful in preparing web applications that use HTML forms as their primary mechanism for user data entry, as well as support for internationalized and localized applications.</p> </info> <task name="Radio Button Groups"> <info> <p>Add a new tag that supports generation of groups of radio buttons. </p> <p> [STRUTS-DEV, Wellington Silva, 08/28/2000] </p> </info> </task> <task name="Improve Options Tag"> <info> <p>Improve the mechanism by which you define values and corresponding labels for <code><html:options></code>.</p> <p> [STRUTS-DEV, David Winterfeldt, 07/27/2000] [STRUTS-DEV, David Winterfeldt, 08/02/2000] [STRUTS-DEV, Andy Boyko, 11/15/2000] [STRUTS-DEV, Andy Boyko, 12/07/2000] </p> </info> </task> <task name="Additional Attributes"> <info> <p>Support additional HTML 4.0.1 attributes (such as "disabled", "readonly", "wrap" on textarea) where appropriate.</p> <p> [STRUTS-USER, , 08/23/2000] </p> </info> </task> <task name="Improved Iteration Support"> <info> <p>Improve the ability to use the <code><logic:iterate></code> tag over a collection, and generate a set of input fields for each member of the collection (perhaps auto-generating a subscript?). A significant use case is master-detail relationships (say, a customer and their current orders) where you allow editing of any and all fields.</p> <p> [STRUTS-USER, Lars, 12/06/2000] [STRUTS-USER, Chandan Kulkarni, 12/26/2000] </p> </info> </task> <task name="Multi-Page Form Support"> <info> <p>Create design patterns and improved internal support for forms that span multiple pages.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a> </assigned> </task> </task-list> <task-list name="Logic Tag Library [org.apache.struts.taglib.logic]" href="Logic"> <info> <p>This tag library provides mechanisms to conditionally process nested body content based on a variety of logical conditions.</p> </info> <task name="'Else' and 'Else If' Capability and Other Conditional Structures"> <info> <p>Add "else" and "else if" constructs to the existing conditional tags, in some reasonable format.</p> <p>Add conditional tags that emulate the "case" or "switch" capability of many programming languages.</p> <p>NOTE: Pending the outcome of the JSPTL, this functionality will <b>not</b> be added to the Struts-Logic tags. However, a <a href="http://husted.com/struts/resources/logic-niallp.htm"><b>contributor taglib</b></a> is available.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Niall Pemberton</a> </assigned> </task> <task name="Iterating Parallel Collections"> <info> <p>Enhance <code><logic:iterate></code>, or provide a new tag, to iterate over multiple collections in parallel.</p> <p> [STRUTS-DEV, Jeff R., 08/03/2000] </p> </info> </task> </task-list> <task-list name="WML Tag Library [org.apache.struts.taglib.wml]" href="WML"> <info> <p>This tag library will contain tags useful in preparing web applications similar to those supported by the HTML tag library, but render output that is well-formed XML in accordance with WML specifications.</p> </info> </task-list> <task-list name="XFORMS Tag Library [org.apache.struts.taglib.xforms]" href="xforms"> <info> <p>This potential new tag library provides access to facilities in the emerging XForms standards.</p> </info> <task name="Generalized Form Handling"> <info> <p>Consider how to support more generalized definitions of forms and their fields, perhaps based on emerging XForms standards.</p> </info> </task> </task-list> <task-list name="XHTML Tag Library [org.apache.struts.taglib.xhtml]" href="XHTML"> <info> <p>This tag library will contain tags useful in preparing web applications similar to those supported by the HTML tag library, but render output that is well-formed XML in accordance with the XHTML 1.0 specification.</p> </info> </task-list> <task-list name="Tools Support [org.apache.struts.tools]" href="Tools"> <info> <p>This package contains code generators and other tools that facilitate the creation of Struts-based applications. Further subdivision into specialized packages should be performed as appropriate.</p> </info> <task name="XML --> ActionForm Code Generator"> <info> <p>Create a tool that takes an XML-based description of the properties of the form bean, and automatically generates the corresponding Java class.</p> <p><a href="http://husted.com/struts/resources/codemaker.htm"><b>A contributor extension is now available.</b></a></p> <p> [STRUTS-DEV, Mark Wutka, 06/01/2000 and 06/16/2000] </p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Martin Cooper</a> <a href="[EMAIL PROTECTED]">Ravindran Ramaiah</a> </assigned> </task> </task-list> <task-list name="Utility Classes [org.apache.struts.util]" href="Util"> <info> <p>This package contains a variety of utility classes useful within Struts as well as in stand-alone applications.</p> </info> <task name="XmlMessageResources"> <info> <p>Implementation of <code>MessageResources</code> and <code>MessageResourcesFactory</code> that loads message keys and strings from one or more XML resources or files.</p> <p> [STRUTS-DEV, Scott Sayles, 01/07/2000] </p> </info> </task> <task name="Enhanced Collections Support"> <info> <p>Improve support in <code>BeanUtils</code>, <code>ConvertUtils</code>, and <code>PropertyUtils</code> for property values that implement <code>Collection</code>, <code>List</code>, or <code>Set</code>, treating them in a manner similar to the way that indexed or array-valued properties are handled.</p> <p> [Bugzilla #640] </p> </info> </task> </task-list> <task-list name="Unit Test Suites" href="Unit Tests"> <info> <p>Unit test components compatible with the JUnit and Cactus testing frameworks, to test and validate internal APIs of the Struts framework. Volunteers will typically agree to develop tests for an entire package within the Java source code of Struts. </p> </info> <task name="Action"> <info> <p>Unit tests for the <code>org.apache.struts.action</code> package.</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Rob Leland</a> </assigned> </task> <task name="Actions"> <info> <p>Unit tests for the <code>org.apache.struts.actions</code> package.</p> </info> </task> <task name="Taglib.Bean"> <info> <p>Unit tests for the <code>org.apache.struts.taglib.bean</code> package.</p> </info> </task> <task name="Taglib.Html"> <info> <p>Unit tests for the <code>org.apache.struts.taglib.html</code> package.</p> </info> </task> <task name="Taglib.Logic"> <info> <p>Unit tests for the <code>org.apache.struts.taglib.logic</code> package.</p> </info> </task> <task name="Taglib.Template"> <info> <p>Unit tests for the <code>org.apache.struts.taglib.template</code> package.</p> </info> </task> <task name="Upload"> <info> <p>Unit tests for the <code>org.apache.struts.taglib.upload</code> package.</p> </info> </task> <task name="Util"> <info> <p>Unit tests for the <code>org.apache.struts.util</code> package.</p> </info> </task> </task-list> <task-list name="Additional Possibilities" href="Additional"> <info> <p>This section is a catch-all for additional areas of functionality to be investigated for inclusion into Struts.</p> </info> <task name="Coarse Grain Components"> <info> [STRUTS-DEV, Cedric Dumoulin, 10/03/2000] </info> </task> <task name="Multidimensional Properties"> <info> [STRUTS-DEV, Eric, 11/07/2000] </info> </task> <task name="Portal Components"> <info> [STRUTS-DEV, Phil Grimm, 11/22/2000] </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Ted Husted</a> </assigned> </task> <task name="Storefront Example App"> <info> [STRUTS-DEV, David D'Orto, 12/11/2000] </info> </task> </task-list> <task-list name="Contributors Area" href="Contrib"> <info> <p>A portion of the Struts web site, and file system, where individually contributed add-ons for Struts can be hosted and downloaded.</p> </info> <task name="Proposal"> <info> <p>Detailed proposal with implementation plan.</p> <p> [STRUTS-USER, Ned Seagoon, 12/22/2000]</p> </info> <assigned> <a href="mailto:[EMAIL PROTECTED]">Ted Husted</a> </assigned> </task> </task-list> </body> </document> 1.1 jakarta-struts/doc/proposals/todo-1.0.xml Index: todo-1.0.xml =================================================================== <?xml version="1.0"?> <document url="./todo-1.1.xml"> <properties> <author>Craig R. McClanahan</author> <title>The Struts Project TODO List for Version 1.0</title> </properties> <body> <section name="Introduction" href="Intro"> <p>Application frameworks, like the applications we build with them, never seem to be completed. The following are the remaining work items before Version 1.0 of Struts can be released.</p> <p>The TODO list tasks are divided into functional areas that correspond to the major components of the Struts Framework. References in square brackets are the Java package containing the corresponding source code.</p> </section> <task-list name="Struts Documentation" href="Docs"> <info> <p>Omnibus task list for items related to the Struts Documentation, which do not have direct relationships with code bases.</p> </info> </task-list> <task-list name="Struts Example Application" href="Example"> <info> <p>An example web application utilizing the Struts framework and custom tag library.</p> </info> </task-list> <task-list name="MVC Framework [org.apache.struts.action]" href="MVC"> <info> <p>This is the core controller servlet, with support for the developer's action and form bean classes, plus the supporting data structures.</p> </info> <task name="Deprecation Warnings"> <info> <p>Review framework-wide use of features that have now been deprecated.</p> </info> </task> </task-list> <task-list name="XML Digester [org.apache.struts.digester]" href="Digester"> <info> <p>The Digester package supports scripted firing of "rules" based on matching a particular pattern of nested XML tags. Among the predefined rules that can be utilized are rules to create new objects, set bean properties from the contents of attributes, or call arbitrary methods with arguments based on the XML content being parsed. A common use for this technology (illustrated in the Struts ActionServlet), is parsing configuration files and building corresponding object trees.</p> </info> </task-list> <task-list name="Bean Tag Library [org.apache.struts.taglib.bean]" href="BEAN"> <info> <p>This tag library contains basic tags useful in manipulating JavaBeans and their properties. It includes support for getting and setting bean properties using simple, nested, and subscripted accessor expressions. </p> </info> </task-list> <task-list name="HTML Forms Tag Library [org.apache.struts.taglib.html]" href="HTML"> <info> <p>This tag library contains tags useful in preparing web applications that use HTML forms as their primary mechanism for user data entry, as well as support for internationalized and localized applications.</p> </info> </task-list> <task-list name="Utility Classes" href="Util"> <info> <p>This package contains a variety of utility classes useful within Struts as well as in stand-alone applications.</p> </info> <task name="Update HTML Filtering"> <info> <p>Update the filtering supported by <code>BeanUtils.filter()</code>. </p> [STRUTS-DEV, Matthias Kerkhoff, 11/13/2000] </info> </task> </task-list> </body> </document> 1.1 jakarta-struts/doc/proposals/release-plan-1.0b1.xml Index: release-plan-1.0b1.xml =================================================================== <?xml version="1.0"?> <document url="./release-plan-1.0b1.xml"> <properties> <author>Craig R. McClanahan</author> <title>Struts Release Plan (Version 1.0-beta-1)</title> </properties> <body> <section name="Objective" href="Objective"> <p><font size="-2">$Id: release-plan-1.0b1.xml,v 1.1 2002/02/20 00:49:36 husted Exp $</font></p> <p>The objective of the <strong>Struts 1.0-beta-1</strong> release is to create a milestone release against which a final series of bug fixes and documentation updates can occur before a <strong>Struts 1.0 Final</strong> release is created.</p> </section> <section name="The Plan" href="Plan"> <p>The code base for Struts has been in an informal "feature freeze" for several weeks, while development focus has been on bug fixes and the completion of required documentation. Both of these goals have been substantially achieved, so it is time for a formal beta release - with the goal of moving quickly to a final <strong>Struts 1.0</strong> release shortly thereafter, if no disabling defects are found.</p> <p>Therefore, the following release plan is proposed for Struts 1.0-beta-1: </p> <ul> <li><em>Code Freeze / Tag Date</em> - Wednesday, February 21, 2001</li> <li><em>Release Manager</em> - Craig McClanahan</li> <li><em>Release Announcement</em> - To the following mailing lists and web sites: <ul> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li> </ul></li> </ul> </section> <section name="Release Criteria" href="Criteria"> <p>Prior to the release of Struts 1.0-beta-1, the following action items must be completed:</p> <ul> <li>All <a href="http://nagoya.apache.org/bugzilla/">Bugzilla</a> bug reports against Struts 1.0 nightly builds MUST be marked as "Resolved", with any of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER, REMIND, WORKSFORME).</li> <li>Bug reports that are resolved as LATER or REMIND will include comments as to whether those specific issues will be dealt with in a subsequent 1.0 beta or final release, or whether they will be scheduled for consideration in a subsequent release time frame.</li> <li>Any remaining items on the Struts 1.0 TODO list shall be completed.</li> <li>The Struts 1.0 Release Notes document shall be updated to describe substantial changes and improvements since the Struts 0.5 release, along with associated updates to the main Struts Documentation Application pages describing the new release.</li> <li>All of the Struts example applications that are included with the release shall operate successfully in the following servlet containers: <ul> <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.1</a></li> <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0</a> (Current nightly build)</li> </ul></li> <li>A release vote shall take place on the STRUTS-DEV mailing list to approve this plan. The release vote MUST pass by "Majority Approval" of Struts committers.</li> </ul> </section> </body> </document> 1.1 jakarta-struts/doc/proposals/release-plan-1.0.1.xml Index: release-plan-1.0.1.xml =================================================================== <?xml version="1.0"?> <document url="./release-plan-1.0.1.xml"> <properties> <author>Martin F N Cooper</author> <title>Struts Release Plan (Version 1.0.1)</title> </properties> <body> <section name="Objective" href="Objective"> <p><font size="-2">$Id: release-plan-1.0.1.xml,v 1.1 2002/02/20 00:49:36 husted Exp $</font></p> <p>The objective of the <strong>Struts 1.0.1</strong> release is to provide an official release of all the bug fixes and documentation updates that have been made to the STRUTS_1_0_BRANCH branch since the release of Struts 1.0.</p> </section> <section name="The Plan" href="Plan"> <p>Since the release of Struts 1.0, a number of important bugs have been fixed, and some notable improvements have been made to the documentation. Currently, these updates are available only to those people who are willing to obtain the source code from CVS and build their own version of Struts. This release will make these updates available in an official distribution, thus making them available to a wider audience.</p> <p>Therefore, the following release plan is proposed for Struts 1.0.1: </p> <ul> <li><em>Code Freeze / Tag Date</em> - Wednesday, November 21, 2001</li> <li><em>Release Manager</em> - Martin Cooper</li> <li><em>Release Announcement</em> - To the following mailing lists and web sites: <ul> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li>[EMAIL PROTECTED]</li> <li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li> </ul></li> </ul> </section> <section name="Release Criteria" href="Criteria"> <p>Prior to the release of Struts 1.0.1, the following action items must be completed:</p> <ul> <li>The Struts 1.0.1 Release Notes document shall be updated to describe substantial changes and improvements since the Struts 1.0 release, along with associated updates to the main Struts Documentation Application pages describing the new release.</li> <li>All of the Struts example applications that are included with the release shall operate successfully in the following servlet containers: <ul> <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.3</a></li> <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.1</a></li> </ul></li> <li>A release vote shall take place on the <em>struts-dev</em> mailing list to approve this plan. The release vote MUST pass by "Majority Approval" of Struts committers.</li> </ul> </section> </body> </document> 1.1 jakarta-struts/doc/proposals/project.xml Index: project.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1"?> <project name="Struts Framework" href="http://jakarta.apache.org/struts" image="images/struts.gif"> <title>Struts Framework</title> <menu name="Welcome"> <item name="Home" href="../index.html"/> <item name="News & Status" href="../news_2002.html"/> <item name="Kickstart FAQ" href="../kickstart.html"/> <item name="Resources" href="../resources.html"/> <item name="Who We Are" href="../volunteers.html"/> </menu> <menu name="Downloads"> <item name="Binaries" href="http://jakarta.apache.org/site/binindex.html"/> <item name="Source Code" href="http://jakarta.apache.org/site/sourceindex.html"/> </menu> <menu name="Stable Release (1.0.2)"> <item name="User Guide" href="http://jakarta.apache.org/struts/doc-1.0.2/index.html"/> <item name="Javadoc" href="http://jakarta.apache.org/struts/doc-1.0.2/api/index.html"/> <item name="Release Notes" href="http://jakarta.apache.org/struts/doc-1.0.2/release-notes-1.0.2.html"/> <item name="Installation" href="http://jakarta.apache.org/struts/doc-1.0.2/installation.html"/> </menu> <menu name="Nightly Build"> <item name="User Guide" href="../userGuide/index.html"/> <item name="Javadoc" href="../api/index.html"/> <item name="Release Notes" href="../userGuide/release-notes.html"/> <item name="Installation" href="../userGuide/installation.html"/> <item name="Workflow Proposal" href="workflow.html"/> <item name="Wish List" href="todo-1.1.html"/> </menu> </project>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>