<!--
  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.
-->
<coordinator-app xmlns="uri:oozie:coordinator:0.2" name="COORD-TEST" frequency="1" start="2009-12-15T01:00Z" end="2009-12-17T01:00Z" timezone="UTC" freq_timeunit="DAY" end_of_duration="NONE">
  <controls>
    <timeout>10</timeout>
    <concurrency>1</concurrency>
    <execution>FIFO</execution>
  </controls>
  <input-events>
    <data-in name="din" dataset="din">
      <dataset name="din" frequency="1" initial-instance="2009-12-01T01:00Z" timezone="UTC" freq_timeunit="DAY" end_of_duration="NONE">
        <uri-template>#inputTemplate</uri-template>
      </dataset>
      <instance>${coord:latest(0)}</instance>
    </data-in>
  </input-events>
  <output-events>
    <data-out name="dout" dataset="dout">
      <dataset name="dout" frequency="1380" initial-instance="2009-12-01T01:00Z" timezone="UTC" freq_timeunit="MINUTE" end_of_duration="NONE">
        <uri-template>#outputTemplate</uri-template>
      </dataset>
      <instance>${coord:current(0)}</instance>
    </data-out>
  </output-events>
  <action>
    <workflow>
      <app-path>${wfAppPath}</app-path>
      <configuration>
        <property>
          <name>jobTracker</name>
          <value>${jobTracker}</value>
        </property>
        <property>
          <name>nameNode</name>
          <value>${nameNode}</value>
        </property>
        <property>
          <name>inputDir</name>
          <value>${coord:dataIn('din')}</value>
        </property>
        <property>
          <name>outputDir</name>
          <value>${coord:dataOut('dout')}</value>
        </property>
      </configuration>
    </workflow>
  </action>
</coordinator-app>
