W3C home > Mailing lists > Public > xproc-dev@w3.org > November 2010

Re: How to run unconnected steps in sequence?

From: Jostein Austvik Jacobsen <josteinaj@gmail.com>
Date: Mon, 1 Nov 2010 14:35:40 +0100
Message-ID: <AANLkTi=nhMs6y4eDq3n+Yd5bGsGAjceWPvCr+iYGNA0X@mail.gmail.com>
To: vojtech.toman@emc.com
Cc: xproc-dev@w3.org
Ah, that makes things simpler. So just to be sure:

<p:group name="A">
    <p:identity>
        <p:input port="source">
            <p:pipe port="result" step="B"/>
        </p:input>
    </p:identity>
    <p:sink/>

    <my:step/>

    <p:identity>
        <p:input port="source">
            <p:pipe port="result" step="C"/>
        </p:input>
    </p:identity>
    <p:sink/>
</p:group>

In this case, both B and C must complete before before my:step gets to run?
(opposite to what I assumed at first)

Regards
Jostein

2010/11/1 <vojtech.toman@emc.com>

>  Ad 1. The p:pipe element creates a connection – and a dependency –
> between steps. If the step A contains a p:pipe that points to the step B, it
> means that A must be executed *after* B. It does not matter if the p:pipe is
> in p:input, p:with-option, p:with-param, or p:variable. All p:pipe elements
> contained in the step contribute edges to the dependency graph.
>
>
>
> Ad 2: There is no guarantee; but you don’t care in this case. The p:load
> does not depend on p:sink being executed first. I used p:sink just to
> introduce a side effect-free dependency on p:store. (You can also use other
> steps than p:sink, provided they don’t introduce side effects that would
> change the result of your pipeline.)
>
>
>
> Regards,
>
> Vojtech
>
>
>
>
>
> --
>
> Vojtech Toman
>
> Consultant Software Engineer
>
> EMC | Information Intelligence Group
>
> vojtech.toman@emc.com
>
> http://developer.emc.com/xmltech
>
>
>
> *From:* Jostein Austvik Jacobsen [mailto:josteinaj@gmail.com]
> *Sent:* Monday, November 01, 2010 1:46 PM
> *To:* Toman, Vojtech
> *Cc:* xproc-dev@w3.org
> *Subject:* Re: How to run unconnected steps in sequence?
>
>
>
> 1. Thanks. I didn't know dependencies could be introduced that way. Is this
> similar to what happens when you have multiple p:pipes in a p:input?
>
>
>
> 2. and 3.: How am I guaranteed that p:load won't run before the p:sink?
>
>
>
> Regards
>
> Jostein
>
>
>
> 2010/11/1 <vojtech.toman@emc.com>
>
> The solution is to introduce the dependency explicitly. Here are some
> examples (all are variations on the same theme, but some may be more
> applicable to your use case):
>
>
>
> 1.
>
> <p:store href=”file.xml” name=”store”/>
>
> <p:load>
>
>   <p:with-option name=”href” select=”’file.xml’”>
>
>     <p:pipe step=”store” port=”result”/>
>
>   </p:with-option>
>
> </p:load>
>
>
>
> 2.
>
> <p:store href=”file.xml” name=”store”/>
>
> <p:group>
>
>   <p:sink>
>
>     <p:input port=”source”>
>
>       <p:pipe step=”store” port=”result”/>
>
>     </p:input>
>
>   </p:sink>
>
>   <p:load href=”file.xml”/>
>
> </p:group>
>
>
>
> 3.
>
> <p:group>
>
>   <p:store href=”file.xml”/>
>
>   <p:identity>
>
>     <p:input port="source">
>
>       <p:empty/>
>
>     </p:input>
>
>   </p:identity>
>
> <p:group>
>
> <p:group>
>
>   <p:sink/>
>
>   <p:load href=”file.xml”/>
>
> </p:group>
>
>
>
> Some processors also support extension attributes to control dependencies
> between steps, but I would recommend to avoid this unless absolutely
> necessary.
>
>
>
> Regards,
>
> Vojtech
>
>
>
> --
>
> Vojtech Toman
>
> Consultant Software Engineer
>
> EMC | Information Intelligence Group
>
> vojtech.toman@emc.com
>
> http://developer.emc.com/xmltech
>
>
>
> *From:* xproc-dev-request@w3.org [mailto:xproc-dev-request@w3.org] *On
> Behalf Of *Jostein Austvik Jacobsen
> *Sent:* Monday, November 01, 2010 1:01 PM
> *To:* xproc-dev@w3.org
> *Subject:* How to run unconnected steps in sequence?
>
>
>
> I remember seeing a note on this problem somewhere, but I can't find it.
> Say I want to run these two steps in sequence:
>
>
>
> <p:store href="file.xml"/>
>
> <p:load href="file.xml"/>
>
>
>
> p:load would have to run after p:store, or the file wouldn't be there yet.
> Since p:store has no primary output and p:load has no primary input, the
> processor may choose the order they are run in.
>
>
>
> Is there a standard pattern for solving such issues? Something general, not
> just for the store/load use-case?
>
>
>
>
>
> Regards
>
> Jostein Austvik Jacobsen
>
>
>
Received on Monday, 1 November 2010 13:36:35 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 1 November 2010 13:36:35 GMT