All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.batch.operations.JobOperator Maven / Gradle / Ivy

There is a newer version: 11.0.0-M4
Show newest version
/*
 * Copyright 2012, 2020 International Business Machines Corp.
 *
 * See the NOTICE file distributed with this work for additional information
 * regarding copyright ownership. Licensed 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.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

package jakarta.batch.operations;

import java.util.List;
import java.util.Set;
import java.util.Properties;
import jakarta.batch.runtime.JobExecution;
import jakarta.batch.runtime.JobInstance;
import jakarta.batch.runtime.StepExecution;

/**
 * JobOperator provide the interface for operating on batch jobs.
 * Through the JobOperator a program can start, stop, and restart jobs.
 * It can additionally inspect job history, to discover what jobs
 * are currently running and what jobs have previously run.
 *
 * The JobOperator interface imposes no security constraints. However,
 * the implementer is free to limit JobOperator methods with a security
 * scheme of its choice.  The implementer should terminate any method
 * that is limited by the security scheme with a JobSecurityException.
 *
 */

public interface JobOperator {
	/**
	 * Returns a set of all job names known to the batch runtime.
	 *
	 * @return a set of job names.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public Set getJobNames() throws JobSecurityException;
	/**
	 * Returns number of instances of a job with a particular name.
	 *
	 * @param jobName
	 *            specifies the name of the job.
	 * @return count of instances of the named job.
	 * @throws NoSuchJobException Thrown when the jobName parameter
	 *   value doesn't correspond to a job recognized by the
     *   implementation's repository.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public int getJobInstanceCount(String jobName) throws
         NoSuchJobException,
         JobSecurityException;

	/**
	 * Returns all JobInstances belonging to a job with a particular name
  	 * in reverse chronological order.
	 *
	 * @param jobName
	 *            specifies the job name.
	 * @param start
	 *            specifies the relative starting number (zero based) to
  	 *            return from the
	 *            maximal list of job instances.
	 * @param count
	 *            specifies the number of job instances to return from the
	 *            starting position of the maximal list of job instances.
	 * @return list of JobInstances.
	 * @throws NoSuchJobException Thrown when the jobName parameter
	 *   value doesn't correspond to a job recognized by the
     *   implementation's repository.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public List getJobInstances(String jobName, int start,
        int count)throws NoSuchJobException, JobSecurityException;

	/**
	 * Returns execution ids for job instances with the specified
	 * name that have running executions.
	 *
	 * @param jobName
	 *            specifies the job name.
	 * @return a list of execution ids.
	 * @throws NoSuchJobException Thrown when the jobName parameter
	 *   value doesn't correspond to a job recognized by the
     *   implementation's repository.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public List getRunningExecutions(String jobName) throws
        NoSuchJobException, JobSecurityException;


	/**
	 * Returns job parameters for a specified job instance. These are the
  	 * key/value pairs specified when the instance was originally created
  	 * by the start method.
	 *
	 * @param executionId
	 *            specifies the execution from which to retrieve the
     * parameters.
	 * @return a Properties object containing the key/value job parameter
     * pairs.
	 * @throws NoSuchJobExecutionException Thrown when the executionId parameter
	 *   value doesn't correspond to an execution recognized by the
     *   implementation's repository.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public Properties getParameters(long executionId)
			throws NoSuchJobExecutionException, JobSecurityException;

	/**
	 * Creates a new job instance and starts the first execution of that
	 * instance, which executes asynchronously.
	 *
	 * Note the Job XML describing the job is first searched for by name
	 * according to a means prescribed by the batch runtime implementation.
	 * This may vary by implementation. If the Job XML is not found by that
	 * means, then the batch runtime must search for the specified Job XML
	 * as a resource from the META-INF/batch-jobs directory based on the
	 * current class loader. Job XML files under META-INF/batch-jobs
	 * directory follow a naming convention of "name".xml where "name" is
	 * the value of the jobXMLName parameter (see below).
	 *
	 * @param jobXMLName
	 *            specifies the name of the Job XML describing the job.
	 * @param jobParameters
	 *            specifies the keyword/value pairs for attribute
	 *            substitution in the Job XML.
	 * @return executionId for the job execution.
	 * @throws JobStartException Thrown for some error condition other than
	 * those listed by the other checked exceptions on this method.  Note that
	 * batch runtime implementations have a choice of detecting certain
	 * conditions via upfront validation or only later, during execution.
	 * This nets out to the fact that one implementation may throw
	 * JobStartException on a given error condition while another may not.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public long start(String jobXMLName, Properties jobParameters) throws
        JobStartException, JobSecurityException;

	/**
	 * Restarts a failed or stopped job instance, which executes asynchronously.
	 *
	 * @param executionId
	 *            specifies the execution to to restart. This execution
	 *            must be the most recent execution that ran.
	 * @param restartParameters
	 *            specifies the keyword/value pairs for attribute
	 *            substitution in the Job XML.
	 * @return new executionId
	 * @throws JobExecutionAlreadyCompleteException Thrown when the job execution
	 * associated with executionId is currently complete.
	 * @throws NoSuchJobExecutionException Thrown when the executionId parameter
	 *   value doesn't correspond to an execution recognized by the
     *   implementation's repository.
	 * @throws JobExecutionNotMostRecentException Thrown when the executionId
	 * parameter value does not represent the most recent execution for the
	 * corresponding job instance.
	 * @throws JobRestartException Thrown for some error condition other than
	 * those listed by the other checked exceptions on this method.  Note that
	 * batch runtime implementations have a choice of detecting certain
	 * conditions via upfront validation or only later, during execution.
	 * This nets out to the fact that one implementation may throw
	 * JobRestartException on a given error condition while another may not.
	 * @throws JobSecurityException Thrown when the implementation determines
	 *   that execution of this method with these parameters is not authorized
	 *    (by some implementation-specific mechanism).
	 */
	public long restart(long executionId, Properties restartParameters)
			throws JobExecutionAlreadyCompleteException,
			NoSuchJobExecutionException,
			JobExecutionNotMostRecentException,
			JobRestartException,
			JobSecurityException;

	/**
	 * 

* Request a running job execution stops. This * method notifies the job execution to stop * and then returns. The job execution normally * stops and does so asynchronously. Note * JobOperator cannot guarantee the jobs stops: * it is possible a badly behaved batch application * does not relinquish control. *

* Note for partitioned batchlet steps the Batchlet * stop method is invoked on each thread actively * processing a partition. * * @param executionId * specifies the job execution to stop. * The job execution must be running. * @throws NoSuchJobExecutionException Thrown when the executionId parameter * value doesn't correspond to an execution recognized by the * implementation's repository. * @throws JobExecutionNotRunningException Thrown when the associated * execution is not running (is not already STARTED or STARTING). * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public void stop(long executionId) throws NoSuchJobExecutionException, JobExecutionNotRunningException, JobSecurityException; /** *

* Set batch status to ABANDONED. The instance must have * no running execution. *

* Note that ABANDONED executions cannot be restarted. * * @param executionId * specifies the job execution to abandon. * @throws NoSuchJobExecutionException Thrown when the executionId parameter * value doesn't correspond to an execution recognized by the * implementation's repository. * @throws JobExecutionIsRunningException Thrown when the job execution * associated with executionId is currently running * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public void abandon(long executionId) throws NoSuchJobExecutionException, JobExecutionIsRunningException, JobSecurityException; /** * Return the job instance for the specified execution id. * * @param executionId * specifies the job execution. * @return job instance * @throws NoSuchJobExecutionException Thrown when the executionId parameter * value doesn't correspond to an execution recognized by the * implementation's repository. * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public JobInstance getJobInstance(long executionId) throws NoSuchJobExecutionException, JobSecurityException; /** * Return all job executions belonging to the specified job instance. * * @param instance * specifies the job instance. * @return list of job executions * @throws NoSuchJobInstanceException Thrown when the instance parameter * value doesn't correspond to a job instance recognized by the * implementation's repository. * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public List getJobExecutions(JobInstance instance) throws NoSuchJobInstanceException, JobSecurityException; /** * Return job execution for specified execution id. * * @param executionId * specifies the job execution. * @return job execution * @throws NoSuchJobExecutionException Thrown when the executionId parameter * value doesn't correspond to an execution recognized by the * implementation's repository. * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public JobExecution getJobExecution(long executionId) throws NoSuchJobExecutionException, JobSecurityException; /** * Return StepExecutions for specified execution id. * * @param jobExecutionId * specifies the job execution. * @return step executions (order not guaranteed) * @throws NoSuchJobExecutionException Thrown when the jobExecutionId parameter * value doesn't correspond to an execution recognized by the * implementation's repository. * @throws JobSecurityException Thrown when the implementation determines * that execution of this method with these parameters is not authorized * (by some implementation-specific mechanism). */ public List getStepExecutions(long jobExecutionId) throws NoSuchJobExecutionException, JobSecurityException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy