📚 Event Engine Schedules Plugin

Cron Expressions & Delayed Triggers

The schedules-plugin tracks scheduled deadlines and manages execution states over time.


State Lifecycle Events

  • schedule.registered@1.0.0: Registers a new cron pattern or future timestamp.
  • schedule.triggered@1.0.0: Emitted when the runner fires the scheduled deadline.
  • schedule.completed@1.0.0: Emitted when the target event finishes successfully.
  • schedule.failed@1.0.0: Emitted if target execution throws an error.
  • schedule.missed@1.0.0: Emitted when downtime prevented firing during the scheduled window.
  • schedule.paused@1.0.0 / schedule.resumed@1.0.0: Toggles active execution state.
  • schedule.cancelled@1.0.0: Permanently cancels the schedule.

Missed Window Policies

When an engine instance restarts after downtime, it inspects all enabled schedules:

// Example: If a schedule was due during downtime, trigger immediately if catchUp is enabled
if (schedule.catchUp && schedule.dueAt < Date.now()) {
  await engine.ingress('schedule.triggered@1.0.0', {
    scheduleId: schedule.scheduleId,
    firedAt: Date.now(),
    missedCount: 1,
  })
}