<!-- 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" start='2009-08-20T01:00Z' end='2009-10-10T23:59Z'
    timezone='UTC' freq_timeunit='DAY' end_of_duration='NONE'>
    <controls>
        <timeout>10</timeout>
        <concurrency>2</concurrency>
        <execution>LIFO</execution>
    </controls>
    <input-events>
        <data-in name="input" dataset="test">
            <dataset name='test' frequency='-frequency-' initial-instance='2009-08-06T01:00Z'
                timezone='UTC' freq_timeunit='-unit-' end_of_duration='NONE'>
                <uri-template>hdfs:///tmp/workflows/${YEAR}/${MONTH}/${DAY}/${HOUR};region=us
                </uri-template>
            </dataset>
            <start-instance>${startInstance}</start-instance>
            <end-instance>${endInstance}</end-instance>
        </data-in>
    </input-events>
    <action>
        <workflow>
            <app-path>hdfs:///tmp/workflows/</app-path>
            <configuration>
            </configuration>
        </workflow>
    </action>
</coordinator-app>