Sylvain Wallez <[EMAIL PROTECTED]> writes:

<snip> discussion on what should or should not be allowed in VPCs</snip>

> So let's recap what's allowed where:
> - in virtual generators, transfomers, serializers 
> (SAX-oriented VPCs): 
> match, select, act but no redirect. redirect-to and call are 
> forbidden.

Conceptually I think it makes sense not to allow "call": call is
supposed to be the hook to flow and anything requiring flow control
isn't a VPC.  However, in reality call also provide another capability.
I'm not quite sure what to call it, but it's more or less run-time
composability of pipelines.  I know the issues of dynamic sitemaps, but
there are a couple of use cases where this kind of thing is really
useful, what I'm trying to arrive at here is a rational as to why, and
if perhaps there is a restricted version of call -- similar to the
restricted action (no redirect) -- that would make sense in VPCs?

One general use case for the support of call is the "T" connector.  In
particular the branch to a side pipeline for things like validation.
I've posted before on how we use flow/call to do this, but the net
result is a pipeline that basically uses flow to invoke another pipeline
and then continue on with it's own execution, but the results of the
side pipeline are used to determine whether any actions are taken during
this excursion.

Another use case is iteration within a pipeline.  We've got a use case
that I've posted (with no responses -- I think it's too strange to read
about without seeing a real life example) where we don't know how many
times a particular generator/transform combination must be run in
advance.  Basically, we need to do the equivalent of a VPC calling
itself some unknown number of times in sort of an aggregation scenario:

        <map:vpc name="get-metadata" type="generate">
           <map:aggregate>
                <map:part name="get-metadata"/>
           </map:aggregate>
           <map:transform src="resolve.xsl"/>
        </map:vpc>

I don't know how the vpc machinery would know when to stop calling
itself (maybe a "stopRecurssionException"!)?  With call support I can
essentially do the same thing, but the flow script logic looks at the
results and I can support recognizing a special element to signal that
it is time to return...

So, anyway given all this, my basic question is could VPCs support some
restricted version of call?  Perhaps, with another name, where the
contract was that you could not use any version of  sendPage, only
processPipelineTo?

<snip/>

Reply via email to