Java 액션이 표준 출력에 남긴 key=value 를 <capture-output/> 으로 받고, 다음 <decision> 노드에서 wf:actionData("액션이름")["키"] 로 읽어 분기한다. 검증 단계의 결과에 따라 처리 · 오류 이동을 가르는 전형적인 형태다.
<workflow-app name="validation" xmlns="uri:oozie:workflow:0.4">
<global>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
</global>
<start to="validate" />
<action name='validate'>
<java>
<main-class>com.hadooparchitecturebook.DataValidationRunner
</main-class>
<!-- 중략 -->
<!-- 결과를 캡쳐한다. 이 부분이 중요하다. -->
<capture-output />
</java>
<ok to="check_for_validation_errors" />
<error to="fail" />
</action>
<!-- 캡쳐된 결과를 가지고 어떤 액션을 수행할지 결정한다. -->
<decision name='check_for_validation_errors'>
<switch>
<case to="validation_failure">
${(wf:actionData("validate")["errors"] == "true")}
</case>
<default to="process_data" />
</switch>
</decision>
<action name='process_data'>
<java>
<main-class>com.hadooparchitecturebook.ProcessDataRunner</main-class>
</java>
<ok to="end" />
<error to="fail" />
</action>
<action name="validation_failure">
<java>
<main-class>com.hadooparchitecturebook.MoveOutputToErrorsAction
</main-class>
</java>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Java failed, error message[${wf:errorMessage
(wf:lastErrorNode())}]</message>
</kill>
<end name="end" />
</workflow-app>
Java 액션에서 출력할 값은 oozie.action.output.properties 시스템 프로퍼티가 가리키는 파일에 Java Properties 형식으로 써야 캡처된다. 크기 제한은 기본 2KB(oozie.action.max.output.data)다.