<!--
  Copyright (c) 2010 Yahoo! Inc. All rights reserved.
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<workflow-app xmlns="uri:oozie:workflow:0.1" name="wf-name">
    <start to="a"/>

    <fork name="a">  
        <path start="b1"/>    
        <path start="b2"/>
    </fork>

    <action name="b1">
        <sub-workflow>
            <app-path>foo/bar</app-path>
        </sub-workflow>
        <ok to="c"/>
        <error to="fail"/>
    </action>

    <action name="b2">
        <map-reduce>
            <job-tracker>foo</job-tracker>
            <name-node>bar</name-node>
            <streaming>
                <mapper>foo.sh</mapper>
                <reducer>bar.sh</reducer>
            </streaming>
        </map-reduce>
 
        <ok to="c"/>
        <error to="fail"/>
    </action>

    <join name="c" to="end"/>

    <kill name="fail">
        <message>fail</message>
    </kill>

    <end name="end"/>
</workflow-app>
