cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Portier <...@outerthought.org>
Subject Re: Are nested flowscripts possible?
Date Fri, 28 Nov 2003 08:32:14 GMT


Steinar Jonsson wrote:

> On Thursday 27 November 2003 23:53, Marc Portier wrote:
> 
>>Steinar Jonsson wrote:
>>
>>>A flowscript does a sendPageAndWait( request ), and the
>>>request happens to start a second flowscript.
>>>
>>>When that second flowscript has completed its work,
>>>how does it get back to where the first one left off?
>>>
>>>I can't see how to get hold of that continuation id.
>>>Am I just being blind, or is this a bad idea altogether?
>>
>>yep, it's not how you use this stuff
>>
>>
>>what I think you try to do is this:
>>
>>uri-1 --> calls function1
>>function1() {
>>  // do-stuff
>>  sendPageAndWait(nextPage-uri);
>>}
>>
>>on the produced page there is NOT a link with the continuation, but
>>rather a link to some uri-2 -->  calls function2
>>
>>function2() {
>>   //do other stuff.
>>
>>}
>>
>>
>>this creates completely separate trees of continuations (meaning they
>>are not nested at all)
>>
>>
>>
>>rather one would go for this:
>>
>>uri-1 --> calls function1
>>function1() {
>>   // do stuff
>>
>>   function2(); //nested call to function 2
>>
>>   // when function2 is finished, we continue here
>>   // do more...
>>}
>>
>>function2() {
>>   sendPageAndWait(nextPage-uri);
>>   // do whatever with the return
>>
>>}
>>
>>and make sure that the return page _is_ just producing the link back to
>>the generated continuation.
>>
>>you can still have some uri-2 that starts off with function2 immediately
>>(not nested inside function1 I mean)
>>
> 
> 
> Good analysis and explanation. Thanks.
> 
> Your suggested pattern can certainly provide the functionality required, 
> but I also had this idea about a way of partitioning my application, 
> sort of a really poor man "real blocks".
> 
> Let me try to explain: 
> Function 1 is a framework that serves status and navigation pages. From 
> config or a workflow component or whatever, it gets a list of uri's of the 
> "application parts" it can start. 
> 

can? it functions like a menu?
or rather 'must' since it lists the sequence of parts in the flow?

in any case:
you could consider building a JavaScript object that has a Map of 
registered available functions:

//start js-snippet

registerOfAppParts["part2"]=function2;
//and more

//then later you could detect dynamically the part to execute
var partName = "part2";
registerOfAppParts[partName](); //this executes function2!!

// those registered functions can receive arguments but then
// need all to provide the same signature of course (think interface)

// end js-snippet


> Each "application part" is packaged in its own subdirectory, and parts can 
> be added or removed just by adding or removing subdirectories in sync 
> with the config / workflow setup. 
> 

I can't say I completely understand
but since the sync-ing needs to be done, you could also just update the 
list of methods to call in stead of the list of uri's ?

> The framework script knows how to start a part using its uri. A part knows 
> how to return to the framework script by using the continuation id. 
> (There's more to it of course. Parameters, status, skins etc.)
> 

yeah, this would call for some Context-object as an argument to the 
various functions... you might even want to take two arguments for 
WorkFlowContext and WorkFlowReturn depending on what it all needs to do.
(the latte is a bit modeled after the servlet.service(request, response))

in any case you would just 'return' to the main branch by returning the 
function (as explained previously)

> This scheme actually seems workable in those cases where the part being 
> called has access to the continuation id, like a JXTemplateGenerator. 
> I'd be surprised if it wasn't technically possible to pass continuation id 
> through sendPageAndWait() to a flowscript as well.
> 

dunno, I guess, but it sounds like serious hacking and thus dependecy on 
how continuations are identified... also sounds a bit like potential 
subversion of control

> I would be happy to have comments on this, even explanations of why this 
> can't or shouldn't be done. 
> 

I think it can work, but you might be needing to turn around your 
thinking to get it more smoothly?

> Do not assume that I know what I'm talking about, because I don't. This 
> is just part of my struggle to understand how to use cocoon efficiently. 
> 

that's the spot we are all in ;-)
you seem to have an interesting use case, talking about those generally 
helps us all in the end

> Many thanks to you Marc and all you others that take the time to answer 
> questions here. I've been lurking for some time, and have learned a lot.
> 

quite welcome, looking forward to more activity from your side
(no need to be shy)

regards,
-marc=
-- 
Marc Portier                            http://outerthought.org/
Outerthought - Open Source, Java & XML Competence Support Center
Read my weblog at              http://radio.weblogs.com/0116284/
mpo@outerthought.org                              mpo@apache.org


Mime
View raw message