001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with the License.  You may obtain a copy of the License at
009     * 
010     *      http://www.apache.org/licenses/LICENSE-2.0
011     * 
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    package org.apache.oozie.client;
019    
020    import java.util.Date;
021    import java.util.List;
022    
023    /**
024     * Bean that represents an Oozie application.
025     */
026    public interface CoordinatorJob extends Job {
027    
028        /**
029         * Defines the possible execution order of an Oozie application.
030         */
031        public static enum Execution {
032            FIFO, LIFO, LAST_ONLY
033        }
034    
035        /**
036         * Defines the possible frequency unit of an Oozie application.
037         */
038        public static enum Timeunit {
039            MINUTE, HOUR, DAY, WEEK, MONTH, END_OF_DAY, END_OF_MONTH, NONE
040        }
041    
042        /**
043         * Return the path to the Oozie application.
044         *
045         * @return the path to the Oozie application.
046         */
047        String getAppPath();
048    
049        /**
050         * Return the name of the Oozie application (from the application definition).
051         *
052         * @return the name of the Oozie application.
053         */
054        String getAppName();
055    
056        /**
057         * Return the application ID.
058         *
059         * @return the application ID.
060         */
061        String getId();
062    
063        /**
064         * Return the application configuration.
065         *
066         * @return the application configuration.
067         */
068        String getConf();
069    
070        /**
071         * Return the application status.
072         *
073         * @return the application status.
074         */
075        Status getStatus();
076    
077        /**
078         * Return the frequency for the coord job in unit of minute
079         *
080         * @return the frequency for the coord job in unit of minute
081         */
082        int getFrequency();
083    
084        /**
085         * Return the timeUnit for the coord job, it could be, Timeunit enum, e.g. MINUTE, HOUR, DAY, WEEK or MONTH
086         *
087         * @return the time unit for the coord job
088         */
089        Timeunit getTimeUnit();
090    
091        /**
092         * Return the time zone information for the coord job
093         *
094         * @return the time zone information for the coord job
095         */
096        String getTimeZone();
097    
098        /**
099         * Return the concurrency for the coord job
100         *
101         * @return the concurrency for the coord job
102         */
103        int getConcurrency();
104    
105        /**
106         * Return the execution order policy for the coord job
107         *
108         * @return the execution order policy for the coord job
109         */
110        Execution getExecutionOrder();
111    
112        /**
113         * Return the time out value for the coord job
114         *
115         * @return the time out value for the coord job
116         */
117        int getTimeout();
118    
119        /**
120         * Return the date for the last action of the coord job
121         *
122         * @return the date for the last action of the coord job
123         */
124        Date getLastActionTime();
125    
126        /**
127         * Return the application next materialized time.
128         *
129         * @return the application next materialized time.
130         */
131        Date getNextMaterializedTime();
132    
133        /**
134         * Return the application start time.
135         *
136         * @return the application start time.
137         */
138        Date getStartTime();
139    
140        /**
141         * Return the application end time.
142         *
143         * @return the application end time.
144         */
145        Date getEndTime();
146    
147        /**
148         * Return the application user owner.
149         *
150         * @return the application user owner.
151         */
152        String getUser();
153    
154        /**
155         * Return the application group.
156         *
157         * @return the application group.
158         */
159        String getGroup();
160    
161        /**
162         * Return the BundleId.
163         *
164         * @return the BundleId.
165         */
166        String getBundleId();
167    
168        /**
169         * Return the application console URL.
170         *
171         * @return the application console URL.
172         */
173        String getConsoleUrl();
174    
175        /**
176         * Return list of coordinator actions.
177         *
178         * @return the list of coordinator actions.
179         */
180        List<CoordinatorAction> getActions();
181    }