- From: <Toman_Vojtech@emc.com>
- Date: Mon, 12 Oct 2009 05:06:11 -0400
- To: <public-xml-processing-model-comments@w3.org>
> > But the dependency between the two steps must still be preserved.
> > Simply
> > replacing the p:pipe binding would break the dependency graph.
>
> I don't really understand why this is important, given that
> if there's
> no data passing between them then there is no dependency
> between them.
> But I will defer to the implementers.
Even if no data is flowing between the steps, you want to be sure they
are evaluated in the right order. Consider this example:
<p:v2-step name="v2"/>
<p:v1-step>
<p:input port="source">
<p:pipe step="v2" port="result"/>
</p:input>
</p:v1-step>
In a V1 processor, this pipeline should fail because the processor does
not know how to perform p:v2-step. As a consequence, the p:v1-step step
is never invoked (because it depends on the result of p:v2-step).
Hovever, if you remove the dependency between p:v1-step and p:v2-step
(by replacing p:pipe with p:empty), the V1 processor is at liberty to
evaluate the two steps in arbitrary order. This means that p:v1-step can
be evaluated *before* p:v2-step, which typically you don't want (you
will be likely to get errors or really unexpected results when running
the pipeline). For instance, p:v1-step might store nonsense documents
somewhere, or update some records in a db too early, ...
Regards,
Vojtech
Received on Monday, 12 October 2009 09:06:49 UTC