Hello Howard and the community! I have been playing around with the idea of getting more of the Controller in MVC while using Tapestry.
We are building a large app in the telco space, many screens. I forsee that even with Tapestry the app getting quite complex. Putting the business logic and the page navigation stuff in the pages themselves will become burdomsome to maintain as we get to 100+ pages. Our app, as most are, is divided into use-cases, each of which collaborates with several pages. We are playing with the notion of centralizing logic for each use-case within a bean we call a WorkUnit (WU). At the lowest level a WU knows about the pages it collaorates with, has business logic, and navigation rules. I have instrumented my Engine and Visit to handle the lifecycle of WU Also WU's are instrumented so they can have listener methods. So, the WU is attached to the Visit and activates pages and those pages call get/sets in the current WU and also call WU listener methods. The WU listenerMap will throw StaleLinkExceptions if a page tries to call a listener that does not exist, this might happen if the user used the Back button. A bonus of using the Tapestry propertyHelper stuff to access WU's is that it is possible to share pages among WUs. The pages themselves a relegated to handling whatever transmorgifigcation is needed to pull/push data to/from a WU, field validation etc. WU's always remember the page they last display so in the case of stale link exceptions it is feasible to restore the app for the user to the last good page. There's lifecycle stuff too so that if, say a user triggered an action that would attach an different WU to the visit, the current WU gets a chance to examine its state and perhaps veto its replacement, or attach the new WU as a child. In the case of a child WU the parent would lose control to the child, then regain control when the child is done. What I have works, but I know that it could be better and perhaps the basis for a new feature for Tapestry. ie. non rendering controller components. If there is interest, I'll post a more detailed explanation on the Tapestry Wiki and we can discuss. Geoffrey Longman Intelligent Works Inc. ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Two, two, TWO treats in one. http://thinkgeek.com/sf _______________________________________________ Tapestry-developer mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/tapestry-developer
