Home
Introduction
Tutorial
Demo Application
Test Applicaton
License
Download
Commercial Support
Contributors
Struts-Homepage
Welcome to Struts-Workflow-Extension

If you found, that Struts is a great framework that can support your develoment, if you found that the MVC-Design paradigm is the right way to design stable and failure safe web applications, then you will find this extension to be a tremendously useful tool.

It allows you to easily deal with the following issues in your web application:

  • prevent the user from accidental double-submits, when hitting the browser's reload button
  • prevent the user from entering a sequence of actions in the middle, while you expect him to execute them in a pre-defined order (e. g. because you need to rely on session data that has been stored in previous actions)
  • support the implementation of generic action sequences that can be reused in various contexts (e. g. a confirmation dialog that can be used when the user is about to delete something as well as when he requests some other irreversible action)
  • cleaning up session attributes (e. g. removing session scope forms), when the user finishes or breaks out of a sequence of actions
  • prevent the user from breaking out of a sequence of actions you don't want him to (e. g. if you want him to answer a confirmation dialog with either "yes" or "no" and not allow him to leave it in a different way)

As there has been quite some misunderstanding in the past, what the Struts Workflow Extension is all about, here is, what this package is not: It is not a workflow engine to model business processes!

Some background info

The project was initiated by Matthias Bauer, LivingLogic AG, because the need arose in multiple customer projects to prevent the user from requesting arbitrary actions in every application's state. In order to control access to the application's actions in a state dependent manner, the first version of this extension was developed.

The LivingLogic AG is a company with 15 employees, that is located in Germany. It develops customer specific software, has a number of products and offers consulting for Java, J2EE, Struts and Oracle. If you are looking for consultants, please let us know. If you want to find out more about LivingLogic, you can visit the homepage (currently only in German language).

Feature History

Version 1.0.3

  • Introduced the action AddSessionAttributeCleanupAction
  • Reworked the test application
  • Improved the demo application

Version 1.0.2

  • Introduced the new class TilesWorkflowRequestProcessor that must be specified in the configuration instead of WorkflowRequestProcessor, if this extension is used together with the Tiles plugin. For this the workflow logic was extracted into a separate class to avoid the necessity of code duplication and to allow easy implementation of further XYZWorkflowRequestProcessor classes.

Version 1.0.1

  • Upon nextState violations the action path that caused the violation is stored in request scope now and can be retrieved by the action that finally handles the workflow violation.
  • Introduced the new action ForwardNextStateViolationAction that makes use of this feature.
  • Included a demo application that demonstrates how the extension can be used to build a wizard like sequence of dialogs.

Version 1.0.0

The versions from 1.0.0 on are no longer compatible with Struts 1.0.x and require Struts 1.1-rc1 or newer.

Here is a list of the new features, this version provides compared to previous versions:

  • Existing application code can now easier use this package, as the actions do not need to be changed any more. In order to integrate this package only two lines of each configuration file need to be changed.
  • Workflow violations can now be handled much more granular. In particular no sessions are automatically invalidated upon workflow violation. This allows the developer to write applications that handle workflow violations much more generous than this has been possible up to now.
  • The concept of prevState and nextState definitions was reworked to become more straightforward. Thus, the nextPath feature could be removed, because it is no longer needed to branch off new workflows from an existing one.
  • Actions can now be marked to be excluded from workflow checks, so they can be executed at any time.

Versions prior to 1.0.0

The versions 0.x.y of the Struts Workflow Extension were compatible with Struts 1.0.x. Unfortunately applications that wanted to use this extension had to be modified. Therefore, these versions are no longer maintained. It is highly recommended to switch to 1.0.0 or newer.