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]