|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
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
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!
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
Introduced the action AddSessionAttributeCleanupAction
Reworked the test application
Improved the demo application
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
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.
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.