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

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

There is a newer version: 1.0.1
Show newest version
/*
 * Copyright 2012 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.
 */

package javax.batch.operations;

import java.util.List;
import java.util.Set;
import java.util.Properties;
import javax.batch.runtime.JobExecution;
import javax.batch.runtime.JobInstance;
import javax.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
	 */
	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
	 * @throws JobSecurityException
	 */
	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
	 * @throws JobSecurityException
	 */
	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
	 * @throws JobSecurityException
	 */
	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
	 * @throws JobSecurityException
	 */
	public Properties getParameters(long executionId)
			throws NoSuchJobExecutionException, JobSecurityException;

	/**
	 * Creates a new job instance and starts the first execution of that
	 * instance.
	 * 
	 * 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
	 * @throws JobSecurityException
	 */
	public long start(String jobXMLName, Properties jobParameters) throws 
        JobStartException, JobSecurityException;

	/**
	 * Restarts a failed or stopped job instance.
	 * 
	 * @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
	 * @throws NoSuchJobExecutionException
	 * @throws JobExecutionNotMostRecentException,
	 * @throws JobRestartException
	 * @throws JobSecurityException
	 */
	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 * @throws JobExecutionNotRunningException * @throws JobSecurityException */ 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 * @throws JobExecutionIsRunningException * @throws JobSecurityException */ 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 * @throws JobSecurityException */ public JobInstance getJobInstance(long executionId) throws NoSuchJobExecutionException, JobSecurityException; /** * Return all job executions belonging to the specified job instance. * * @param jobInstance * specifies the job instance. * @return list of job executions * @throws NoSuchJobInstanceException * @throws JobSecurityException */ 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 * @throws JobSecurityException */ public JobExecution getJobExecution(long executionId) throws NoSuchJobExecutionException, JobSecurityException; /** * Return StepExecutions for specified execution id. * * @param executionId * specifies the job execution. * @return step executions (order not guaranteed) * @throws NoSuchJobExecutionException * @throws JobSecurityException */ public List getStepExecutions(long jobExecutionId) throws NoSuchJobExecutionException, JobSecurityException; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy