code: public static JobDefinition retryableCronJobDefinition(final String jobType,
                                                             final String jobName,
                                                             final String description,
                                                             final String cron,
                                                             final int restarts,
                                                             final int retries,
                                                             final Duration retryDelay,
                                                             final Optional<Duration> maxAge) {
          return new DefaultJobDefinition(jobType, jobName, description, maxAge, Optional.empty(), Optional.of(cron), restarts, retries, Optional.of(retryDelay));
      }
docs: Create a JobDefinition that is using a cron expression to specify, when and how often the job should be triggered.
  
  @param jobType     The type of the Job
  @param jobName     A human readable name of the Job
  @param description A human readable description of the Job.
  @param cron        The cron expression. Must conform to {@link CronSequenceGenerator}s cron expressions.
  @param restarts    The number of restarts if the job failed because of errors or exceptions
  @param retries     Specifies how often a job trigger should retry to start the job if triggering fails for some reason.
  @param retryDelay  The optional delay between retries.
  @param maxAge      Optional maximum age of a job. When the job is not run for longer than this duration,
  a warning is displayed on the status page
  @return JobDefinition
  @throws IllegalArgumentException if cron expression is invalid.