Execution order of steps in a pipeline

Hi all,

I have a question about evaluating the steps of a pipeline. Section 2
says:

"The result of evaluating a pipeline (or subpipeline) is the result of
evaluating the steps that it contains, in an order consistent with the
connections between them. [...]"

I am sure this has been asked before (even though I could not find any
discussion about this topic), but is this really necessary? Why cannot
the execution of the contained steps just follow the document order? I
sort of don't like the idea that a pipeline may execute steps in a
different order than specified in the pipeline document. I mean, it's
nice that you can write pipelines such as:

<p:pipeline>
  <p:count>
    <p:input port="source">
      <p:pipe step="IDENTITY"/>
    </p:input>
  </p:count>
  <p:identity name="IDENTITY">
<p:pipeline>

or:

<p:pipeline>
  <p:identity>
  <p:count/>
<p:pipeline>

and expect them to produce the same result, but I find it a bit
unnatural (and it also makes the specification, IMHO, less elegant and
harder to implement). Why would somebody want to write pipelines whose
execution order is not obvious from the first glance? To me, a pipeline
is just a simple linear sequence of steps, with a clear and well-defined
order.

I understand that the language has been very explicit in the beginning
(steps and ports have names; connections between steps are made using
these names), so in theory, there is no reason why this explicit binding
scheme could not be used for specifying an explicit execution order. But
later on, a lot of defaulting has been added to the specification, and
these explicit bindings, as I see it now, have become much less
important (although they is still necessary - or just useful - in some
cases).

So, my question is: Shall the specification still demand that the
execution order is determined by the connection between the steps
(because there is a valid use case that requires it), or can it follow
the other simplifications (implicit input/output ports on pipelines,
default bindings etc.) and just state: "Steps contained in a compound
step are evaluated linearly, in the document order"?


Regards,
Vojtech

--
Vojtech Toman
Principal Software Engineer
EMC Corporation

Aert van Nesstraat 45
3012 CA Rotterdam
The Netherlands

Toman_Vojtech@emc.com

Received on Wednesday, 23 January 2008 12:55:22 UTC