cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrzej Jan Taramina" <andr...@chaeron.com>
Subject Re: [vote] forbidding flowscripts with no sendpage redirects (was Re: Saving pipeline output to a temp file...)
Date Wed, 12 Nov 2003 23:20:34 GMT
Ugo suggested:

>   <map:match pattern="*/profile/edit">
>     <map:call function="dumpData"/>
>   </map:match>
> 
>   <map:match pattern="view">
>     <map:generate src="cocoon://generate"/>
>     <map:transform src="homePage.xsl"/>
>     <map:serialize/>
>   </map:match>
> 
> function dumpData() {
>    dumpUserData();
>    dumpOrderData();
>    dumpNewsItems();
>    cocoon.sendPage("view");
> }
> 

The main problem I have with this approach is that without looking at the 
script code, there is no easy way of telling that the first match will end up 
calling the second one and so the flow of the application becomes more 
opaque...and thus harder to understand and maintain.

I like Tim's approach much better....where everything is in one place and the 
high level flow of control is quite clear and transparent.

also glad to see that I am not the only one that has used this paradigm.  
<grins>

An action that will call a flowscript for you without the sendPage 
restriction would seem to be a reasonable alternative, in which case Tony's 
code then looks like:

<map:match action="*/profile/edit">
	<map:act type="FlowscriptAction"  function="dumpUserData">
		<map:call function="dumpOrderData"/>
		<map:call function="dumpNewsItems"/>
		<map:generate src="cocoon://generate"/>
		<map:transform src="homePage.xsl"/>
		<map:serialize/>
	</map:act>
	... error stuff can go here...
</map:match>

Which I like even better...since you have the ability to branch the flow 
based on success/failure of the action.  You could also allow parameters as 
input to the function by doing something like:

<map:act type="FlowscriptAction"  function="dumpUserData">
	<map:parameter value="xxx"/> <!-- name attribute could be ignored -->
	<map:parameter value="yyy"/>
     .... as before

where the method signature of dumpUserData would look like

	function dumpUserData( xValue, yValue ) {....}

Clean...crisp...understandable...functional....and doesn't clutter the 
architecture.

+1 from me for the FlowscriptAction approach and soon too!


Andrzej Jan Taramina
Chaeron Corporation: Enterprise System Solutions
http://www.chaeron.com


Mime
View raw message