# The BatchJob Annotation

Each `BatchJob` class must declare a `BatchJob` annotation that specifies important attributes of the job. An example is shown below:

    			@BatchJob (rerunnable = false,
    			multiThreaded = true,
    			modules={todo},
    			softParameters = { @BatchJobSoftParameter
    			(name=OUTPUT-DIR, type=string) },
    			toDoCreation = @ToDoCreation (drillKeyEntity = user,
    			sortKeys = {lastName, firstName},
    			messageParameters = {firstName, lastName}
    			)
    			)

The annotation declares if the job can be rerun, supports more than one thread of operation, the modules that the job belongs to, its nonstandard runtime parameters and the details of how `ToDo` entries should be created in the case of errors. When not specified in the annotation, default values will be used.

Parent topic: Creating a BatchJob