Interface CustomizedScheduledJobRepository<D>

All Known Subinterfaces:
JpaScheduledJobRepository<D>, ScheduledJobRepository<D>
All Known Implementing Classes:
JpaCustomizedScheduledJobRepository

public interface CustomizedScheduledJobRepository<D>
Repository fragment supporting additional persistence functionality related to ScheduledJob
Author:
Jeff Fischer
  • Method Details

    • streamAll

      @NonNull @Policy(operationTypes=READ) Stream<D> streamAll(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Read a stream of all ScheduledJobs in the data store.
      Parameters:
      contextInfo - context information surrounding multitenant state
      Returns:
      a stream of all ScheduledJobs in the data store
    • establishTriggerStateIfApplicable

      @NonNull D establishTriggerStateIfApplicable(@NonNull String contextId)
      Establish the NotificationStateAware contract for TriggeredJobEventProducer.TYPE. This should initialize the basic support for a trigger type NotificationState item in the NotificationStateAware.getNotificationStates() list. This state is generally completed during the markJobAsExecuted(String, TimingType) lifecycle.
      Parameters:
      contextId - The tracking identifier for the scheduled job
      Returns:
      The initialized entity instance
    • markJobAsExecuted

      @Nullable D markJobAsExecuted(@NonNull String contextId, @NonNull TimingType timingType)
      Mark a job as executed via ScheduledJob.isExecuted(). As part of an atomic operation, this method should also set the ScheduledJob.getLastExecuted() field and disable the job via ScheduledJob.isEnabled() if the job is of TimingType.TARGET_DATE. Finally, the NotificationState of type TriggeredJobEventProducer.TYPE should be configured to start the resiliency lifecycle. See NotificationState for more information on the fields there related to messaging resiliency.
      Parameters:
      contextId - The tracking identifier for the scheduled job
      timingType - The type of job (e.g. whether it's recurring cron or single use)
      Returns:
      the updated job if found and successfully updated, otherwise null. For example, if another process had already updated the record as being executed, this update would not succeed.
    • resetNotificationStateByNameAndJobDetailsContaining

      @NonNull Optional<D> resetNotificationStateByNameAndJobDetailsContaining(@NonNull String notificationStateToReset, String detailName, Object detailValue)
      Finds the job whose ScheduledJob.details contains a ScheduledJobDetail with the given ScheduledJobDetail.name and ScheduledJobDetail#value, and resets the notification state with the matching name.
      Parameters:
      detailName - the ScheduledJobDetail.name that the detail should have
      detailValue - the ScheduledJobDetail#value that the detail should have
      Returns:
      an Optional containing the updated job if updated, Optional.empty() otherwise
    • findByContextIdIgnoringNarrowing

      @NonNull Optional<D> findByContextIdIgnoringNarrowing(@NonNull String contextId)
      Retrieves the job whose ScheduledJob#contextId matches the one supplied. Unlike TrackableRepository.findByContextId(String, ContextInfo), the results are not filtered by narrowing and thus even previously "deleted" results can be returned by this method.

      This functionality is useful for DeploymentJobUnschedulingRequestListener, which requires access to the deleted record for proper notification behavior.

      Parameters:
      contextId - the context ID of the job to find
      Returns:
      an Optional containing the job if found, Optional.empty() otherwise