- From: <vojtech.toman@emc.com>
- Date: Mon, 1 Nov 2010 09:04:32 -0400
- To: <xproc-dev@w3.org>
- Message-ID: <997C307BEB90984EBE935699389EC41C029E15F7@CORPUSMX70C.corp.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:06:40 UTC