Re: Constant Inputs during Iteration

Erik Bruchez wrote:
> 
> Alex Milowski wrote:
>  >
>  > For both the 'viewport' and 'foreach' step containers, I think we
>  > need a simple statement in the document that says that inputs
>  > consumed by steps that aren't the subject of the iteration are
>  > consider "constant" during the iteration.  Contained steps should
>  > receive the same document for each iteration.
> 
> Agreed.
> 
>  > This all means that static resources (e.g. those pointed to with
>  > an 'href') can't change during pipeline execution and be
>  > considered as part of the computation.
> 
> Consider an iteration that:
> 
> o Stores a document into eXist as a step of the iteration
> 
> o Retrieves the updated version from eXist using the eXist REST API
>   during the next iteration, with an HTTP URI like:
> 
>   http://example.org/exist/rest/db/latest.xml

It isn't the URI label to document that remains constant.  It is the
input mapping that remains constant.

> In this case, the document retrieved with that HTTP URI would need to
> be up to date during each iteration. In other words, while the URI is
> static, the document is not static, and I think it would be wrong in
> this use case to require that it be static. And if you want it to be
> constant for the iteration, you have a simple workaround: you can
> retrieve the resource outside p:for-each!

I think that way "leads to madness".

> Also, requiring all static URIs to be constant requires the
> implementation to use a sort of cache, even for "file:" URIs. I am not
> sure that this is necessary.

The consequence of not having this is that during iteration the
results from two different applications of the subp-ipeline could
inexplicable be different unless you knew that "the world changed"
during execution.  Given that execution times will generally be
short, this is really going to confuse the user.

If you want to "retrieve" a document during execution of a
sub-pipline as part of an iteration, you should use some kind
of "load" step to ensure that you have the most
current version of the resource.  That allows the intent of
the author to be explicitly encoded in the pipeline.

--Alex Milowski

Received on Monday, 2 October 2006 17:03:11 UTC