Hi Bob, If you download the latest nightly build you will find an initial implementation of the Workflow proposal.
Jon. -----Original Message----- From: Bob Williams [mailto:[EMAIL PROTECTED]] Sent: 04 February 2002 15:33 To: Struts Users Mailing List Subject: Re: Design advice. I am new to this list so I have some catching up to do, so forgive me if this is an "old" question. Mr. Husted refers to the "workflow proposal/objects" in his response. What is the status of the Workflow proposal and/or how do I track what is happening there? I have read the proposal, but haven't found anything that refers to the implementation of it. Thanks for your patience, bob ----- Original Message ----- From: "Ted Husted" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Monday, February 04, 2002 9:11 AM Subject: Re: Design advice. > > An approach I've used successfully, which is looks like where you are > going, is to > > (1) create a set of standard Actions that can act up a known type of > object, or an object that implements a particular interface, and > > (2) pass the type of the bean to create to the standard Action as the > parameter property. > > <action > path="/item/Edit" > type="org.apache.gavel.http.SecureHelper" <-- standard section > name="itemForm" > scope="request" > validate="false" > parameter="org.apache.gavel.item.Select"> <-- business bean > <forward > name="continue" > path="/pages/item/Form.jsp"/> > </action> > > > The standard Action can then instantiate the bean and use the interface > methods to act upon it. > > This is akin to the approach Struts uses for ActionForms, et cetera. > > The "ModelBeans" in the Scaffold/Artimus packages in the Contrib folder > demonstrate using this in practice. > > I now find myself writing signficant applications that use virtually no > custom Actions at all, and instead end up putting all the business logic > in business beans (where they belong). > > This is exactly the same idea that Craig proposed in his Workflow > proposal (thanks Craig!). > > When I get a break, I hope to revisit the workflow proposal and see if I > can get my apps to do the same thing I'm doing with these standard > actions (see Scaffold) with workflow objects. > > > -- Ted Husted, Husted dot Com, Fairport NY USA. > -- Java Web Development with Struts. > -- Tel +1 585 737-3463. > -- Web http://www.husted.com/struts/ > > rob wrote: > > > > This is a pretty lengthy post so if you're not that interested be warned not > > to continue. > > > > I'm trying to develop a struts application that has the ability to have new > > beans plugged > > into it after it's been deployed. > > > > The idea is someone will come along later and write a new set of component > > class files > > (that also use struts) and can simply modify the struts-config.xml and plug > > them in. > > > > I've developed two sets of actions, the first is a set of generic actions > > that will rely on > > methods that will exist by convention in any component that is developed for > > the > > application. The second set of actions are specific to whatever component > > is being > > plugged in and are specified per action. > > > > Below I have illustrated an example struts-config.xml that has two familiar > > components > > plugged into it. A 'Folder' and 'Document' which is a fairly familiar idea > > to most. Each > > component may implement 4 core operations view, creation, modification and > > removal. > > > > I was just wondering if anyone could offer some comments that might be > > helpful in > > developing the model I am trying to build. Or by all means any other design > > advice is > > good as well. > > > > Thanks > > > > rob > > <form-beans> > > <form-bean name="viewFolder" type="CreateFolderForm"/> > > <form-bean name="viewDocument" type="CreateDocumentForm"/> > > <form-bean name="createFolder" type="CreateFolderForm"/> > > <form-bean name="createDocument" type="CreateDocumentForm"/> > > <form-bean name="modifyFolder" type="CreateFolderForm"/> > > <form-bean name="modifyDocument" type="CreateDocumentForm"/> > > <form-bean name="removeFolder" type="CreateFolderForm"/> > > <form-bean name="removeDocument" type="CreateDocumentForm"/> > > </form-beans> > > > > <global-forwards> > > <forward name="view" type="do/view"/> > > <forward name="create" type="do/create"/> > > <forward name="modify" type="do/modify"/> > > <forward name="remove" type="do/remove"/> > > </global-forwards> > > > > <!-- begin element independant actions --> > > <action path="/view" > > type="ViewAction" > > name="viewForm" > > scope="request"> > > > > <forward name="view/Folder" > > path="do/viewFolder"/> > > <forward name="view/Document" > > path="do/viewDocument"/> > > > > </action> > > > > <action path="/create" > > type="CreateAction" > > name="createForm" > > scope="request"> > > > > <forward name="create/Folder" > > path="/WEB-INF/pages/createFolder.jsp"/> > > <forward name="create/Document" > > path="/WEB-INF/pages/createDocument.jsp"/> > > > > </action> > > > > <action path="/modify" > > type="ModifyAction" > > name="modifyForm" > > scope="request"> > > > > <forward name="modify/Folder" > > path="/WEB-INF/pages/modifyFolder.jsp"/> > > <forward name="modify/Document" > > path="/WEB-INF/pages/modifyDocument.jsp"/> > > > > </action> > > > > <action path="/remove" > > type="RemoveAction" > > name="removeForm" > > scope="request"> > > > > <forward name="remove/Folder" > > path="/WEB-INF/pages/removeFolder.jsp"/> > > <forward name="remove/Document" > > path="/WEB-INF/pages/removeDocument.jsp"/> > > > > </action> > > > > <!-- begin element dependant actions --> > > > > <action path="/viewFolder" > > type="ViewFolderAction" > > name="viewFolderForm" > > scope="request"> > > > > <forward name="view.Folder" > > path="/WEB-INF/pages/viewFolder.jsp"/> > > > > </action> > > > > <action path="/viewDocument" > > type="ViewDocumentAction" > > name="viewDocumentForm" > > scope="request"> > > > > <forward name="view.Document" > > path="/WEB-INF/pages/viewDocument.jsp"/> > > > > </action> > > > > <action path="/createFolder" > > type="CreateFolderAction" > > name="createFolderForm" > > input="/WEB-INF/pages/createFolder.jsp" > > scope="request"> > > > > </action> > > > > <action path="/createDocument" > > type="CreateDocumentAction" > > name="createDocumentForm" > > input="/WEB-INF/pages/createDocument.jsp" > > scope="request"> > > </action> > > > > <action path="/modifyFolder" > > type="ModifyFolderAction" > > name="modifyFolderForm" > > input="/WEB-INF/pages/modifyFolder.jsp" > > scope="request"> > > </action> > > > > <action path="/modifyDocument" > > type="ModifyDocumentAction" > > name="modifyDocumentForm" > > input="/WEB-INF/pages/modifyDocument.jsp" > > scope="request"> > > </action> > > > > <action path="/removeFolder" > > type="RemoveFolderAction" > > name="removeFolderForm" > > input="/WEB-INF/pages/removeFolder.jsp" > > scope="request"> > > </action> > > > > <action path="/removeDocument" > > type="RemoveDocumentAction" > > name="removeDocumentForm" > > input="/WEB-INF/pages/removeDocument.jsp" > > scope="request"> > > </action> > > > > -- > > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>