# The Java EE 7 Tutorial

# 55.6 Submitting Jobs to the Batch Runtime

The `JobOperator` interface in the `javax.batch.operations` package enables you to submit jobs to the batch runtime and obtain information about existing jobs. This interface provides the following functionality.

- Obtain the names of all known jobs.

- Start, stop, restart, and abandon jobs.

- Obtain job instances and job executions.

The `BatchRuntime` class in the `javax.batch.runtime` package provides the `getJobOperator` factory method to obtain `JobOperator` objects.

## 55.6.1 Starting a Job

The following example code demonstrates how to obtain a `JobOperator` object and submit a batch job:

    JobOperator jobOperator = BatchRuntime.getJobOperator();
    Properties props = new Properties();
    props.setProperty("parameter1", "value1");
    ...
    long execID = jobOperator.start("simplejob", props);

The first argument of the `JobOperator.start` method is the name of the job as specified in its job definition file. The second parameter is a `Properties` object that represents the parameters for this job execution. You can use job parameters to pass to a job information that is only known at runtime.

## 55.6.2 Checking the Status of a Job

The `JobExecution` interface in the `javax.batch.runtime` package provides methods to obtain information about submitted jobs. This interface provides the following functionality.

- Obtain the batch and exit status of a job execution.

- Obtain the time the execution was started, updated, or ended.

- Obtain the job name.

- Obtain the execution ID.

The following example code demonstrates how to obtain the batch status of a job using its execution ID:

    JobExecution jobExec = jobOperator.getJobExecution(execID);
    String status = jobExec.getBatchStatus().toString();

## 55.6.3 Invoking the Batch Runtime in Your Application

The component from which you invoke the batch runtime depends on the architecture of your particular application. For example, you can invoke the batch runtime from an enterprise bean, a servlet, a managed bean, and so on.

See The webserverlog Example Application and The phonebilling Example Application for details on how to invoke the batch runtime from a managed bean driven by a JavaServer Faces user interface.