|
From: Steven D. <ste...@gm...> - 2005-03-28 12:32:00
|
Hi, Consider three classes in a domain: Person, Manager and Meeting. Person has a relationship with Manager (subordinates) and Meeting (attendees, excused, ...). Say I create a flow to browse, search, add, edit Persons. Consider now I want to reuse the Person flow as a sub flow in both the Manager and Meeting flows to select Persons from those two flows. When jumping from the Manager flow to the Person flow I do not want to show Persons that are already linked to the given Manager. When jumping from the Meeting flow to the Person flow I do not want to show Persons that are already in the attendee or excused list for that Meeting. This would mean the Person flow would have to behave differently based on a configuration that is external to the Person flow. How can this be accomplished using WebFlow? Steven -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart |
|
From: Erwin V. <erw...@er...> - 2005-03-28 14:31:10
|
Hey Steven, I would probably do this by making the search (or filter) algorithm configurable for the Person flow. That way the calling parent flow can pass in the algorithm to use. I find that a good way to think about a flow is as a method: it has input parameters and can return results. So your person flow would be something like this, when expressed as a method: public Person PersonFlow(String action, SearchAlgorithm algorithm) Erwin Vervaet erw...@er... ----- Original Message ----- From: "Steven Devijver" <ste...@gm...> To: <spr...@li...> Sent: Monday, March 28, 2005 2:31 PM Subject: [Springframework-developer] webflow: subflow behavior question > Hi, > > Consider three classes in a domain: Person, Manager and Meeting. > Person has a relationship with Manager (subordinates) and Meeting > (attendees, excused, ...). > > Say I create a flow to browse, search, add, edit Persons. Consider now > I want to reuse the Person flow as a sub flow in both the Manager and > Meeting flows to select Persons from those two flows. > > When jumping from the Manager flow to the Person flow I do not want to > show Persons that are already linked to the given Manager. When > jumping from the Meeting flow to the Person flow I do not want to show > Persons that are already in the attendee or excused list for that > Meeting. > > This would mean the Person flow would have to behave differently based > on a configuration that is external to the Person flow. How can this > be accomplished using WebFlow? > > Steven > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Steven D. <ste...@gm...> - 2005-03-28 15:00:08
|
Hi Erwin, > I would probably do this by making the search (or filter) algorithm > configurable for the Person flow. That way the calling parent flow can pass > in the algorithm to use. I find that a good way to think about a flow is as > a method: it has input parameters and can return results. So your person > flow would be something like this, when expressed as a method: > > public Person PersonFlow(String action, SearchAlgorithm algorithm) > Does this mean the Manager and Meeting flows have to put a SearchAlgorithm instance in the session (or the model?) before passing control to the Person subflow? Does this require an action-state before the flow-state in the Manager and Meeting flows? Thanks Steven |
|
From: Erwin V. <erw...@er...> - 2005-03-28 15:09:34
|
The Manager and Meeting flow indeed have to put a SearchAlgorithm instance in flow scope, probably in an 'initFlow' action state or something like that, which could also take care of any type of flow data initialisation, e.g. pulling in reference data.. You then use an attribute mapper to pass the SearchAlgorithm to the subflow in the subflow state. Erwin Vervaet erw...@er... ----- Original Message ----- From: "Steven Devijver" <ste...@gm...> To: <spr...@li...> Sent: Monday, March 28, 2005 4:59 PM Subject: Re: [Springframework-developer] webflow: subflow behavior question > Hi Erwin, > > >> I would probably do this by making the search (or filter) algorithm >> configurable for the Person flow. That way the calling parent flow can >> pass >> in the algorithm to use. I find that a good way to think about a flow is >> as >> a method: it has input parameters and can return results. So your person >> flow would be something like this, when expressed as a method: >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) >> > Does this mean the Manager and Meeting flows have to put a > SearchAlgorithm instance in the session (or the model?) before passing > control to the Person subflow? Does this require an action-state > before the flow-state in the Manager and Meeting flows? > > Thanks > > Steven > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Steven D. <ste...@gm...> - 2005-03-28 15:54:52
|
Hi Erwin, Although this is just a silly example to highlight my question passing behavior through the model does seem a bit awkward to me. Especially, the behavior class would also contain state (unless the state is passed separately in the model but then the Person flow would need to pass the state to the behavior). This would make the design not thread-safe. In this scenario I would prefer to pass a list of ID's of Persons that cannot be shown in the Person flow and implement the behavior once. I'm looking into this because I'm working on an article on webflow. btw, I found you article "Spring Web Flows: A Practical Guide" very helpful. Are you planning to keep it up to date with the latest changes to WebFlow (e.g. the changes to the action interface)? Thanks Steven On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet <erw...@er...> wrote: > The Manager and Meeting flow indeed have to put a SearchAlgorithm instance > in flow scope, probably in an 'initFlow' action state or something like > that, which could also take care of any type of flow data initialisation, > e.g. pulling in reference data.. You then use an attribute mapper to pass > the SearchAlgorithm to the subflow in the subflow state. > > Erwin Vervaet > erw...@er... > ----- Original Message ----- > From: "Steven Devijver" <ste...@gm...> > To: <spr...@li...> > Sent: Monday, March 28, 2005 4:59 PM > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Hi Erwin, > > > > > >> I would probably do this by making the search (or filter) algorithm > >> configurable for the Person flow. That way the calling parent flow can > >> pass > >> in the algorithm to use. I find that a good way to think about a flow is > >> as > >> a method: it has input parameters and can return results. So your person > >> flow would be something like this, when expressed as a method: > >> > >> public Person PersonFlow(String action, SearchAlgorithm algorithm) > >> > > Does this mean the Manager and Meeting flows have to put a > > SearchAlgorithm instance in the session (or the model?) before passing > > control to the Person subflow? Does this require an action-state > > before the flow-state in the Manager and Meeting flows? > > > > Thanks > > > > Steven > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart |
|
From: Erwin V. <erw...@er...> - 2005-03-28 16:33:40
|
Threading issues are limited in web flows since a flow execution is basically single threaded: i.e. the flow execution entry methods (start() and signalEvent()) are synchronized. (At least this is the behaviour in the new implementation in the sandbox.) Ofcourse you could also pass the list of ids to the Person subflow. In that case your "subflow signature" would be something like public Person PersonFlow(String action, Person[] personsToExclude) We're maintaining documentation related to the "new" Spring web flow system at http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. Keith Donald has been working on a new partical guide that you can find there. Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 and then provide a migration guide to the new Spring web flow system. Ervacon Spring web flow is still useful for those people that stick with Spring 1.1.x, but if you have 1.2 or later it's probably better to go with the new system. Erwin Erwin Vervaet erw...@er... ----- Original Message ----- From: "Steven Devijver" <ste...@gm...> To: <spr...@li...> Sent: Monday, March 28, 2005 5:51 PM Subject: Re: [Springframework-developer] webflow: subflow behavior question > Hi Erwin, > > Although this is just a silly example to highlight my question passing > behavior through the model does seem a bit awkward to me. Especially, > the behavior class would also contain state (unless the state is > passed separately in the model but then the Person flow would need to > pass the state to the behavior). This would make the design not > thread-safe. > > In this scenario I would prefer to pass a list of ID's of Persons that > cannot be shown in the Person flow and implement the behavior once. > I'm looking into this because I'm working on an article on webflow. > > btw, I found you article "Spring Web Flows: A Practical Guide" very > helpful. Are you planning to keep it up to date with the latest > changes to WebFlow (e.g. the changes to the action interface)? > > Thanks > > Steven > > > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > <erw...@er...> wrote: >> The Manager and Meeting flow indeed have to put a SearchAlgorithm >> instance >> in flow scope, probably in an 'initFlow' action state or something like >> that, which could also take care of any type of flow data initialisation, >> e.g. pulling in reference data.. You then use an attribute mapper to pass >> the SearchAlgorithm to the subflow in the subflow state. >> >> Erwin Vervaet >> erw...@er... >> ----- Original Message ----- >> From: "Steven Devijver" <ste...@gm...> >> To: <spr...@li...> >> Sent: Monday, March 28, 2005 4:59 PM >> Subject: Re: [Springframework-developer] webflow: subflow behavior >> question >> >> > Hi Erwin, >> > >> > >> >> I would probably do this by making the search (or filter) algorithm >> >> configurable for the Person flow. That way the calling parent flow can >> >> pass >> >> in the algorithm to use. I find that a good way to think about a flow >> >> is >> >> as >> >> a method: it has input parameters and can return results. So your >> >> person >> >> flow would be something like this, when expressed as a method: >> >> >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) >> >> >> > Does this mean the Manager and Meeting flows have to put a >> > SearchAlgorithm instance in the session (or the model?) before passing >> > control to the Person subflow? Does this require an action-state >> > before the flow-state in the Manager and Meeting flows? >> > >> > Thanks >> > >> > Steven >> > >> > >> > ------------------------------------------------------- >> > SF email is sponsored by - The IT Product Guide >> > Read honest & candid reviews on hundreds of IT Products from real >> > users. >> > Discover which products truly live up to the hype. Start reading now. >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> > _______________________________________________ >> > Springframework-developer mailing list >> > Spr...@li... >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer >> > >> > >> >> ------------------------------------------------------- >> SF email is sponsored by - The IT Product Guide >> Read honest & candid reviews on hundreds of IT Products from real users. >> Discover which products truly live up to the hype. Start reading now. >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> > > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Keith D. <ke...@in...> - 2005-03-28 17:02:45
|
As Erwin mentioned, there should be no concern of thread safety here. Just create a prototype instance that encapsulates the context you need an pass it to the spawned subflow. That'll be thread safe, as operations on flow executions are synchronized per session per request. "PersonSearchAlgorithm" will would be a callback to some kind of contextual, query, yes? Yea, to me it makes sense to parameterize the sub flow execution with an instance of an appropriate contextual implementation of that interface (e.g "all persons where manager != <x>, or all persons not already attending or excluded"), delegating down to the DAO layer to actually perform the data access. I like the notion of this better than passing in a snapshot array of persons to exclude. HTH! Just curious, what is the web flow article? When will it be published? Keith Keith Donald Interface21 - Spring Training, Consulting, and Support, "From the Source" http://www.springframework.com -----Original Message----- From: spr...@li... [mailto:spr...@li...] On Behalf Of Erwin Vervaet Sent: Monday, March 28, 2005 11:35 AM To: spr...@li... Subject: Re: [Springframework-developer] webflow: subflow behavior question Threading issues are limited in web flows since a flow execution is basically single threaded: i.e. the flow execution entry methods (start() and signalEvent()) are synchronized. (At least this is the behaviour in the new implementation in the sandbox.) Ofcourse you could also pass the list of ids to the Person subflow. In that case your "subflow signature" would be something like public Person PersonFlow(String action, Person[] personsToExclude) We're maintaining documentation related to the "new" Spring web flow system at http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. Keith Donald has been working on a new partical guide that you can find there. Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 and then provide a migration guide to the new Spring web flow system. Ervacon Spring web flow is still useful for those people that stick with Spring 1.1.x, but if you have 1.2 or later it's probably better to go with the new system. Erwin Erwin Vervaet erw...@er... ----- Original Message ----- From: "Steven Devijver" <ste...@gm...> To: <spr...@li...> Sent: Monday, March 28, 2005 5:51 PM Subject: Re: [Springframework-developer] webflow: subflow behavior question > Hi Erwin, > > Although this is just a silly example to highlight my question passing > behavior through the model does seem a bit awkward to me. Especially, > the behavior class would also contain state (unless the state is > passed separately in the model but then the Person flow would need to > pass the state to the behavior). This would make the design not > thread-safe. > > In this scenario I would prefer to pass a list of ID's of Persons that > cannot be shown in the Person flow and implement the behavior once. > I'm looking into this because I'm working on an article on webflow. > > btw, I found you article "Spring Web Flows: A Practical Guide" very > helpful. Are you planning to keep it up to date with the latest > changes to WebFlow (e.g. the changes to the action interface)? > > Thanks > > Steven > > > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > <erw...@er...> wrote: >> The Manager and Meeting flow indeed have to put a SearchAlgorithm >> instance >> in flow scope, probably in an 'initFlow' action state or something like >> that, which could also take care of any type of flow data initialisation, >> e.g. pulling in reference data.. You then use an attribute mapper to pass >> the SearchAlgorithm to the subflow in the subflow state. >> >> Erwin Vervaet >> erw...@er... >> ----- Original Message ----- >> From: "Steven Devijver" <ste...@gm...> >> To: <spr...@li...> >> Sent: Monday, March 28, 2005 4:59 PM >> Subject: Re: [Springframework-developer] webflow: subflow behavior >> question >> >> > Hi Erwin, >> > >> > >> >> I would probably do this by making the search (or filter) algorithm >> >> configurable for the Person flow. That way the calling parent flow can >> >> pass >> >> in the algorithm to use. I find that a good way to think about a flow >> >> is >> >> as >> >> a method: it has input parameters and can return results. So your >> >> person >> >> flow would be something like this, when expressed as a method: >> >> >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) >> >> >> > Does this mean the Manager and Meeting flows have to put a >> > SearchAlgorithm instance in the session (or the model?) before passing >> > control to the Person subflow? Does this require an action-state >> > before the flow-state in the Manager and Meeting flows? >> > >> > Thanks >> > >> > Steven >> > >> > >> > ------------------------------------------------------- >> > SF email is sponsored by - The IT Product Guide >> > Read honest & candid reviews on hundreds of IT Products from real >> > users. >> > Discover which products truly live up to the hype. Start reading now. >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> > _______________________________________________ >> > Springframework-developer mailing list >> > Spr...@li... >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer >> > >> > >> >> ------------------------------------------------------- >> SF email is sponsored by - The IT Product Guide >> Read honest & candid reviews on hundreds of IT Products from real users. >> Discover which products truly live up to the hype. Start reading now. >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> > > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Steven D. <ste...@gm...> - 2005-03-29 06:48:57
|
Erwin, Keith, Thanks for your feedback. Regarding thread-safety, there would indeed be no concern if the model-mapper object would be instantiated on every execution of a flow-state. Is this the case? Otherwise, the model-mapper would have no way of knowing when to create an new algorithm instance, which would contain state. Regarding the old webflow article, I find it more concise than the current docs on Confluence, it provides an excellent overview of how to get started with WebFlow and I feel it should not be discarded. With a little bit of work this article could be kept up to date. Regarding this new article, it will probably be published in the next couple of weeks. I'm discussing the creation of a wizard across multiple pages and the reuse of a subflow, the disadvantages of classic MVC for these scenarios (I'm talking based on personal experience :) and the advantages offered by WebFlow. Steven On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> wrote: > As Erwin mentioned, there should be no concern of thread safety here. Just > create a prototype instance that encapsulates the context you need an pass > it to the spawned subflow. That'll be thread safe, as operations on flow > executions are synchronized per session per request. > > "PersonSearchAlgorithm" will would be a callback to some kind of contextual, > query, yes? Yea, to me it makes sense to parameterize the sub flow > execution with an instance of an appropriate contextual implementation of > that interface (e.g "all persons where manager != <x>, or all persons not > already attending or excluded"), delegating down to the DAO layer to > actually perform the data access. I like the notion of this better than > passing in a snapshot array of persons to exclude. > > HTH! Just curious, what is the web flow article? When will it be published? > > Keith > > Keith Donald > Interface21 - Spring Training, Consulting, and Support, "From the Source" > http://www.springframework.com > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] On Behalf Of > Erwin Vervaet > Sent: Monday, March 28, 2005 11:35 AM > To: spr...@li... > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > Threading issues are limited in web flows since a flow execution is > basically single threaded: i.e. the flow execution entry methods (start() > and signalEvent()) are synchronized. (At least this is the behaviour in the > new implementation in the sandbox.) > > Ofcourse you could also pass the list of ids to the Person subflow. In that > case your "subflow signature" would be something like > > public Person PersonFlow(String action, Person[] personsToExclude) > > We're maintaining documentation related to the "new" Spring web flow system > at http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. > Keith Donald has been working on a new partical guide that you can find > there. > > Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 and > then provide a migration guide to the new Spring web flow system. Ervacon > Spring web flow is still useful for those people that stick with Spring > 1.1.x, but if you have 1.2 or later it's probably better to go with the new > system. > > Erwin > > Erwin Vervaet > erw...@er... > ----- Original Message ----- > From: "Steven Devijver" <ste...@gm...> > To: <spr...@li...> > Sent: Monday, March 28, 2005 5:51 PM > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Hi Erwin, > > > > Although this is just a silly example to highlight my question passing > > behavior through the model does seem a bit awkward to me. Especially, > > the behavior class would also contain state (unless the state is > > passed separately in the model but then the Person flow would need to > > pass the state to the behavior). This would make the design not > > thread-safe. > > > > In this scenario I would prefer to pass a list of ID's of Persons that > > cannot be shown in the Person flow and implement the behavior once. > > I'm looking into this because I'm working on an article on webflow. > > > > btw, I found you article "Spring Web Flows: A Practical Guide" very > > helpful. Are you planning to keep it up to date with the latest > > changes to WebFlow (e.g. the changes to the action interface)? > > > > Thanks > > > > Steven > > > > > > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > > <erw...@er...> wrote: > >> The Manager and Meeting flow indeed have to put a SearchAlgorithm > >> instance > >> in flow scope, probably in an 'initFlow' action state or something like > >> that, which could also take care of any type of flow data initialisation, > >> e.g. pulling in reference data.. You then use an attribute mapper to pass > >> the SearchAlgorithm to the subflow in the subflow state. > >> > >> Erwin Vervaet > >> erw...@er... > >> ----- Original Message ----- > >> From: "Steven Devijver" <ste...@gm...> > >> To: <spr...@li...> > >> Sent: Monday, March 28, 2005 4:59 PM > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> question > >> > >> > Hi Erwin, > >> > > >> > > >> >> I would probably do this by making the search (or filter) algorithm > >> >> configurable for the Person flow. That way the calling parent flow can > >> >> pass > >> >> in the algorithm to use. I find that a good way to think about a flow > >> >> is > >> >> as > >> >> a method: it has input parameters and can return results. So your > >> >> person > >> >> flow would be something like this, when expressed as a method: > >> >> > >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) > >> >> > >> > Does this mean the Manager and Meeting flows have to put a > >> > SearchAlgorithm instance in the session (or the model?) before passing > >> > control to the Person subflow? Does this require an action-state > >> > before the flow-state in the Manager and Meeting flows? > >> > > >> > Thanks > >> > > >> > Steven > >> > > >> > > >> > ------------------------------------------------------- > >> > SF email is sponsored by - The IT Product Guide > >> > Read honest & candid reviews on hundreds of IT Products from real > >> > users. > >> > Discover which products truly live up to the hype. Start reading now. > >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> > _______________________________________________ > >> > Springframework-developer mailing list > >> > Spr...@li... > >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > > >> > > >> > >> ------------------------------------------------------- > >> SF email is sponsored by - The IT Product Guide > >> Read honest & candid reviews on hundreds of IT Products from real users. > >> Discover which products truly live up to the hype. Start reading now. > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> _______________________________________________ > >> Springframework-developer mailing list > >> Spr...@li... > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> > > > > > > -- > > "If you want to be a different fish, you gotta jump out of the school." > > -- Captain Beefheart > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart |
|
From: Erwin V. <erw...@er...> - 2005-03-29 13:05:39
|
Mmm. So you're thinking about a custom mapper that (in the 'createSubFlowInputAttributes' method) takes a list of persons (ids) from the parent flow scope and instantiates an algorithm object, passing in those ids. Once that is done it puts the algorithm object in the subflow scope. As far as I can see the mapper would still be thread safe right -- everything happens in a method call with local variables? All mappers (and actions) should be stateless and there should be little need to make them statefull. Anyway, thinking about this popped the following into my mind: currently the flow keeps references to the mapper objects that are looked up at flow configuration (build) time. The same is also true for actions and other flows (i.e. for all flow services looked up via a FlowServiceLocator). This is actually different from my original implementation where you could control wheter or not an action or mapper was a singleton by using the "singleton" property in the application context and the mapper or action was looked up every time it was needed. This kind of prototype mapper or action wasn't really that usefull since you could only hold state for a very short time: one 'use' of the object in the flow (e.g. input & output mapping would be 2 uses, so you could not share state by making the mapper statefull). However, I'm thinking that if you could have a singleton action/mapper per flow execution, you could really make the action or mapper statefull. Not sure if that would be a good idea though....just brainstorming... Agreed that 'porting' the old article to the new system would be a good idea. When we approach Spring web flow 1.0 final I'll take care of that. Erwin Vervaet erw...@er... ----- Original Message ----- From: "Steven Devijver" <ste...@gm...> To: <spr...@li...> Sent: Tuesday, March 29, 2005 8:48 AM Subject: Re: [Springframework-developer] webflow: subflow behavior question > Erwin, Keith, > > Thanks for your feedback. Regarding thread-safety, there would indeed > be no concern if the model-mapper object would be instantiated on > every execution of a flow-state. Is this the case? Otherwise, the > model-mapper would have no way of knowing when to create an new > algorithm instance, which would contain state. > > Regarding the old webflow article, I find it more concise than the > current docs on Confluence, it provides an excellent overview of how > to get started with WebFlow and I feel it should not be discarded. > With a little bit of work this article could be kept up to date. > > Regarding this new article, it will probably be published in the next > couple of weeks. I'm discussing the creation of a wizard across > multiple pages and the reuse of a subflow, the disadvantages of > classic MVC for these scenarios (I'm talking based on personal > experience :) and the advantages offered by WebFlow. > > Steven > > On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> > wrote: >> As Erwin mentioned, there should be no concern of thread safety here. >> Just >> create a prototype instance that encapsulates the context you need an >> pass >> it to the spawned subflow. That'll be thread safe, as operations on flow >> executions are synchronized per session per request. >> >> "PersonSearchAlgorithm" will would be a callback to some kind of >> contextual, >> query, yes? Yea, to me it makes sense to parameterize the sub flow >> execution with an instance of an appropriate contextual implementation of >> that interface (e.g "all persons where manager != <x>, or all persons not >> already attending or excluded"), delegating down to the DAO layer to >> actually perform the data access. I like the notion of this better than >> passing in a snapshot array of persons to exclude. >> >> HTH! Just curious, what is the web flow article? When will it be >> published? >> >> Keith >> >> Keith Donald >> Interface21 - Spring Training, Consulting, and Support, "From the Source" >> http://www.springframework.com >> >> -----Original Message----- >> From: spr...@li... >> [mailto:spr...@li...] On Behalf >> Of >> Erwin Vervaet >> Sent: Monday, March 28, 2005 11:35 AM >> To: spr...@li... >> Subject: Re: [Springframework-developer] webflow: subflow behavior >> question >> >> Threading issues are limited in web flows since a flow execution is >> basically single threaded: i.e. the flow execution entry methods (start() >> and signalEvent()) are synchronized. (At least this is the behaviour in >> the >> new implementation in the sandbox.) >> >> Ofcourse you could also pass the list of ids to the Person subflow. In >> that >> case your "subflow signature" would be something like >> >> public Person PersonFlow(String action, Person[] personsToExclude) >> >> We're maintaining documentation related to the "new" Spring web flow >> system >> at >> http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. >> Keith Donald has been working on a new partical guide that you can find >> there. >> >> Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 >> and >> then provide a migration guide to the new Spring web flow system. Ervacon >> Spring web flow is still useful for those people that stick with Spring >> 1.1.x, but if you have 1.2 or later it's probably better to go with the >> new >> system. >> >> Erwin >> >> Erwin Vervaet >> erw...@er... >> ----- Original Message ----- >> From: "Steven Devijver" <ste...@gm...> >> To: <spr...@li...> >> Sent: Monday, March 28, 2005 5:51 PM >> Subject: Re: [Springframework-developer] webflow: subflow behavior >> question >> >> > Hi Erwin, >> > >> > Although this is just a silly example to highlight my question passing >> > behavior through the model does seem a bit awkward to me. Especially, >> > the behavior class would also contain state (unless the state is >> > passed separately in the model but then the Person flow would need to >> > pass the state to the behavior). This would make the design not >> > thread-safe. >> > >> > In this scenario I would prefer to pass a list of ID's of Persons that >> > cannot be shown in the Person flow and implement the behavior once. >> > I'm looking into this because I'm working on an article on webflow. >> > >> > btw, I found you article "Spring Web Flows: A Practical Guide" very >> > helpful. Are you planning to keep it up to date with the latest >> > changes to WebFlow (e.g. the changes to the action interface)? >> > >> > Thanks >> > >> > Steven >> > >> > >> > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet >> > <erw...@er...> wrote: >> >> The Manager and Meeting flow indeed have to put a SearchAlgorithm >> >> instance >> >> in flow scope, probably in an 'initFlow' action state or something >> >> like >> >> that, which could also take care of any type of flow data >> >> initialisation, >> >> e.g. pulling in reference data.. You then use an attribute mapper to >> >> pass >> >> the SearchAlgorithm to the subflow in the subflow state. >> >> >> >> Erwin Vervaet >> >> erw...@er... >> >> ----- Original Message ----- >> >> From: "Steven Devijver" <ste...@gm...> >> >> To: <spr...@li...> >> >> Sent: Monday, March 28, 2005 4:59 PM >> >> Subject: Re: [Springframework-developer] webflow: subflow behavior >> >> question >> >> >> >> > Hi Erwin, >> >> > >> >> > >> >> >> I would probably do this by making the search (or filter) algorithm >> >> >> configurable for the Person flow. That way the calling parent flow >> >> >> can >> >> >> pass >> >> >> in the algorithm to use. I find that a good way to think about a >> >> >> flow >> >> >> is >> >> >> as >> >> >> a method: it has input parameters and can return results. So your >> >> >> person >> >> >> flow would be something like this, when expressed as a method: >> >> >> >> >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) >> >> >> >> >> > Does this mean the Manager and Meeting flows have to put a >> >> > SearchAlgorithm instance in the session (or the model?) before >> >> > passing >> >> > control to the Person subflow? Does this require an action-state >> >> > before the flow-state in the Manager and Meeting flows? >> >> > >> >> > Thanks >> >> > >> >> > Steven >> >> > >> >> > >> >> > ------------------------------------------------------- >> >> > SF email is sponsored by - The IT Product Guide >> >> > Read honest & candid reviews on hundreds of IT Products from real >> >> > users. >> >> > Discover which products truly live up to the hype. Start reading >> >> > now. >> >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> >> > _______________________________________________ >> >> > Springframework-developer mailing list >> >> > Spr...@li... >> >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> > >> >> > >> >> >> >> ------------------------------------------------------- >> >> SF email is sponsored by - The IT Product Guide >> >> Read honest & candid reviews on hundreds of IT Products from real >> >> users. >> >> Discover which products truly live up to the hype. Start reading now. >> >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> >> _______________________________________________ >> >> Springframework-developer mailing list >> >> Spr...@li... >> >> https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >> > >> > >> > -- >> > "If you want to be a different fish, you gotta jump out of the school." >> > -- Captain Beefheart >> > >> > >> > ------------------------------------------------------- >> > SF email is sponsored by - The IT Product Guide >> > Read honest & candid reviews on hundreds of IT Products from real >> > users. >> > Discover which products truly live up to the hype. Start reading now. >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> > _______________________________________________ >> > Springframework-developer mailing list >> > Spr...@li... >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer >> > >> > >> >> ------------------------------------------------------- >> SF email is sponsored by - The IT Product Guide >> Read honest & candid reviews on hundreds of IT Products from real users. >> Discover which products truly live up to the hype. Start reading now. >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> ------------------------------------------------------- >> SF email is sponsored by - The IT Product Guide >> Read honest & candid reviews on hundreds of IT Products from real users. >> Discover which products truly live up to the hype. Start reading now. >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >> _______________________________________________ >> Springframework-developer mailing list >> Spr...@li... >> https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> > > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > |
|
From: Steven D. <ste...@gm...> - 2005-03-29 13:19:57
|
> Mmm. So you're thinking about a custom mapper that (in the > 'createSubFlowInputAttributes' method) takes a list of persons (ids) from > the parent flow scope and instantiates an algorithm object, passing in those > ids. Once that is done it puts the algorithm object in the subflow scope. As > far as I can see the mapper would still be thread safe right -- everything > happens in a method call with local variables? This is indeed what I was thinking about. The mapper is the pivot point between two sub flows. Since the Person flow requires the algorithm class the mapper to me looks like the obvious point to create it. Since the mapper is a singleton and I would like to use IoC to configure which algorithm class the mapper should use the mapper needs to create the algorithm instance on every call to 'createSubFlowInputAttributes'. This would require the use of the 'getBean' method of the application context and a string property on the mapper class to set the bean name of the algorithm class. The algorithm class would be stateful thus needs to be configured as a prototype and its instances cannot outlive the scope of a request. > > All mappers (and actions) should be stateless and there should be little > need to make them statefull. Agreed. > > Anyway, thinking about this popped the following into my mind: currently the > flow keeps references to the mapper objects that are looked up at flow > configuration (build) time. The same is also true for actions and other > flows (i.e. for all flow services looked up via a FlowServiceLocator). > This is actually different from my original implementation where you could > control wheter or not an action or mapper was a singleton by using the > "singleton" property in the application context and the mapper or action was > looked up every time it was needed. This kind of prototype mapper or action > wasn't really that usefull since you could only hold state for a very short > time: one 'use' of the object in the flow (e.g. input & output mapping would > be 2 uses, so you could not share state by making the mapper statefull). > However, I'm thinking that if you could have a singleton action/mapper per > flow execution, you could really make the action or mapper statefull. Not > sure if that would be a good idea though....just brainstorming... > > Agreed that 'porting' the old article to the new system would be a good > idea. When we approach Spring web flow 1.0 final I'll take care of that. Great. > > Erwin Vervaet > erw...@er... > ----- Original Message ----- > From: "Steven Devijver" <ste...@gm...> > To: <spr...@li...> > Sent: Tuesday, March 29, 2005 8:48 AM > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Erwin, Keith, > > > > Thanks for your feedback. Regarding thread-safety, there would indeed > > be no concern if the model-mapper object would be instantiated on > > every execution of a flow-state. Is this the case? Otherwise, the > > model-mapper would have no way of knowing when to create an new > > algorithm instance, which would contain state. > > > > Regarding the old webflow article, I find it more concise than the > > current docs on Confluence, it provides an excellent overview of how > > to get started with WebFlow and I feel it should not be discarded. > > With a little bit of work this article could be kept up to date. > > > > Regarding this new article, it will probably be published in the next > > couple of weeks. I'm discussing the creation of a wizard across > > multiple pages and the reuse of a subflow, the disadvantages of > > classic MVC for these scenarios (I'm talking based on personal > > experience :) and the advantages offered by WebFlow. > > > > Steven > > > > On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> > > wrote: > >> As Erwin mentioned, there should be no concern of thread safety here. > >> Just > >> create a prototype instance that encapsulates the context you need an > >> pass > >> it to the spawned subflow. That'll be thread safe, as operations on flow > >> executions are synchronized per session per request. > >> > >> "PersonSearchAlgorithm" will would be a callback to some kind of > >> contextual, > >> query, yes? Yea, to me it makes sense to parameterize the sub flow > >> execution with an instance of an appropriate contextual implementation of > >> that interface (e.g "all persons where manager != <x>, or all persons not > >> already attending or excluded"), delegating down to the DAO layer to > >> actually perform the data access. I like the notion of this better than > >> passing in a snapshot array of persons to exclude. > >> > >> HTH! Just curious, what is the web flow article? When will it be > >> published? > >> > >> Keith > >> > >> Keith Donald > >> Interface21 - Spring Training, Consulting, and Support, "From the Source" > >> http://www.springframework.com > >> > >> -----Original Message----- > >> From: spr...@li... > >> [mailto:spr...@li...] On Behalf > >> Of > >> Erwin Vervaet > >> Sent: Monday, March 28, 2005 11:35 AM > >> To: spr...@li... > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> question > >> > >> Threading issues are limited in web flows since a flow execution is > >> basically single threaded: i.e. the flow execution entry methods (start() > >> and signalEvent()) are synchronized. (At least this is the behaviour in > >> the > >> new implementation in the sandbox.) > >> > >> Ofcourse you could also pass the list of ids to the Person subflow. In > >> that > >> case your "subflow signature" would be something like > >> > >> public Person PersonFlow(String action, Person[] personsToExclude) > >> > >> We're maintaining documentation related to the "new" Spring web flow > >> system > >> at > >> http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. > >> Keith Donald has been working on a new partical guide that you can find > >> there. > >> > >> Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 > >> and > >> then provide a migration guide to the new Spring web flow system. Ervacon > >> Spring web flow is still useful for those people that stick with Spring > >> 1.1.x, but if you have 1.2 or later it's probably better to go with the > >> new > >> system. > >> > >> Erwin > >> > >> Erwin Vervaet > >> erw...@er... > >> ----- Original Message ----- > >> From: "Steven Devijver" <ste...@gm...> > >> To: <spr...@li...> > >> Sent: Monday, March 28, 2005 5:51 PM > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> question > >> > >> > Hi Erwin, > >> > > >> > Although this is just a silly example to highlight my question passing > >> > behavior through the model does seem a bit awkward to me. Especially, > >> > the behavior class would also contain state (unless the state is > >> > passed separately in the model but then the Person flow would need to > >> > pass the state to the behavior). This would make the design not > >> > thread-safe. > >> > > >> > In this scenario I would prefer to pass a list of ID's of Persons that > >> > cannot be shown in the Person flow and implement the behavior once. > >> > I'm looking into this because I'm working on an article on webflow. > >> > > >> > btw, I found you article "Spring Web Flows: A Practical Guide" very > >> > helpful. Are you planning to keep it up to date with the latest > >> > changes to WebFlow (e.g. the changes to the action interface)? > >> > > >> > Thanks > >> > > >> > Steven > >> > > >> > > >> > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > >> > <erw...@er...> wrote: > >> >> The Manager and Meeting flow indeed have to put a SearchAlgorithm > >> >> instance > >> >> in flow scope, probably in an 'initFlow' action state or something > >> >> like > >> >> that, which could also take care of any type of flow data > >> >> initialisation, > >> >> e.g. pulling in reference data.. You then use an attribute mapper to > >> >> pass > >> >> the SearchAlgorithm to the subflow in the subflow state. > >> >> > >> >> Erwin Vervaet > >> >> erw...@er... > >> >> ----- Original Message ----- > >> >> From: "Steven Devijver" <ste...@gm...> > >> >> To: <spr...@li...> > >> >> Sent: Monday, March 28, 2005 4:59 PM > >> >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> >> question > >> >> > >> >> > Hi Erwin, > >> >> > > >> >> > > >> >> >> I would probably do this by making the search (or filter) algorithm > >> >> >> configurable for the Person flow. That way the calling parent flow > >> >> >> can > >> >> >> pass > >> >> >> in the algorithm to use. I find that a good way to think about a > >> >> >> flow > >> >> >> is > >> >> >> as > >> >> >> a method: it has input parameters and can return results. So your > >> >> >> person > >> >> >> flow would be something like this, when expressed as a method: > >> >> >> > >> >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) > >> >> >> > >> >> > Does this mean the Manager and Meeting flows have to put a > >> >> > SearchAlgorithm instance in the session (or the model?) before > >> >> > passing > >> >> > control to the Person subflow? Does this require an action-state > >> >> > before the flow-state in the Manager and Meeting flows? > >> >> > > >> >> > Thanks > >> >> > > >> >> > Steven > >> >> > > >> >> > > >> >> > ------------------------------------------------------- > >> >> > SF email is sponsored by - The IT Product Guide > >> >> > Read honest & candid reviews on hundreds of IT Products from real > >> >> > users. > >> >> > Discover which products truly live up to the hype. Start reading > >> >> > now. > >> >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> >> > _______________________________________________ > >> >> > Springframework-developer mailing list > >> >> > Spr...@li... > >> >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> >> > > >> >> > > >> >> > >> >> ------------------------------------------------------- > >> >> SF email is sponsored by - The IT Product Guide > >> >> Read honest & candid reviews on hundreds of IT Products from real > >> >> users. > >> >> Discover which products truly live up to the hype. Start reading now. > >> >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> >> _______________________________________________ > >> >> Springframework-developer mailing list > >> >> Spr...@li... > >> >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> >> > >> >> > >> > > >> > > >> > -- > >> > "If you want to be a different fish, you gotta jump out of the school." > >> > -- Captain Beefheart > >> > > >> > > >> > ------------------------------------------------------- > >> > SF email is sponsored by - The IT Product Guide > >> > Read honest & candid reviews on hundreds of IT Products from real > >> > users. > >> > Discover which products truly live up to the hype. Start reading now. > >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> > _______________________________________________ > >> > Springframework-developer mailing list > >> > Spr...@li... > >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > > >> > > >> > >> ------------------------------------------------------- > >> SF email is sponsored by - The IT Product Guide > >> Read honest & candid reviews on hundreds of IT Products from real users. > >> Discover which products truly live up to the hype. Start reading now. > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> _______________________________________________ > >> Springframework-developer mailing list > >> Spr...@li... > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> ------------------------------------------------------- > >> SF email is sponsored by - The IT Product Guide > >> Read honest & candid reviews on hundreds of IT Products from real users. > >> Discover which products truly live up to the hype. Start reading now. > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> _______________________________________________ > >> Springframework-developer mailing list > >> Spr...@li... > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> > > > > > > -- > > "If you want to be a different fish, you gotta jump out of the school." > > -- Captain Beefheart > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart |
|
From: Keith D. <ke...@in...> - 2005-03-29 14:55:57
|
Steven, That's possible now, right? The way I see it, just have your FlowAttributeMapper implementation implement BeanFactoryAware to get a callback to the factory for dependency lookup. Your implementation is likely already managed by Spring anyway, so nothing special there. Method injection would work here as well. I don't see the need for one-shot mappers, and quite like how the current implementation optimally wires the system in "for use" after configuration. If we needed a one-shot mapper, we could have a FlowAttributeMapper that was a proxy to a service lookup. Keith -----Original Message----- From: spr...@li... [mailto:spr...@li...] On Behalf Of Steven Devijver Sent: Tuesday, March 29, 2005 8:20 AM To: spr...@li... Subject: Re: [Springframework-developer] webflow: subflow behavior question > Mmm. So you're thinking about a custom mapper that (in the > 'createSubFlowInputAttributes' method) takes a list of persons (ids) from > the parent flow scope and instantiates an algorithm object, passing in those > ids. Once that is done it puts the algorithm object in the subflow scope. As > far as I can see the mapper would still be thread safe right -- everything > happens in a method call with local variables? This is indeed what I was thinking about. The mapper is the pivot point between two sub flows. Since the Person flow requires the algorithm class the mapper to me looks like the obvious point to create it. Since the mapper is a singleton and I would like to use IoC to configure which algorithm class the mapper should use the mapper needs to create the algorithm instance on every call to 'createSubFlowInputAttributes'. This would require the use of the 'getBean' method of the application context and a string property on the mapper class to set the bean name of the algorithm class. The algorithm class would be stateful thus needs to be configured as a prototype and its instances cannot outlive the scope of a request. > > All mappers (and actions) should be stateless and there should be little > need to make them statefull. Agreed. > > Anyway, thinking about this popped the following into my mind: currently the > flow keeps references to the mapper objects that are looked up at flow > configuration (build) time. The same is also true for actions and other > flows (i.e. for all flow services looked up via a FlowServiceLocator). > This is actually different from my original implementation where you could > control wheter or not an action or mapper was a singleton by using the > "singleton" property in the application context and the mapper or action was > looked up every time it was needed. This kind of prototype mapper or action > wasn't really that usefull since you could only hold state for a very short > time: one 'use' of the object in the flow (e.g. input & output mapping would > be 2 uses, so you could not share state by making the mapper statefull). > However, I'm thinking that if you could have a singleton action/mapper per > flow execution, you could really make the action or mapper statefull. Not > sure if that would be a good idea though....just brainstorming... > > Agreed that 'porting' the old article to the new system would be a good > idea. When we approach Spring web flow 1.0 final I'll take care of that. Great. > > Erwin Vervaet > erw...@er... > ----- Original Message ----- > From: "Steven Devijver" <ste...@gm...> > To: <spr...@li...> > Sent: Tuesday, March 29, 2005 8:48 AM > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Erwin, Keith, > > > > Thanks for your feedback. Regarding thread-safety, there would indeed > > be no concern if the model-mapper object would be instantiated on > > every execution of a flow-state. Is this the case? Otherwise, the > > model-mapper would have no way of knowing when to create an new > > algorithm instance, which would contain state. > > > > Regarding the old webflow article, I find it more concise than the > > current docs on Confluence, it provides an excellent overview of how > > to get started with WebFlow and I feel it should not be discarded. > > With a little bit of work this article could be kept up to date. > > > > Regarding this new article, it will probably be published in the next > > couple of weeks. I'm discussing the creation of a wizard across > > multiple pages and the reuse of a subflow, the disadvantages of > > classic MVC for these scenarios (I'm talking based on personal > > experience :) and the advantages offered by WebFlow. > > > > Steven > > > > On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> > > wrote: > >> As Erwin mentioned, there should be no concern of thread safety here. > >> Just > >> create a prototype instance that encapsulates the context you need an > >> pass > >> it to the spawned subflow. That'll be thread safe, as operations on flow > >> executions are synchronized per session per request. > >> > >> "PersonSearchAlgorithm" will would be a callback to some kind of > >> contextual, > >> query, yes? Yea, to me it makes sense to parameterize the sub flow > >> execution with an instance of an appropriate contextual implementation of > >> that interface (e.g "all persons where manager != <x>, or all persons not > >> already attending or excluded"), delegating down to the DAO layer to > >> actually perform the data access. I like the notion of this better than > >> passing in a snapshot array of persons to exclude. > >> > >> HTH! Just curious, what is the web flow article? When will it be > >> published? > >> > >> Keith > >> > >> Keith Donald > >> Interface21 - Spring Training, Consulting, and Support, "From the Source" > >> http://www.springframework.com > >> > >> -----Original Message----- > >> From: spr...@li... > >> [mailto:spr...@li...] On Behalf > >> Of > >> Erwin Vervaet > >> Sent: Monday, March 28, 2005 11:35 AM > >> To: spr...@li... > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> question > >> > >> Threading issues are limited in web flows since a flow execution is > >> basically single threaded: i.e. the flow execution entry methods (start() > >> and signalEvent()) are synchronized. (At least this is the behaviour in > >> the > >> new implementation in the sandbox.) > >> > >> Ofcourse you could also pass the list of ids to the Person subflow. In > >> that > >> case your "subflow signature" would be something like > >> > >> public Person PersonFlow(String action, Person[] personsToExclude) > >> > >> We're maintaining documentation related to the "new" Spring web flow > >> system > >> at > >> http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. > >> Keith Donald has been working on a new partical guide that you can find > >> there. > >> > >> Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 > >> and > >> then provide a migration guide to the new Spring web flow system. Ervacon > >> Spring web flow is still useful for those people that stick with Spring > >> 1.1.x, but if you have 1.2 or later it's probably better to go with the > >> new > >> system. > >> > >> Erwin > >> > >> Erwin Vervaet > >> erw...@er... > >> ----- Original Message ----- > >> From: "Steven Devijver" <ste...@gm...> > >> To: <spr...@li...> > >> Sent: Monday, March 28, 2005 5:51 PM > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> question > >> > >> > Hi Erwin, > >> > > >> > Although this is just a silly example to highlight my question passing > >> > behavior through the model does seem a bit awkward to me. Especially, > >> > the behavior class would also contain state (unless the state is > >> > passed separately in the model but then the Person flow would need to > >> > pass the state to the behavior). This would make the design not > >> > thread-safe. > >> > > >> > In this scenario I would prefer to pass a list of ID's of Persons that > >> > cannot be shown in the Person flow and implement the behavior once. > >> > I'm looking into this because I'm working on an article on webflow. > >> > > >> > btw, I found you article "Spring Web Flows: A Practical Guide" very > >> > helpful. Are you planning to keep it up to date with the latest > >> > changes to WebFlow (e.g. the changes to the action interface)? > >> > > >> > Thanks > >> > > >> > Steven > >> > > >> > > >> > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > >> > <erw...@er...> wrote: > >> >> The Manager and Meeting flow indeed have to put a SearchAlgorithm > >> >> instance > >> >> in flow scope, probably in an 'initFlow' action state or something > >> >> like > >> >> that, which could also take care of any type of flow data > >> >> initialisation, > >> >> e.g. pulling in reference data.. You then use an attribute mapper to > >> >> pass > >> >> the SearchAlgorithm to the subflow in the subflow state. > >> >> > >> >> Erwin Vervaet > >> >> erw...@er... > >> >> ----- Original Message ----- > >> >> From: "Steven Devijver" <ste...@gm...> > >> >> To: <spr...@li...> > >> >> Sent: Monday, March 28, 2005 4:59 PM > >> >> Subject: Re: [Springframework-developer] webflow: subflow behavior > >> >> question > >> >> > >> >> > Hi Erwin, > >> >> > > >> >> > > >> >> >> I would probably do this by making the search (or filter) algorithm > >> >> >> configurable for the Person flow. That way the calling parent flow > >> >> >> can > >> >> >> pass > >> >> >> in the algorithm to use. I find that a good way to think about a > >> >> >> flow > >> >> >> is > >> >> >> as > >> >> >> a method: it has input parameters and can return results. So your > >> >> >> person > >> >> >> flow would be something like this, when expressed as a method: > >> >> >> > >> >> >> public Person PersonFlow(String action, SearchAlgorithm algorithm) > >> >> >> > >> >> > Does this mean the Manager and Meeting flows have to put a > >> >> > SearchAlgorithm instance in the session (or the model?) before > >> >> > passing > >> >> > control to the Person subflow? Does this require an action-state > >> >> > before the flow-state in the Manager and Meeting flows? > >> >> > > >> >> > Thanks > >> >> > > >> >> > Steven > >> >> > > >> >> > > >> >> > ------------------------------------------------------- > >> >> > SF email is sponsored by - The IT Product Guide > >> >> > Read honest & candid reviews on hundreds of IT Products from real > >> >> > users. > >> >> > Discover which products truly live up to the hype. Start reading > >> >> > now. > >> >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> >> > _______________________________________________ > >> >> > Springframework-developer mailing list > >> >> > Spr...@li... > >> >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> >> > > >> >> > > >> >> > >> >> ------------------------------------------------------- > >> >> SF email is sponsored by - The IT Product Guide > >> >> Read honest & candid reviews on hundreds of IT Products from real > >> >> users. > >> >> Discover which products truly live up to the hype. Start reading now. > >> >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> >> _______________________________________________ > >> >> Springframework-developer mailing list > >> >> Spr...@li... > >> >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> >> > >> >> > >> > > >> > > >> > -- > >> > "If you want to be a different fish, you gotta jump out of the school." > >> > -- Captain Beefheart > >> > > >> > > >> > ------------------------------------------------------- > >> > SF email is sponsored by - The IT Product Guide > >> > Read honest & candid reviews on hundreds of IT Products from real > >> > users. > >> > Discover which products truly live up to the hype. Start reading now. > >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> > _______________________________________________ > >> > Springframework-developer mailing list > >> > Spr...@li... > >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > > >> > > >> > >> ------------------------------------------------------- > >> SF email is sponsored by - The IT Product Guide > >> Read honest & candid reviews on hundreds of IT Products from real users. > >> Discover which products truly live up to the hype. Start reading now. > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> _______________________________________________ > >> Springframework-developer mailing list > >> Spr...@li... > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> ------------------------------------------------------- > >> SF email is sponsored by - The IT Product Guide > >> Read honest & candid reviews on hundreds of IT Products from real users. > >> Discover which products truly live up to the hype. Start reading now. > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > >> _______________________________________________ > >> Springframework-developer mailing list > >> Spr...@li... > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > >> > >> > > > > > > -- > > "If you want to be a different fish, you gotta jump out of the school." > > -- Captain Beefheart > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Steven D. <ste...@gm...> - 2005-03-29 15:31:02
|
Keith, > > That's possible now, right? That's right. > > The way I see it, just have your FlowAttributeMapper implementation > implement BeanFactoryAware to get a callback to the factory for dependency > lookup. Your implementation is likely already managed by Spring anyway, so > nothing special there. > > Method injection would work here as well. An alternative approach would be to put an action-state in front of the flow-state that creates algorithm class instances and puts them in the flow context. Separating mapping and state management is probably a better approach. > > I don't see the need for one-shot mappers, and quite like how the current > implementation optimally wires the system in "for use" after configuration. > If we needed a one-shot mapper, we could have a FlowAttributeMapper that was > a proxy to a service lookup. > > Keith > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] On Behalf Of > Steven Devijver > Sent: Tuesday, March 29, 2005 8:20 AM > To: spr...@li... > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Mmm. So you're thinking about a custom mapper that (in the > > 'createSubFlowInputAttributes' method) takes a list of persons (ids) from > > the parent flow scope and instantiates an algorithm object, passing in > those > > ids. Once that is done it puts the algorithm object in the subflow scope. > As > > far as I can see the mapper would still be thread safe right -- everything > > happens in a method call with local variables? > > This is indeed what I was thinking about. The mapper is the pivot > point between two sub flows. Since the Person flow requires the > algorithm class the mapper to me looks like the obvious point to > create it. > > Since the mapper is a singleton and I would like to use IoC to > configure which algorithm class the mapper should use the mapper needs > to create the algorithm instance on every call to > 'createSubFlowInputAttributes'. This would require the use of the > 'getBean' method of the application context and a string property on > the mapper class to set the bean name of the algorithm class. The > algorithm class would be stateful thus needs to be configured as a > prototype and its instances cannot outlive the scope of a request. > > > > > All mappers (and actions) should be stateless and there should be little > > need to make them statefull. > > Agreed. > > > > > Anyway, thinking about this popped the following into my mind: currently > the > > flow keeps references to the mapper objects that are looked up at flow > > configuration (build) time. The same is also true for actions and other > > flows (i.e. for all flow services looked up via a FlowServiceLocator). > > This is actually different from my original implementation where you could > > control wheter or not an action or mapper was a singleton by using the > > "singleton" property in the application context and the mapper or action > was > > looked up every time it was needed. This kind of prototype mapper or > action > > wasn't really that usefull since you could only hold state for a very > short > > time: one 'use' of the object in the flow (e.g. input & output mapping > would > > be 2 uses, so you could not share state by making the mapper statefull). > > However, I'm thinking that if you could have a singleton action/mapper per > > flow execution, you could really make the action or mapper statefull. Not > > sure if that would be a good idea though....just brainstorming... > > > > Agreed that 'porting' the old article to the new system would be a good > > idea. When we approach Spring web flow 1.0 final I'll take care of that. > > Great. > > > > > Erwin Vervaet > > erw...@er... > > ----- Original Message ----- > > From: "Steven Devijver" <ste...@gm...> > > To: <spr...@li...> > > Sent: Tuesday, March 29, 2005 8:48 AM > > Subject: Re: [Springframework-developer] webflow: subflow behavior > question > > > > > Erwin, Keith, > > > > > > Thanks for your feedback. Regarding thread-safety, there would indeed > > > be no concern if the model-mapper object would be instantiated on > > > every execution of a flow-state. Is this the case? Otherwise, the > > > model-mapper would have no way of knowing when to create an new > > > algorithm instance, which would contain state. > > > > > > Regarding the old webflow article, I find it more concise than the > > > current docs on Confluence, it provides an excellent overview of how > > > to get started with WebFlow and I feel it should not be discarded. > > > With a little bit of work this article could be kept up to date. > > > > > > Regarding this new article, it will probably be published in the next > > > couple of weeks. I'm discussing the creation of a wizard across > > > multiple pages and the reuse of a subflow, the disadvantages of > > > classic MVC for these scenarios (I'm talking based on personal > > > experience :) and the advantages offered by WebFlow. > > > > > > Steven > > > > > > On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> > > > wrote: > > >> As Erwin mentioned, there should be no concern of thread safety here. > > >> Just > > >> create a prototype instance that encapsulates the context you need an > > >> pass > > >> it to the spawned subflow. That'll be thread safe, as operations on > flow > > >> executions are synchronized per session per request. > > >> > > >> "PersonSearchAlgorithm" will would be a callback to some kind of > > >> contextual, > > >> query, yes? Yea, to me it makes sense to parameterize the sub flow > > >> execution with an instance of an appropriate contextual implementation > of > > >> that interface (e.g "all persons where manager != <x>, or all persons > not > > >> already attending or excluded"), delegating down to the DAO layer to > > >> actually perform the data access. I like the notion of this better > than > > >> passing in a snapshot array of persons to exclude. > > >> > > >> HTH! Just curious, what is the web flow article? When will it be > > >> published? > > >> > > >> Keith > > >> > > >> Keith Donald > > >> Interface21 - Spring Training, Consulting, and Support, "From the > Source" > > >> http://www.springframework.com > > >> > > >> -----Original Message----- > > >> From: spr...@li... > > >> [mailto:spr...@li...] On > Behalf > > >> Of > > >> Erwin Vervaet > > >> Sent: Monday, March 28, 2005 11:35 AM > > >> To: spr...@li... > > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> question > > >> > > >> Threading issues are limited in web flows since a flow execution is > > >> basically single threaded: i.e. the flow execution entry methods > (start() > > >> and signalEvent()) are synchronized. (At least this is the behaviour in > > >> the > > >> new implementation in the sandbox.) > > >> > > >> Ofcourse you could also pass the list of ids to the Person subflow. In > > >> that > > >> case your "subflow signature" would be something like > > >> > > >> public Person PersonFlow(String action, Person[] personsToExclude) > > >> > > >> We're maintaining documentation related to the "new" Spring web flow > > >> system > > >> at > > >> http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. > > >> Keith Donald has been working on a new partical guide that you can find > > >> there. > > >> > > >> Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 > > >> and > > >> then provide a migration guide to the new Spring web flow system. > Ervacon > > >> Spring web flow is still useful for those people that stick with Spring > > >> 1.1.x, but if you have 1.2 or later it's probably better to go with the > > >> new > > >> system. > > >> > > >> Erwin > > >> > > >> Erwin Vervaet > > >> erw...@er... > > >> ----- Original Message ----- > > >> From: "Steven Devijver" <ste...@gm...> > > >> To: <spr...@li...> > > >> Sent: Monday, March 28, 2005 5:51 PM > > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> question > > >> > > >> > Hi Erwin, > > >> > > > >> > Although this is just a silly example to highlight my question > passing > > >> > behavior through the model does seem a bit awkward to me. Especially, > > >> > the behavior class would also contain state (unless the state is > > >> > passed separately in the model but then the Person flow would need to > > >> > pass the state to the behavior). This would make the design not > > >> > thread-safe. > > >> > > > >> > In this scenario I would prefer to pass a list of ID's of Persons > that > > >> > cannot be shown in the Person flow and implement the behavior once. > > >> > I'm looking into this because I'm working on an article on webflow. > > >> > > > >> > btw, I found you article "Spring Web Flows: A Practical Guide" very > > >> > helpful. Are you planning to keep it up to date with the latest > > >> > changes to WebFlow (e.g. the changes to the action interface)? > > >> > > > >> > Thanks > > >> > > > >> > Steven > > >> > > > >> > > > >> > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > > >> > <erw...@er...> wrote: > > >> >> The Manager and Meeting flow indeed have to put a SearchAlgorithm > > >> >> instance > > >> >> in flow scope, probably in an 'initFlow' action state or something > > >> >> like > > >> >> that, which could also take care of any type of flow data > > >> >> initialisation, > > >> >> e.g. pulling in reference data.. You then use an attribute mapper to > > >> >> pass > > >> >> the SearchAlgorithm to the subflow in the subflow state. > > >> >> > > >> >> Erwin Vervaet > > >> >> erw...@er... > > >> >> ----- Original Message ----- > > >> >> From: "Steven Devijver" <ste...@gm...> > > >> >> To: <spr...@li...> > > >> >> Sent: Monday, March 28, 2005 4:59 PM > > >> >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> >> question > > >> >> > > >> >> > Hi Erwin, > > >> >> > > > >> >> > > > >> >> >> I would probably do this by making the search (or filter) > algorithm > > >> >> >> configurable for the Person flow. That way the calling parent > flow > > >> >> >> can > > >> >> >> pass > > >> >> >> in the algorithm to use. I find that a good way to think about a > > >> >> >> flow > > >> >> >> is > > >> >> >> as > > >> >> >> a method: it has input parameters and can return results. So your > > >> >> >> person > > >> >> >> flow would be something like this, when expressed as a method: > > >> >> >> > > >> >> >> public Person PersonFlow(String action, SearchAlgorithm > algorithm) > > >> >> >> > > >> >> > Does this mean the Manager and Meeting flows have to put a > > >> >> > SearchAlgorithm instance in the session (or the model?) before > > >> >> > passing > > >> >> > control to the Person subflow? Does this require an action-state > > >> >> > before the flow-state in the Manager and Meeting flows? > > >> >> > > > >> >> > Thanks > > >> >> > > > >> >> > Steven > > >> >> > > > >> >> > > > >> >> > ------------------------------------------------------- > > >> >> > SF email is sponsored by - The IT Product Guide > > >> >> > Read honest & candid reviews on hundreds of IT Products from real > > >> >> > users. > > >> >> > Discover which products truly live up to the hype. Start reading > > >> >> > now. > > >> >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> >> > _______________________________________________ > > >> >> > Springframework-developer mailing list > > >> >> > Spr...@li... > > >> >> > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> >> > > > >> >> > > > >> >> > > >> >> ------------------------------------------------------- > > >> >> SF email is sponsored by - The IT Product Guide > > >> >> Read honest & candid reviews on hundreds of IT Products from real > > >> >> users. > > >> >> Discover which products truly live up to the hype. Start reading > now. > > >> >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> >> _______________________________________________ > > >> >> Springframework-developer mailing list > > >> >> Spr...@li... > > >> >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> >> > > >> >> > > >> > > > >> > > > >> > -- > > >> > "If you want to be a different fish, you gotta jump out of the > school." > > >> > -- Captain Beefheart > > >> > > > >> > > > >> > ------------------------------------------------------- > > >> > SF email is sponsored by - The IT Product Guide > > >> > Read honest & candid reviews on hundreds of IT Products from real > > >> > users. > > >> > Discover which products truly live up to the hype. Start reading now. > > >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> > _______________________________________________ > > >> > Springframework-developer mailing list > > >> > Spr...@li... > > >> > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > > >> > > > >> > > >> ------------------------------------------------------- > > >> SF email is sponsored by - The IT Product Guide > > >> Read honest & candid reviews on hundreds of IT Products from real > users. > > >> Discover which products truly live up to the hype. Start reading now. > > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> _______________________________________________ > > >> Springframework-developer mailing list > > >> Spr...@li... > > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > >> ------------------------------------------------------- > > >> SF email is sponsored by - The IT Product Guide > > >> Read honest & candid reviews on hundreds of IT Products from real > users. > > >> Discover which products truly live up to the hype. Start reading now. > > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> _______________________________________________ > > >> Springframework-developer mailing list > > >> Spr...@li... > > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > >> > > > > > > > > > -- > > > "If you want to be a different fish, you gotta jump out of the school." > > > -- Captain Beefheart > > > > > > > > > ------------------------------------------------------- > > > SF email is sponsored by - The IT Product Guide > > > Read honest & candid reviews on hundreds of IT Products from real users. > > > Discover which products truly live up to the hype. Start reading now. > > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart |
|
From: Keith D. <ke...@in...> - 2005-03-29 18:40:13
|
Steven, We should likely take this off-line, but just some suggestions for neat things you could cover in your upcoming web flow article: - Demonstrate a good case for 'transitional criteria' beyond that of a signaled event within a state. Show how the path through the flow can be effected based on contextual information, for example, the value of an object in request or flow scope. - Demonstrate the use of the Multi-Action to centralize related flow action logic in one place. - Examples showing the Java based flow builder as well as the Xml flow builder. - A flow execution listener implementation, for auditing or otherwise annotating an executing client instance of a flow at specific points within its lifecycle. - Tips and gotchas related to browser navigation button use. Sounds like you've got some most of the other key features covered, like sub flows, for example. Keith -----Original Message----- From: spr...@li... [mailto:spr...@li...] On Behalf Of Steven Devijver Sent: Tuesday, March 29, 2005 10:31 AM To: spr...@li... Subject: Re: [Springframework-developer] webflow: subflow behavior question Keith, > > That's possible now, right? That's right. > > The way I see it, just have your FlowAttributeMapper implementation > implement BeanFactoryAware to get a callback to the factory for dependency > lookup. Your implementation is likely already managed by Spring anyway, so > nothing special there. > > Method injection would work here as well. An alternative approach would be to put an action-state in front of the flow-state that creates algorithm class instances and puts them in the flow context. Separating mapping and state management is probably a better approach. > > I don't see the need for one-shot mappers, and quite like how the current > implementation optimally wires the system in "for use" after configuration. > If we needed a one-shot mapper, we could have a FlowAttributeMapper that was > a proxy to a service lookup. > > Keith > > -----Original Message----- > From: spr...@li... > [mailto:spr...@li...] On Behalf Of > Steven Devijver > Sent: Tuesday, March 29, 2005 8:20 AM > To: spr...@li... > Subject: Re: [Springframework-developer] webflow: subflow behavior question > > > Mmm. So you're thinking about a custom mapper that (in the > > 'createSubFlowInputAttributes' method) takes a list of persons (ids) from > > the parent flow scope and instantiates an algorithm object, passing in > those > > ids. Once that is done it puts the algorithm object in the subflow scope. > As > > far as I can see the mapper would still be thread safe right -- everything > > happens in a method call with local variables? > > This is indeed what I was thinking about. The mapper is the pivot > point between two sub flows. Since the Person flow requires the > algorithm class the mapper to me looks like the obvious point to > create it. > > Since the mapper is a singleton and I would like to use IoC to > configure which algorithm class the mapper should use the mapper needs > to create the algorithm instance on every call to > 'createSubFlowInputAttributes'. This would require the use of the > 'getBean' method of the application context and a string property on > the mapper class to set the bean name of the algorithm class. The > algorithm class would be stateful thus needs to be configured as a > prototype and its instances cannot outlive the scope of a request. > > > > > All mappers (and actions) should be stateless and there should be little > > need to make them statefull. > > Agreed. > > > > > Anyway, thinking about this popped the following into my mind: currently > the > > flow keeps references to the mapper objects that are looked up at flow > > configuration (build) time. The same is also true for actions and other > > flows (i.e. for all flow services looked up via a FlowServiceLocator). > > This is actually different from my original implementation where you could > > control wheter or not an action or mapper was a singleton by using the > > "singleton" property in the application context and the mapper or action > was > > looked up every time it was needed. This kind of prototype mapper or > action > > wasn't really that usefull since you could only hold state for a very > short > > time: one 'use' of the object in the flow (e.g. input & output mapping > would > > be 2 uses, so you could not share state by making the mapper statefull). > > However, I'm thinking that if you could have a singleton action/mapper per > > flow execution, you could really make the action or mapper statefull. Not > > sure if that would be a good idea though....just brainstorming... > > > > Agreed that 'porting' the old article to the new system would be a good > > idea. When we approach Spring web flow 1.0 final I'll take care of that. > > Great. > > > > > Erwin Vervaet > > erw...@er... > > ----- Original Message ----- > > From: "Steven Devijver" <ste...@gm...> > > To: <spr...@li...> > > Sent: Tuesday, March 29, 2005 8:48 AM > > Subject: Re: [Springframework-developer] webflow: subflow behavior > question > > > > > Erwin, Keith, > > > > > > Thanks for your feedback. Regarding thread-safety, there would indeed > > > be no concern if the model-mapper object would be instantiated on > > > every execution of a flow-state. Is this the case? Otherwise, the > > > model-mapper would have no way of knowing when to create an new > > > algorithm instance, which would contain state. > > > > > > Regarding the old webflow article, I find it more concise than the > > > current docs on Confluence, it provides an excellent overview of how > > > to get started with WebFlow and I feel it should not be discarded. > > > With a little bit of work this article could be kept up to date. > > > > > > Regarding this new article, it will probably be published in the next > > > couple of weeks. I'm discussing the creation of a wizard across > > > multiple pages and the reuse of a subflow, the disadvantages of > > > classic MVC for these scenarios (I'm talking based on personal > > > experience :) and the advantages offered by WebFlow. > > > > > > Steven > > > > > > On Mon, 28 Mar 2005 12:02:41 -0500, Keith Donald <ke...@in...> > > > wrote: > > >> As Erwin mentioned, there should be no concern of thread safety here. > > >> Just > > >> create a prototype instance that encapsulates the context you need an > > >> pass > > >> it to the spawned subflow. That'll be thread safe, as operations on > flow > > >> executions are synchronized per session per request. > > >> > > >> "PersonSearchAlgorithm" will would be a callback to some kind of > > >> contextual, > > >> query, yes? Yea, to me it makes sense to parameterize the sub flow > > >> execution with an instance of an appropriate contextual implementation > of > > >> that interface (e.g "all persons where manager != <x>, or all persons > not > > >> already attending or excluded"), delegating down to the DAO layer to > > >> actually perform the data access. I like the notion of this better > than > > >> passing in a snapshot array of persons to exclude. > > >> > > >> HTH! Just curious, what is the web flow article? When will it be > > >> published? > > >> > > >> Keith > > >> > > >> Keith Donald > > >> Interface21 - Spring Training, Consulting, and Support, "From the > Source" > > >> http://www.springframework.com > > >> > > >> -----Original Message----- > > >> From: spr...@li... > > >> [mailto:spr...@li...] On > Behalf > > >> Of > > >> Erwin Vervaet > > >> Sent: Monday, March 28, 2005 11:35 AM > > >> To: spr...@li... > > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> question > > >> > > >> Threading issues are limited in web flows since a flow execution is > > >> basically single threaded: i.e. the flow execution entry methods > (start() > > >> and signalEvent()) are synchronized. (At least this is the behaviour in > > >> the > > >> new implementation in the sandbox.) > > >> > > >> Ofcourse you could also pass the list of ids to the Person subflow. In > > >> that > > >> case your "subflow signature" would be something like > > >> > > >> public Person PersonFlow(String action, Person[] personsToExclude) > > >> > > >> We're maintaining documentation related to the "new" Spring web flow > > >> system > > >> at > > >> http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home. > > >> Keith Donald has been working on a new partical guide that you can find > > >> there. > > >> > > >> Regarding the "old" Ervacon Spring web flow: I will let it go to 1.0.0 > > >> and > > >> then provide a migration guide to the new Spring web flow system. > Ervacon > > >> Spring web flow is still useful for those people that stick with Spring > > >> 1.1.x, but if you have 1.2 or later it's probably better to go with the > > >> new > > >> system. > > >> > > >> Erwin > > >> > > >> Erwin Vervaet > > >> erw...@er... > > >> ----- Original Message ----- > > >> From: "Steven Devijver" <ste...@gm...> > > >> To: <spr...@li...> > > >> Sent: Monday, March 28, 2005 5:51 PM > > >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> question > > >> > > >> > Hi Erwin, > > >> > > > >> > Although this is just a silly example to highlight my question > passing > > >> > behavior through the model does seem a bit awkward to me. Especially, > > >> > the behavior class would also contain state (unless the state is > > >> > passed separately in the model but then the Person flow would need to > > >> > pass the state to the behavior). This would make the design not > > >> > thread-safe. > > >> > > > >> > In this scenario I would prefer to pass a list of ID's of Persons > that > > >> > cannot be shown in the Person flow and implement the behavior once. > > >> > I'm looking into this because I'm working on an article on webflow. > > >> > > > >> > btw, I found you article "Spring Web Flows: A Practical Guide" very > > >> > helpful. Are you planning to keep it up to date with the latest > > >> > changes to WebFlow (e.g. the changes to the action interface)? > > >> > > > >> > Thanks > > >> > > > >> > Steven > > >> > > > >> > > > >> > On Mon, 28 Mar 2005 17:11:32 +0200, Erwin Vervaet > > >> > <erw...@er...> wrote: > > >> >> The Manager and Meeting flow indeed have to put a SearchAlgorithm > > >> >> instance > > >> >> in flow scope, probably in an 'initFlow' action state or something > > >> >> like > > >> >> that, which could also take care of any type of flow data > > >> >> initialisation, > > >> >> e.g. pulling in reference data.. You then use an attribute mapper to > > >> >> pass > > >> >> the SearchAlgorithm to the subflow in the subflow state. > > >> >> > > >> >> Erwin Vervaet > > >> >> erw...@er... > > >> >> ----- Original Message ----- > > >> >> From: "Steven Devijver" <ste...@gm...> > > >> >> To: <spr...@li...> > > >> >> Sent: Monday, March 28, 2005 4:59 PM > > >> >> Subject: Re: [Springframework-developer] webflow: subflow behavior > > >> >> question > > >> >> > > >> >> > Hi Erwin, > > >> >> > > > >> >> > > > >> >> >> I would probably do this by making the search (or filter) > algorithm > > >> >> >> configurable for the Person flow. That way the calling parent > flow > > >> >> >> can > > >> >> >> pass > > >> >> >> in the algorithm to use. I find that a good way to think about a > > >> >> >> flow > > >> >> >> is > > >> >> >> as > > >> >> >> a method: it has input parameters and can return results. So your > > >> >> >> person > > >> >> >> flow would be something like this, when expressed as a method: > > >> >> >> > > >> >> >> public Person PersonFlow(String action, SearchAlgorithm > algorithm) > > >> >> >> > > >> >> > Does this mean the Manager and Meeting flows have to put a > > >> >> > SearchAlgorithm instance in the session (or the model?) before > > >> >> > passing > > >> >> > control to the Person subflow? Does this require an action-state > > >> >> > before the flow-state in the Manager and Meeting flows? > > >> >> > > > >> >> > Thanks > > >> >> > > > >> >> > Steven > > >> >> > > > >> >> > > > >> >> > ------------------------------------------------------- > > >> >> > SF email is sponsored by - The IT Product Guide > > >> >> > Read honest & candid reviews on hundreds of IT Products from real > > >> >> > users. > > >> >> > Discover which products truly live up to the hype. Start reading > > >> >> > now. > > >> >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> >> > _______________________________________________ > > >> >> > Springframework-developer mailing list > > >> >> > Spr...@li... > > >> >> > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> >> > > > >> >> > > > >> >> > > >> >> ------------------------------------------------------- > > >> >> SF email is sponsored by - The IT Product Guide > > >> >> Read honest & candid reviews on hundreds of IT Products from real > > >> >> users. > > >> >> Discover which products truly live up to the hype. Start reading > now. > > >> >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> >> _______________________________________________ > > >> >> Springframework-developer mailing list > > >> >> Spr...@li... > > >> >> > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> >> > > >> >> > > >> > > > >> > > > >> > -- > > >> > "If you want to be a different fish, you gotta jump out of the > school." > > >> > -- Captain Beefheart > > >> > > > >> > > > >> > ------------------------------------------------------- > > >> > SF email is sponsored by - The IT Product Guide > > >> > Read honest & candid reviews on hundreds of IT Products from real > > >> > users. > > >> > Discover which products truly live up to the hype. Start reading now. > > >> > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> > _______________________________________________ > > >> > Springframework-developer mailing list > > >> > Spr...@li... > > >> > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > > >> > > > >> > > >> ------------------------------------------------------- > > >> SF email is sponsored by - The IT Product Guide > > >> Read honest & candid reviews on hundreds of IT Products from real > users. > > >> Discover which products truly live up to the hype. Start reading now. > > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> _______________________________________________ > > >> Springframework-developer mailing list > > >> Spr...@li... > > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > >> ------------------------------------------------------- > > >> SF email is sponsored by - The IT Product Guide > > >> Read honest & candid reviews on hundreds of IT Products from real > users. > > >> Discover which products truly live up to the hype. Start reading now. > > >> http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > >> _______________________________________________ > > >> Springframework-developer mailing list > > >> Spr...@li... > > >> https://lists.sourceforge.net/lists/listinfo/springframework-developer > > >> > > >> > > > > > > > > > -- > > > "If you want to be a different fish, you gotta jump out of the school." > > > -- Captain Beefheart > > > > > > > > > ------------------------------------------------------- > > > SF email is sponsored by - The IT Product Guide > > > Read honest & candid reviews on hundreds of IT Products from real users. > > > Discover which products truly live up to the hype. Start reading now. > > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > > _______________________________________________ > > > Springframework-developer mailing list > > > Spr...@li... > > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > > > > > ------------------------------------------------------- > > SF email is sponsored by - The IT Product Guide > > Read honest & candid reviews on hundreds of IT Products from real users. > > Discover which products truly live up to the hype. Start reading now. > > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > > _______________________________________________ > > Springframework-developer mailing list > > Spr...@li... > > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > > -- > "If you want to be a different fish, you gotta jump out of the school." > -- Captain Beefheart > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > ------------------------------------------------------- > SF email is sponsored by - The IT Product Guide > Read honest & candid reviews on hundreds of IT Products from real users. > Discover which products truly live up to the hype. Start reading now. > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click > _______________________________________________ > Springframework-developer mailing list > Spr...@li... > https://lists.sourceforge.net/lists/listinfo/springframework-developer > > -- "If you want to be a different fish, you gotta jump out of the school." -- Captain Beefheart ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Springframework-developer mailing list Spr...@li... https://lists.sourceforge.net/lists/listinfo/springframework-developer |
|
From: Erwin V. <erw...@er...> - 2005-03-29 20:42:48
|
>> Mmm. So you're thinking about a custom mapper that (in the >> 'createSubFlowInputAttributes' method) takes a list of persons (ids) from >> the parent flow scope and instantiates an algorithm object, passing in >> those >> ids. Once that is done it puts the algorithm object in the subflow scope. >> As >> far as I can see the mapper would still be thread safe right -- >> everything >> happens in a method call with local variables? > > This is indeed what I was thinking about. The mapper is the pivot > point between two sub flows. Since the Person flow requires the > algorithm class the mapper to me looks like the obvious point to > create it. Yes. > > Since the mapper is a singleton and I would like to use IoC to > configure which algorithm class the mapper should use the mapper needs > to create the algorithm instance on every call to > 'createSubFlowInputAttributes'. This would require the use of the > 'getBean' method of the application context and a string property on > the mapper class to set the bean name of the algorithm class. The > algorithm class would be stateful thus needs to be configured as a > prototype and its instances cannot outlive the scope of a request. That would work. Or you could just configure the algorithm class and instantiate it yourself in the mapper. I think I would do it like that. Seems simpler. >> >> All mappers (and actions) should be stateless and there should be little >> need to make them statefull. > > Agreed. > |