title: Orbeon processors, processing in parallel or sequential
body: <p>I am trying to find out if Orbeon processes in parallel or in sequence.</p>
  
  <p>We have a pipeline that fetches from 2 data sources and amalgamates in a single response. Does the processing below happen in parallel and combine when both sources have retrieved or is it sequential? If sequential, can it be made to be parallel?</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;!-- processor that gets the xml data from ML db --&gt;
  &lt;p:processor name="oxf:url-generator"&gt;
                  &lt;p:input name="config" href="#conditions" transform="oxf:xslt" &gt;
                                  &lt;config xsl:version="2.0"&gt;
                                                  &lt;url&gt;
                                                                  &lt;xsl:text&gt;$MLDOMAIN/queries/legislation.xq&lt;/xsl:text&gt;
                                                                  &lt;xsl:text&gt;?type=&lt;/xsl:text&gt;
                                                                  &lt;xsl:value-of select="encode-for-uri(/conditions/parameters/type)" /&gt;
                                                                  &lt;xsl:text&gt;&amp;amp;year=&lt;/xsl:text&gt;
                                                                  &lt;xsl:value-of select="encode-for-uri(/conditions/parameters/year)" /&gt;
                                                                  &lt;xsl:text&gt;&amp;amp;number=&lt;/xsl:text&gt;
                                                                  &lt;xsl:value-of select="encode-for-uri(/conditions/parameters/number)" /&gt;
                                                                  &lt;xsl:text&gt;&amp;amp;section=&lt;/xsl:text&gt;
                                                                  &lt;xsl:value-of select="encode-for-uri(/conditions/parameters/section)" /&gt;
                                                  &lt;/url&gt;
                                                  &lt;cache-control&gt;
                                                                  &lt;use-local-cache&gt;false&lt;/use-local-cache&gt;
                                                  &lt;/cache-control&gt;
                                  &lt;/config&gt;
                  &lt;/p:input&gt;
                  &lt;p:output name="data" id="xmlData"/&gt;
  &lt;/p:processor&gt;
  &lt;!-- processor calls a pipeline to return the GraphDB data --&gt;
  &lt;p:processor name="oxf:pipeline"&gt;
                  &lt;p:input name="config" href="task-xml.xpl"/&gt;
                  &lt;p:input name="legislation" href="#legislation"/&gt;
                  &lt;p:input name="section" href="#section"/&gt;
                  &lt;p:input name="requestsections" href="#requestsections"/&gt;
                  &lt;p:input name="minorType" href="#xmlData#xpointer(/l:Fragment/u:Metadata//u:DocumentMinorType)"/&gt;
                  &lt;p:input name="instance" href="#instance"/&gt;
                  &lt;p:input name="amendments" href="#instance#xpointer(/parameters/amendments)"/&gt;
                  &lt;p:input name="date" href="#date"/&gt;
                  &lt;p:input name="basedate" href="#basedate"/&gt;
                  &lt;p:input name="conditions" href="#conditions"/&gt;
                  &lt;p:output name="data" id="taskXml"/&gt;
  &lt;/p:processor&gt;
  &lt;!-- processor that combines the two sources into a single xml output --&gt;
  &lt;p:processor name="oxf:xslt"&gt;
                  &lt;p:input name="config" href="../../xsl/common/edit-xml-xmetal5.xsl"/&gt;
                  &lt;p:input name="data" href="#xmlData"/&gt;
                  &lt;p:input name="tasks" href="#taskXml"/&gt;
                  &lt;p:output name="data" ref="data"/&gt;
  &lt;/p:processor&gt;
  </code></pre>