Scheduler

Purpose

Resource allocation and time optimization. The Scheduler assigns tasks to resources based on availability, proximity, capability, and policy constraints. It supports multiple scheduling modes to serve different application patterns.

Responsibilities

  • Assign tasks from the Planner to specific devices/resources

  • Optimize assignments for time, distance, and load balancing

  • Support one-time, recurring, and conditional scheduling

  • Consult Policy Service for scheduling priorities and constraints

  • Query DeviceAdmin for resource availability and capabilities

Scheduling Modes

Mode

Trigger

Use Case

Example App

One-time

Order/event arrives

Single execution

WES (order-driven)

Recurring (cron)

Time schedule

Periodic execution

ClearJanitor (nightly clean)

Conditional

Event condition met

Reactive execution

Future (sensor threshold)

Key Entities

Entity

Description

Assignment

A task bound to a specific resource at a specific time

Schedule

A recurring pattern (cron expression + task template)

ResourceSlot

A time window of resource availability

API Surface

Operation

Description

POST /assignments

Create a one-time task assignment

POST /schedules

Create a recurring schedule

GET /schedules

List schedules

GET /assignments?resource=&status=

Query assignments

DELETE /schedules/{id}

Cancel a recurring schedule

Dependencies

Service

Relationship

Planner

Receives tasks to be assigned

DeviceAdmin

Queries resource capabilities and availability

Marie

Proximity-based resource selection

Policy Service

Scheduling priorities, time-of-day restrictions

Consumed By

Consumer

Usage

Execution Manager

Receives assignments to execute

Applications

Create and manage schedules