/* * ProActive Parallel Suite(TM): * The Open Source library for parallel and distributed * Workflows & Scheduling, Orchestration, Cloud Automation * and Big Data Analysis on Enterprise Grids & Clouds. * * Copyright (c) 2007 - 2017 ActiveEon * Contact: contact@activeeon.com * * This library is free software: you can redistribute it and/or * modify it under the terms of the GNU Affero General Public License * as published by the Free Software Foundation: version 3 of * the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * If needed, contact us to obtain a release under GPL Version 2 or 3 * or a different license than the AGPL. */ package org.ow2.proactive.scheduler.common.job; import org.objectweb.proactive.annotation.PublicAPI; /** * Scheduling status of a job. * The different job status are best described below. * * @author The ProActive Team * @since ProActive Scheduling 0.9 */ @PublicAPI public enum JobStatus implements java.io.Serializable { /** * The job is waiting to be scheduled. */ PENDING("Pending", true), /** * The job is running. Actually at least one of its task has been scheduled. */ RUNNING("Running", true), /** * The job has been launched but no task are currently running. */ STALLED("Stalled", true), /** * The job is finished. Every tasks are finished. */ FINISHED("Finished", false), /** * The job is paused waiting for user to resume it. */ PAUSED("Paused", true), /** * The job has been canceled due to user exception and order. * This status runs when a user exception occurs in a task * and when the user has asked to cancel On exception. */ CANCELED("Canceled", false), /** * The job has failed. One or more tasks have failed (due to resources failure). * There is no more executionOnFailure left for a task. */ FAILED("Failed", false), /** * The job has been killed by a user.. * Nothing can be done anymore on this job expect read execution informations * such as output, time, etc... */ KILLED("Killed", false), /** * The job has at least one in-error task and in-error tasks are the last, among others, * which have changed their state (i.e. Job status is depicted by the last action). */ IN_ERROR("In-Error", true); /** The textual definition of the status */ private final String definition; private final boolean jobAlive; /** * Default constructor. * @param def the textual definition of the status. */ JobStatus(String def, boolean jobAlive) { definition = def; this.jobAlive = jobAlive; } public static JobStatus findPriority(String name) { for (JobStatus jobStatus : JobStatus.values()) { if (name.equalsIgnoreCase(jobStatus.toString())) return jobStatus; } // default case return KILLED; } /** * @see java.lang.Enum#toString() */ @Override public String toString() { return definition; } public boolean isJobAlive() { return jobAlive; } }