You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This flowchart describes how the main bricks will be communicating.
---
title: OSRD - NGE Workflow for synchronous workspaces
---
flowchart TD
OSRD[("OSRD")] -- create / update on change --> timetable["Timetable"]
timetable -- create / modify / delete train schedules &\n (re)calculate pathfindings and running times --> timetable
timetable -- on change --> synchronization_timetable{"Synchro \nenabled?"}
synchronization_timetable -- yes, save modifications ----> OSRD
OSRD -- send infra & timetable for convertion --> converter["Converter / Event handler (osrd-front)"]
converter -- send NGE light model \n(window.postMessage) --> NGE["osrd-nge component"]
NGE -- create / modify / delete trainruns --> NGE
NGE -- on change --> synchronization_nge{"Synchro \nenabled?"}
synchronization_nge -- yes, save modifications \n(window.postMessage) --> converter
converter -- requests to update timetable --> OSRD
Loading
As shown in the following sequence diagram, services have to develop new communcations.
---
title: OSRD - NGE Sequence diagram
---
sequenceDiagram
autonumber
OSRD (osrd_window)-->>OSRD (osrd_window): init web page
OSRD (osrd_window)->>NGE (nge_iframe): set `netzgrafikDto` DOM property
loop while synchronization is ON
alt any modification in OSRD (osrd_window)
OSRD (osrd_window)-->>OSRD (osrd_window): any modification
OSRD (osrd_window)->>NGE (nge_iframe): set `netzgrafikDto` DOM property
else any modification in NGE (nge_iframe)
NGE (nge_iframe)-->>NGE (nge_iframe): any modification <br>(hooks)
NGE (nge_iframe)->>OSRD (osrd_window): send `operationX` event (@Output)
OSRD (osrd_window)-->>OSRD (osrd_window): convert NGE operation into <br/>timetable update
OSRD (osrd_window)->>NGE (nge_iframe): set `netzgrafikDto` DOM property
end
end
A timetable change implies an update of the NGE model
An action on trainruns* in NGE implies an update of the timetable
Create trainrun
Create valid trainrun with valid path => train schedule creation (simulation not working, rolling stock must be entered in OSRD first) => once the rollingstock is given and simulation done => trainrun updated (running times, same path)
Create valid trainrun with incomplete path (should pass by intermediary stations) => train schedule creation (simulation not working, rolling stock must be entered in OSRD first) => once the rollingstock is given and simulation done => trainrun updated (running times, updated path)
Create invalid trainrun => train schedule creation (simulation not working, rolling stock must be entered in OSRD first) => once the rollingstock is given and simulation failed => trainrun deleted / updated (TBD)
Update trainrun
Update trainrun path (shorten and lengthen steps or only start, intermediary or end step) => train schedule updated and simulation done => trainrun updated (updated running times, updated path)
Update trainrun departure time => train schedule updated and simulation done => trainrun updated (updated running times, updated path)
Delete trainrun
Delete trainrun => delete train schedule
*a trainrun in NGE is the equivalent of a train schedule in OSRD (even tho it is not semantically 100% correct)
(Angular) eventEmitter on trainrun actions (create, update, delete) (set environment.customElement)
(Angular) Enable / disable NGE UI elements (authentication and project management components) to keep only workspace (netzgrafik) and filters (see Angular ngIf) (set environment.disableBackend)
Description
Concept diagram:
This flowchart describes how the main bricks will be communicating.
As shown in the following sequence diagram, services have to develop new communcations.
Contacts: @louisgreiner (SNCF Réseau) - @aiAdrian (SBB CFF FFS)
Acceptance criteria
osrd-nge
is available as npm packageiframe
proves the communication betweenosrd-nge
and NGEosrd-nge
runs in operational studies panel*a
trainrun
in NGE is the equivalent of atrain schedule
in OSRD (even tho it is not semantically 100% correct)Implementation plan
osrd-nge
: a wrapper (Angular app) that embed a build of NGE with specific settings for OSRD use (standalone mode) (see POC)osrd-nge
in npmosrd-nge
from npm and make the NGE build available within OSRD buildversion-control.service.ts
)environment.customElement
)netzgrafik
) and filters (see Angular ngIf) (setenvironment.disableBackend
)osrd-nge
:Microscopic / Macroscopic
switchnetzgrafikDto
DOM root propertycreate_nge_model_infra
method from PoC)create_nge_model_with_trains
method from PoC, taking in account TSv2)@Input
for this message in NGEloadNetzgrafikDto
eventListener
for the NGEoperationX
eventsDefinition of ready
UX
PO
Technical
General
The text was updated successfully, but these errors were encountered: