Okay here is the idea I proposed earlier ("Struts (MVC) Shortcomings?") in
more solid thought.

My hope in this is to provide an non-hard-coding mechanism to take advantage
of reusable logic without having to forward around to a bunch of Action
classes (which doesn't work anyways).

Here is my proposal:

An action mapping could have an associated Process Config specified in the
<set-property> of the action class. Something like:
<set-property name="processor" value="processa" />

An associated config file called processor.xml could be set up to define
process patterns that have names associated with the value attribute of the
set-property. Something like:
<processor>
        <process-group name="processa">
                <process-action name="com.mydomain.ProcessThisA">
                <process-action name="com.mydomain.ProcessThisB">
        </process-group>
        <process-groupname="processb">
                <process-action name="com.mydomain.ProcessThisB">
                <process-action name="com.mydomain.ProcessThisC">
        </process-group>
        <process-groupname="processd">
                <process-action name="com.mydomain.ProcessThisX">
                <process-action name="com.mydomain.ProcessThisC">
                <process-action name="com.mydomain.ProcessThisN">
        </process-group>
</processor>

This config info could be placed into the Application Scope at the app
startup using the plugin mechanism of Struts 1.1.

When an Action is called it would look to see what "process group" it needs
to call and using reflection to perform the specified chain of processing in
the order specified in the process-groupname config.

A process class would conform to an interface and would have access to
everything that the Action has access to. This way any errors or scoped
beans/Attributes that need to be set can be set from within the process
class. Also, the process class could access other logic beans for sql and
such.

Any unique coding that needs to happen can still be contained in an Action
class. But for code that is reusable. This would be very nice.

Brandon Goodin
Phase Web and Multimedia
P (406) 862-2245
F (406) 862-0354
[EMAIL PROTECTED]
http://www.phase.ws


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to