Skip to content

Jeppesen Studio UI Integration: The Planner's View

Rave developers do not just write backend code for the invisible optimizer; they also write the code that populates the Jeppesen Studio UI.

When a human Crew Planner drags and drops a flight onto a roster in the UI, Rave evaluates the legality in real-time. But a planner cannot act on a simple binary False from the solver—they need to know why it is false, and how bad the violation is.


1. Viewpoints for Stakeholders

Different stakeholders need different views and notations of the same data. A financial analyst might want to see the cost breakdown, while a crew dispatcher needs to see safety violations.

Rave handles this by binding rule evaluations to UI projections and text pop-ups.

2. Returning Strings and Remarks

Instead of just failing silently, Rave rules can yield strings (remarks) that surface directly in the Studio application.

// Define a remark string that dynamically injects the calculated values
%fdp_violation_msg% = 
  "ILLEGAL: Duty exceeds Max FDP. Actual: " + format_time(duty.%elapsed_time%) + 
  ", Max Allowed: " + format_time(%max_allowed_fdp%);

CONSTRAINT easa_fdp_limit OF Duty
  COMMENT: "Duty elapsed time must not exceed max allowable FDP"
  STATUS: ON;
  // If the rule fails, the Studio UI will display this exact string
  REMARK: %fdp_violation_msg%;
  RULE:
    duty.%elapsed_time% <= %max_allowed_fdp%;
ENDCONSTRAINT

3. Color Coding and Rule Severity

In the Jeppesen Studio UI, rules are categorized by severity. Rave developers output specific flags to trigger GUI colors:

  • Legal (Green): No rules broken.
  • Warning / Soft Violation (Yellow): A soft constraint was broken (e.g., assigning a senior pilot to a weekend they requested off). The planner can save this, but the UI flags it.
  • Illegal / Hard Violation (Red): A hard regulatory constraint (like EASA FTL) was broken. The system prevents the planner from saving the roster.
flowchart LR
    DragDrop[Planner drags Flight to Roster] --> RaveEval{Rave Rule Engine}
    RaveEval -->|Returns True| Green[Studio UI: Green Box]
    RaveEval -->|Soft Penalty > 0| Yellow[Studio UI: Yellow Box + Warning Text]
    RaveEval -->|Returns False| Red[Studio UI: Red Box + Error Text]