Re: Annotations for side effects and stability

Norm,

I agree with all of your answers, except maybe this one:

On 4/24/06, Norman Walsh <Norman.Walsh@sun.com> wrote:
> | 3. Use cached results of the component invoked in the same way in a
> | different pipeline invocation. For example, cache the 'foo' document in
> | this pipeline and reuse it the next time the pipeline is invoked,
> | assuming that foo.xml hasn't changed in the meantime:
> |
> |    <p:pipeline>
> |      <p:output ref="foo" />
> |      <p:step name="p:foo">
> |        <p:input href="foo.xml" />
> |        <p:output label="foo" />
> |      </p:step>
> |    </p:pipeline>
>
> I really want to call that "out of scope".

1) Is p:foo execute twice if this pipeline is run twice?

    <p:pipeline>
        <p:output ref="foo"/>
        <p:step name="p:foo">
            <p:input href="foo.xml"/>
            <p:output label="foo"/>
        </p:step>
    </p:pipeline>

2) Is p:foo execute twice in this pipeline?

    <p:pipeline>
        <p:output ref="foo1"/>
        <p:output ref="foo2"/>
        <p:step name="p:foo">
            <p:input href="foo.xml"/>
            <p:output label="foo1"/>
        </p:step>
        <p:step name="p:foo">
            <p:input href="foo.xml"/>
            <p:output label="foo2"/>
        </p:step>
    </p:pipeline>

I think those two questions are closely related, and I would like to
give the same answer in both cases: a pipeline engine is free to skip
the second execution of p:foo if it knows that the second execution
will generate the same result and that p:foo doesn't have any
(significant) side effect.

[I am diverging from the original question, but in my mind, updating a
database or calling a web service is significant side effect, but
generating an additional line in a log file or adding a
"If-Modified-Since" header to an HTTP request is not a significant
side effect. I am not sure if we will be able to define precisely what
a "significant side effect" is. Most likely the decision will need to
be taken on a component per component basis.]

Alex
--
Blog (XML, Web apps, Open Source):
http://www.orbeon.com/blog/

Received on Thursday, 27 April 2006 07:38:19 UTC