http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/java/org/apache/oozie/util/graph/TestGraphGenerator.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/oozie/util/graph/TestGraphGenerator.java 
b/core/src/test/java/org/apache/oozie/util/graph/TestGraphGenerator.java
new file mode 100644
index 0000000..9b0e263
--- /dev/null
+++ b/core/src/test/java/org/apache/oozie/util/graph/TestGraphGenerator.java
@@ -0,0 +1,227 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.oozie.util.graph;
+
+import org.apache.oozie.WorkflowActionBean;
+import org.apache.oozie.WorkflowJobBean;
+import org.apache.oozie.client.WorkflowAction;
+import org.apache.oozie.service.Services;
+import org.apache.oozie.test.XTestCase;
+import org.apache.oozie.util.IOUtils;
+import org.junit.Assert;
+
+import javax.imageio.ImageIO;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class TestGraphGenerator extends XTestCase {
+    private static final String GRAPH_WORKFLOW_DECISION_FORK_JOIN_XML = 
"graph-workflow-decision-fork-join.xml";
+    private static final String GRAPH_WORKFLOW_MANY_ACTIONS_XML = 
"graph-workflow-many-actions.xml";
+    private static final String GRAPH_WORKFLOW_SIMPLE_XML = 
"graph-workflow-simple.xml";
+    private static final String GRAPH_WORKFLOW_INVALID_XML = 
"graph-workflow-invalid.xml";
+
+    private Services services;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        services = new Services();
+        services.init();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        services.destroy();
+
+        super.tearDown();
+    }
+
+    public void testSimpleGraphPng() {
+        final WorkflowJobBean jsonWFJob = createSimpleWorkflow();
+
+        generateAndAssertPng(jsonWFJob, GRAPH_WORKFLOW_SIMPLE_XML, false);
+
+        generateAndAssertPng(jsonWFJob, GRAPH_WORKFLOW_SIMPLE_XML, true);
+
+        try {
+            final String content = 
IOUtils.getResourceAsString(GRAPH_WORKFLOW_INVALID_XML, -1);
+            final GraphGenerator g = new GraphGenerator(content, jsonWFJob, 
true, new GraphvizRenderer());
+            g.write(new NullOutputStream(), OutputFormat.PNG);
+        }
+        catch (final Exception e) {
+            Assert.fail("Write PNG shouldn't have failed for 
graph-workflow-invalid.xml call: " + e.getMessage());
+        }
+    }
+
+    private WorkflowJobBean createSimpleWorkflow() {
+        final WorkflowJobBean jsonWFJob = new WorkflowJobBean();
+        jsonWFJob.setAppName("My Test App");
+        jsonWFJob.setId("My Test ID");
+        return jsonWFJob;
+    }
+
+    private void generateAndAssertPng(final WorkflowJobBean workflowJob, final 
String path, final boolean showKill) {
+        File outputPng = null;
+        try {
+            outputPng = File.createTempFile("graph-output", path + ".png");
+            final String content = IOUtils.getResourceAsString(path, -1);
+            final GraphGenerator g = new GraphGenerator(content, workflowJob, 
showKill, new GraphvizRenderer());
+            g.write(new FileOutputStream(outputPng), OutputFormat.PNG);
+
+            Assert.assertNotNull("PNG read error", ImageIO.read(new 
FileInputStream(outputPng)));
+        }
+        catch (final Exception e) {
+            Assert.fail(String.format("Render and write PNG failed for %s: 
%s", path, e.getMessage()));
+        }
+        finally {
+            if (outputPng != null) {
+                outputPng.delete();
+            }
+        }
+    }
+
+    public void testSimpleGraphDot() {
+        final WorkflowJobBean jsonWFJob = createSimpleWorkflow();
+
+        File outputDot = null;
+        try {
+            outputDot = File.createTempFile("graph-output", 
"graph-workflow-simple.dot");
+            final String content = 
IOUtils.getResourceAsString("graph-workflow-simple.xml", -1);
+            final GraphGenerator g = new GraphGenerator(content, jsonWFJob, 
true, new GraphvizRenderer());
+            g.write(new FileOutputStream(outputDot), OutputFormat.DOT);
+
+            final BufferedReader dotReader = new BufferedReader(new 
FileReader(outputDot));
+            Assert.assertTrue("Rendered and written graph output file is not a 
DOT file",
+                    dotReader.readLine().equals("digraph {"));
+        }
+        catch (final Exception e) {
+            Assert.fail("Render and write DOT failed: " + e.getMessage());
+        }
+        finally {
+            if (outputDot != null) {
+                outputDot.delete();
+            }
+        }
+    }
+
+    public void testSimpleGraphSvg() {
+        final WorkflowJobBean jsonWFJob = createSimpleWorkflow();
+
+        File outputDot = null;
+        try {
+            outputDot = File.createTempFile("graph-output", 
"graph-workflow-simple.svg");
+            final String content = 
IOUtils.getResourceAsString("graph-workflow-simple.xml", -1);
+            final GraphGenerator g = new GraphGenerator(content, jsonWFJob, 
true, new GraphvizRenderer());
+            g.write(new FileOutputStream(outputDot), OutputFormat.SVG);
+
+            final BufferedReader svgReader = new BufferedReader(new 
FileReader(outputDot));
+            Assert.assertTrue("Rendered and written graph output file is not 
an SVG file",
+                    svgReader.readLine().startsWith("<svg "));
+        }
+        catch (final Exception e) {
+            Assert.fail("Render and write SVG failed: " + e.getMessage());
+        }
+        finally {
+            if (outputDot != null) {
+                outputDot.delete();
+            }
+        }
+    }
+
+    public void testGraphWithManyNodes() throws Exception {
+        new 
GraphGenerator(readXmlFromClasspath(GRAPH_WORKFLOW_MANY_ACTIONS_XML),
+                createWorkflowInProgress(25),
+                true,
+                new GraphvizRenderer())
+                .write(new NullOutputStream(), OutputFormat.PNG);
+    }
+
+    private String readXmlFromClasspath(final String classpathLocation) throws 
IOException {
+        return IOUtils.getResourceAsString(classpathLocation, -1);
+    }
+
+    public void testGraphWithDecisionForkJoin() throws Exception {
+        new 
GraphGenerator(readXmlFromClasspath(GRAPH_WORKFLOW_DECISION_FORK_JOIN_XML),
+                createWorkflowWithDecisionForkJoin(),
+                true,
+                new GraphvizRenderer())
+                .write(new NullOutputStream(), OutputFormat.PNG);
+    }
+
+    private WorkflowJobBean createWorkflowInProgress(final int 
actionNodeCount) {
+        final WorkflowJobBean workflowJobBean = createSimpleWorkflow();
+
+        workflowJobBean.getActions().add(createAction("start", "start", 
WorkflowAction.Status.DONE));
+        final int ixRunning = (int) Math.floor(Math.random() * 
actionNodeCount);
+        for (int ixNode = 0; ixNode < actionNodeCount; ixNode++) {
+            final WorkflowAction.Status status;
+            if (ixNode < ixRunning) {
+                status = WorkflowAction.Status.DONE;
+            }
+            else if (ixNode == ixRunning) {
+                status = WorkflowAction.Status.RUNNING;
+            }
+            else {
+                status = WorkflowAction.Status.PREP;
+            }
+            
workflowJobBean.getActions().add(createAction(String.format("pig-%d", ixNode), 
"pig", status));
+        }
+        workflowJobBean.getActions().add(createAction("kill", "kill", 
WorkflowAction.Status.PREP));
+        workflowJobBean.getActions().add(createAction("end", "end", 
WorkflowAction.Status.PREP));
+
+        return workflowJobBean;
+    }
+
+    private WorkflowJobBean createWorkflowWithDecisionForkJoin() {
+        final WorkflowJobBean workflowJobBean = createSimpleWorkflow();
+
+        workflowJobBean.getActions().add(createAction("start", "start", 
WorkflowAction.Status.DONE));
+        workflowJobBean.getActions().add(createAction("decision", "decision", 
WorkflowAction.Status.DONE));
+        workflowJobBean.getActions().add(createAction("pig-0", "pig", 
WorkflowAction.Status.PREP));
+        workflowJobBean.getActions().add(createAction("fork", "fork", 
WorkflowAction.Status.DONE));
+        workflowJobBean.getActions().add(createAction("pig-1", "pig", 
WorkflowAction.Status.DONE));
+        workflowJobBean.getActions().add(createAction("pig-2", "pig", 
WorkflowAction.Status.RUNNING));
+        workflowJobBean.getActions().add(createAction("join", "join", 
WorkflowAction.Status.PREP));
+        workflowJobBean.getActions().add(createAction("kill", "kill", 
WorkflowAction.Status.PREP));
+        workflowJobBean.getActions().add(createAction("end", "end", 
WorkflowAction.Status.PREP));
+
+        return workflowJobBean;
+    }
+
+    private WorkflowAction createAction(final String name, final String type, 
final WorkflowAction.Status status) {
+        final WorkflowActionBean workflowActionBean = new WorkflowActionBean();
+        workflowActionBean.setName(name);
+        workflowActionBean.setType(type);
+        workflowActionBean.setStatus(status);
+
+        return workflowActionBean;
+    }
+
+    private static class NullOutputStream extends OutputStream {
+        @Override
+        public void write(final int b) throws IOException {
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graph-workflow-decision-fork-join.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graph-workflow-decision-fork-join.xml 
b/core/src/test/resources/graph-workflow-decision-fork-join.xml
new file mode 100644
index 0000000..e511e87
--- /dev/null
+++ b/core/src/test/resources/graph-workflow-decision-fork-join.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+-->
+<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
+    <start to="decision"/>
+    <kill name="kill">
+        <message>killed message</message>
+    </kill>
+    <decision name="decision">
+        <switch>
+            <case to="pig-0">${true}</case>
+            <case to="fork">${false}</case>
+            <default to="end"/>
+        </switch>
+    </decision>
+    <action name="pig-0">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="end"/>
+        <error to="kill"/>
+    </action>
+    <fork name="fork">
+        <path start="pig-1"/>
+        <path start="pig-2"/>
+    </fork>
+    <action name="pig-1">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="join"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-2">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="join"/>
+        <error to="kill"/>
+    </action>
+    <join name="join" to="end" />
+    <end name="end"/>
+</workflow-app>

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graph-workflow-invalid.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graph-workflow-invalid.xml 
b/core/src/test/resources/graph-workflow-invalid.xml
new file mode 100644
index 0000000..8103bca
--- /dev/null
+++ b/core/src/test/resources/graph-workflow-invalid.xml
@@ -0,0 +1,507 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+-->
+<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
+    <start to="or_0_1"/>
+    <kill name="kill">
+        <message>killed message</message>
+    </kill>
+    <action name="or_0_1">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_0_1.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_0_1</param>
+            
<param>INPUT1=/projects/sm3/root/segment/235/2/20120308_20120308</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/236/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_2"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_2">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_2.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_0_1</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/237/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_3"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_3">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_3.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/238/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_4"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_4">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_4.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/239/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_5"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_5">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_5.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/240/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_6_bad"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_6">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_6.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/241/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_7"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_7">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_7.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/242/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_8"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_8">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_8.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/243/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="or_or_0_1_9"/>
+        <error to="kill"/>
+    </action>
+    <action name="or_or_0_1_9">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <prepare>
+                <delete 
path="${nameNode}/projects/sm3/root/segment/3908/8/20120308_20120308"/>
+            </prepare>
+            <configuration>
+                <property>
+                    <name>mapreduce.reduce.input.limit</name>
+                    <value>-1</value>
+                </property>
+                <property>
+                    <name>mapred.job.queue.name</name>
+                    <value>${queueName}</value>
+                </property>
+                <property>
+                    <name>mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
+                    <value>${SM_H20S_VIEWJOB}</value>
+                </property>
+                <property>
+                    <name>mapred.map.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>mapred.reduce.tasks.speculative.execution</name>
+                    <value>false</value>
+                </property>
+                <property>
+                    <name>oozie.launcher.mapred.child.java.opts</name>
+                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
+                </property>
+                <property>
+                    <name>SM3.DUMMYSID</name>
+                    <value>FALSE</value>
+                </property>
+            </configuration>
+            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_9.pig</script>
+            <param>REDUCERS=15</param>
+            
<param>OUTPUT=/projects/sm3/root/segment/3908/8/20120308_20120308</param>
+            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param>
+            <param>USERTYPE1=yuid</param>
+            
<param>INPUT2=/projects/sm3/root/segment/244/2/20120308_20120308</param>
+            <param>USERTYPE2=yuid</param>
+        </pig>
+        <ok to="cleanup"/>
+        <error to="kill"/>
+    </action>
+    <action name="cleanup">
+        <fs>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/>
+            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/>
+        </fs>
+        <ok to="end"/>
+        <error to="kill"/>
+    </action>
+    <end name="end"/>
+</workflow-app>

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graph-workflow-many-actions.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graph-workflow-many-actions.xml 
b/core/src/test/resources/graph-workflow-many-actions.xml
new file mode 100644
index 0000000..6db8830
--- /dev/null
+++ b/core/src/test/resources/graph-workflow-many-actions.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
+    license agreements. See the NOTICE file distributed with this work for 
additional
+    information regarding copyright ownership. The ASF licenses this file to
+    you 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. -->
+<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
+    <start to="pig-0" />
+    <kill name="kill">
+        <message>killed message</message>
+    </kill>
+    <action name="pig-0">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-1" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-1">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-2" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-2">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-3" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-3">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-4" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-4">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-5" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-5">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-6" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-6">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-7" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-7">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-8" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-8">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-9" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-9">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-10" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-10">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-11" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-11">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-12" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-12">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-13" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-13">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-14" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-14">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-15" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-15">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-16" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-16">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-17" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-17">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-18" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-18">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-19" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-19">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-20" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-20">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-21" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-21">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-22" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-22">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-23" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-23">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-24" />
+        <error to="kill" />
+    </action>
+
+    <action name="pig-24">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="end" />
+        <error to="kill" />
+    </action>
+    <end name="end" />
+</workflow-app>

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graph-workflow-simple.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graph-workflow-simple.xml 
b/core/src/test/resources/graph-workflow-simple.xml
new file mode 100644
index 0000000..01bb889
--- /dev/null
+++ b/core/src/test/resources/graph-workflow-simple.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you 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.
+-->
+<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
+    <start to="pig-0"/>
+    <kill name="kill">
+        <message>killed message</message>
+    </kill>
+    <action name="pig-0">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-1"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-1">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-2"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-2">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-3"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-3">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-4"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-4">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-5"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-5">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-6"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-6">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-7"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-7">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-8"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-8">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="pig-9"/>
+        <error to="kill"/>
+    </action>
+    <action name="pig-9">
+        <pig>
+            <job-tracker>${jobTracker}</job-tracker>
+            <name-node>${nameNode}</name-node>
+            <script>echo.pig</script>
+        </pig>
+        <ok to="end"/>
+        <error to="kill"/>
+    </action>
+    <end name="end"/>
+</workflow-app>

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graphWF.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graphWF.xml 
b/core/src/test/resources/graphWF.xml
deleted file mode 100644
index 6a7b042..0000000
--- a/core/src/test/resources/graphWF.xml
+++ /dev/null
@@ -1,507 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you 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.
--->
-<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
-    <start to="or_0_1"/>
-    <kill name="kill">
-        <message>killed message</message>
-    </kill>
-    <action name="or_0_1">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_0_1.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_0_1</param>
-            
<param>INPUT1=/projects/sm3/root/segment/235/2/20120308_20120308</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/236/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_2"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_2">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_2.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_0_1</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/237/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_3"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_3">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_3.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_2</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/238/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_4"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_4">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_4.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_3</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/239/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_5"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_5">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_5.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_4</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/240/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_6"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_6">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_6.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_5</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/241/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_7"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_7">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_7.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_6</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/242/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_8"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_8">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_8.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_7</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/243/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="or_or_0_1_9"/>
-        <error to="kill"/>
-    </action>
-    <action name="or_or_0_1_9">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <prepare>
-                <delete 
path="${nameNode}/projects/sm3/root/segment/3908/8/20120308_20120308"/>
-            </prepare>
-            <configuration>
-                <property>
-                    <name>mapreduce.reduce.input.limit</name>
-                    <value>-1</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.acl-view-job</name>
-                    <value>${SM_H20S_VIEWJOB}</value>
-                </property>
-                <property>
-                    <name>mapred.map.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>mapred.reduce.tasks.speculative.execution</name>
-                    <value>false</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.child.java.opts</name>
-                    <value>${OOZIE_LAUNCHER_MAPRED_CHILD_JAVA_OPTS}</value>
-                </property>
-                <property>
-                    <name>SM3.DUMMYSID</name>
-                    <value>FALSE</value>
-                </property>
-            </configuration>
-            <script>script/pig/sm3-segment-3908-251483-or_or_0_1_9.pig</script>
-            <param>REDUCERS=15</param>
-            
<param>OUTPUT=/projects/sm3/root/segment/3908/8/20120308_20120308</param>
-            
<param>INPUT1=/projects/sm3/root/request/251483/output/pig/or_or_0_1_8</param>
-            <param>USERTYPE1=yuid</param>
-            
<param>INPUT2=/projects/sm3/root/segment/244/2/20120308_20120308</param>
-            <param>USERTYPE2=yuid</param>
-        </pig>
-        <ok to="cleanup"/>
-        <error to="kill"/>
-    </action>
-    <action name="cleanup">
-        <fs>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_0_1"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_2"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_3"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_4"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_5"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_6"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_7"/>
-            <delete 
path="${nameNode}/projects/sm3/root/request/251483/output/pig/or_or_0_1_8"/>
-        </fs>
-        <ok to="end"/>
-        <error to="kill"/>
-    </action>
-    <end name="end"/>
-</workflow-app>

http://git-wip-us.apache.org/repos/asf/oozie/blob/883c7556/core/src/test/resources/graphWF_26_actions.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/graphWF_26_actions.xml 
b/core/src/test/resources/graphWF_26_actions.xml
deleted file mode 100644
index a091be0..0000000
--- a/core/src/test/resources/graphWF_26_actions.xml
+++ /dev/null
@@ -1,264 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
-    license agreements. See the NOTICE file distributed with this work for 
additional
-    information regarding copyright ownership. The ASF licenses this file to
-    you 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. -->
-<workflow-app xmlns="uri:oozie:workflow:0.2" name="sm3-segment-3908-251483">
-    <start to="or_0_1" />
-    <kill name="kill">
-        <message>killed message</message>
-    </kill>
-    <action name="or_0_1">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_2" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_2">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_3" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_3">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_4" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_4">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_5" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_5">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_6" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_6">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_7" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_7">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_8" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_8">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_1_9" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_1_9">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_0" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_0">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_1" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_1">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_2" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_2">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_3" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_3">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_4" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_4">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_5" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_5">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_6" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_6">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_7" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_7">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_8" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_8">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_2_9" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_2_9">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_3_0" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_3_0">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_3_1" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_3_1">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_3_2" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_3_2">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_3_3" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_3_3">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="or_or_0_3_4" />
-        <error to="kill" />
-    </action>
-
-    <action name="or_or_0_3_4">
-        <pig>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <script>echo.pig</script>
-        </pig>
-        <ok to="cleanup" />
-        <error to="kill" />
-    </action>
-
-    <action name="cleanup">
-        <fs>
-        </fs>
-        <ok to="end" />
-        <error to="kill" />
-    </action>
-    <end name="end" />
-</workflow-app>

Reply via email to