Hierarchical Steps

One of the nice features I have in smallx is the ability to nest
steps within steps.  In many ways, this maps to attaching a
sub-pipeline to the output of a particular step.

Since I have a directed syntax, each step can determine whether or
not it can nest steps and so this is easy to specify.  Put the syntax
issue aside for a moment...

The really nice thing about having hierarchy is that you can easily
nest sub-pipeline that have some scoping of inputs, outputs, and
parameters.  That scoping can be very handy when you are writing
complex processes.

In the flow graph, this amounts to attaching some number of
"compiled" steps to the output of the component.  As such, the nesting
is really some aspect of syntax that is shorthand for something
that is far more complicated to specify manually.

One way to do this with the generic syntax is to allow outputs
to have children:

    <p:step name="p:xslt">
       <p:input name="source" ref="..."/>
       <p:input name="stylesheet" ref="..."/>
       <p:output name="result">
           <p:step .../>
           <p:step .../>
           <p:step .../>
           <p:step .../>
       </p:output>
    </p:step>

This would be equivalent to the output of the step (the 'result' name)
be attached to a sub-pipeline and the output of that sub-pipeline
replacing 'result' in the main pipeline.

Obviously, with multiple inputs and outputs, this becomes more
complicated.  ...but if done well, this could be very, very useful.

--Alex Milowski

Received on Thursday, 11 May 2006 14:57:51 UTC