Class JobContext

  • Direct Known Subclasses:
    RunnerJobContext

    public class JobContext
    extends java.lang.Object
    The JobContext class gives access to the Job id, the Job name, the state, ... .

    Using the getMetadata(), it also allows to store some data between different job retries so jobs can be made re-entrant. This comes in handy when your job exists out of multiple steps, and you want to keep track of which step already succeeded. Then, in case of a failure, you can skip the steps that already completed successfully. As soon as the job is completed successfully the metadata is cleared (for storage purpose reasons).

    • Constructor Detail

      • JobContext

        protected JobContext()
      • JobContext

        protected JobContext​(Job job)
        Keep constructor package protected to remove confusion on how to instantiate the JobContext. Tip - To use the JobContext in your Job, pass JobContext.Null
        Parameters:
        job - the job for this JobContext
    • Method Detail

      • getJobId

        public java.util.UUID getJobId()
      • getJobName

        public java.lang.String getJobName()
      • getJobState

        public StateName getJobState()
      • getCreatedAt

        public java.time.Instant getCreatedAt()
      • getUpdatedAt

        public java.time.Instant getUpdatedAt()
      • getSignature

        public java.lang.String getSignature()
      • getMetadata

        public java.util.Map<java.lang.String,​java.lang.Object> getMetadata()
        Gives access to Job Metadata via an UnmodifiableMap. To save Metadata, use the saveMetadata(String, Object) method
        Returns:
        all user defined metadata about a Job. This metadata is only accessible up to the point a job succeeds.
      • saveMetadata

        public void saveMetadata​(java.lang.String key,
                                 java.lang.Object metadata)
        Allows saving metadata for a certain Job. The value must either be a simple type (String, UUID, Integers, ...) or implement the Metadata interface for serialization to Json. Note that it is important that the objects you save are thread-safe (e.g. a CopyOnWriteArrayList, ... ).

        If the key already exists, the metadata is updated.

        Parameters:
        key - the key to store the metadata
        metadata - the metadata itself
      • saveMetadataIfAbsent

        public void saveMetadataIfAbsent​(java.lang.String key,
                                         java.lang.Object metadata)
        Allows saving metadata for a certain Job. The value must either be a simple type (String, UUID, Integers, ...) or implement the Metadata interface for serialization to Json. Note that it is important that the objects you save are thread-safe (e.g. a CopyOnWriteArrayList, ... ).

        If the key already exists, the metadata is NOT updated.

        Parameters:
        key - the key to store the metadata
        metadata - the metadata itself