Hi Geoff, I really like the sound of this. Having non-visible components which control application lifecycle and workflow logic sounds like a great addition to Tapestry.
Sure, you can do it all yourself, as you have done, but it would increase the value of Tapestry as a frameowkr if it had support for this sort of thing built in. As you say, workflow/lifecycle becomes a time-consuming part of the development process for large apps, which are the sort of maps that Tapestry is best suited to. The Jakarta project had some workslow-specification project going, but I think they've over-reached themselves. We need something simple, yet powerful. I'd be interested to read anything you have about this. kenny > -----Original Message----- > From: Geoff Longman [mailto:[EMAIL PROTECTED]] > Sent: 10 July 2002 13:26 > To: [EMAIL PROTECTED] > Subject: [Tapestry-developer] More Controller (aka) MVC in Tapestry > > > 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 > ------------------------------------------------------- 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
