<!--
  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="NAME" frequency="1" timezone="UTC" freq_timeunit="DAY"
end_of_duration="NONE" instance-number="1" action-nominal-time="2009-02-01T23:59${TZ}" action-actual-time="2010-10-01T00:00${TZ}">
  <controls>
    <timeout>10</timeout>
    <concurrency>2</concurrency>
    <execution>LIFO</execution>
  </controls>
  <input-events>
    <data-in name="A" dataset="a">
      <dataset name="a" frequency="7" initial-instance="2009-01-01T01:00${TZ}" timezone="UTC" freq_timeunit="DAY"
      end_of_duration="NONE">
        <uri-template>hcat://dummyhcat:1000/db1/table1/ds=${YEAR}-${DAY}</uri-template>
      </dataset>
      <uris>hcat://dummyhcat:1000/db1/table1/ds=/2009-29#hcat://dummyhcat:1000/db1/table1/ds=/2009-29#
      hcat://dummyhcat:1000/db1/table1/ds=/2009-29</uris>
    </data-in>
  </input-events>
  <output-events>
    <data-out name="LOCAL_A" dataset="local_a">
      <dataset name="local_a" frequency="7" initial-instance="2009-01-01T01:00${TZ}" timezone="UTC" freq_timeunit="DAY"
      end_of_duration="NONE">
        <uri-template>file://#testDir/${YEAR}/${DAY}</uri-template>
      </dataset>
      <uris>hcat://dummyhcat:1000/db1/table1/ds=/2009-29</uris>
      <start-instance>${coord:current(-3)}</start-instance>
    </data-out>
  </output-events>
  <action>
    <workflow>
      <app-path>hdfs:///tmp/workflows/</app-path>
      <configuration>
        <property>
          <name>inputA</name>
          <value>${coord:dataIn('A')}</value>
        </property>
        <property>
          <name>inputB</name>
          <value>${coord:dataOut('LOCAL_A')}</value>
        </property>
        <property>
          <name>yyyymmdd</name>
          <value>${coord:formatTime(coord:nominalTime(), 'DAY')}</value>
        </property>
      </configuration>
    </workflow>
  </action>
</coordinator-app>