r-io suiter-io suitereference docs
← Documentation home
Reference / Simulation & observation

Scenario timelines & observation

Plan dated events in r-iosemit, emit them through the real interpretation pipeline, and compare the plan with the facts observed in r-iose.

01

Plan a shared local timeline

In r-iosemit, define a start and an end, then add dated actualities, messages, potentiality changes, referenced actualities or sensor values. Dates are local wall-clock values such as 2026-09-24T09:00:00: do not append Z or a timezone offset. The server rejects duplicate dates, instants outside the bounds and an end that does not follow the start.

Several events may share one instant. Every instant expands into exactly two dataset events per participating sensor: preparation, then principal. The preparation establishes the state before a CEP transition; the principal event performs the planned change. This is not a fixed-interval clock.

Zoom. The − / + buttons, or Ctrl + wheel over the timeline, zoom in around the pointer (up to 8 pixels per second); the timeline then scrolls sideways, and while it plays the view follows the playhead. Fit to window shows the whole timeline again. The zoom of each scenario is kept while the page stays open.

09:00  preparation → principal  [smoke activated + message]
09:07  preparation → principal  [smoke deactivated]
09:25  preparation → principal  [risk becomes certain]
02

Keep DATA and the plan consistent

The TIMELINE and DATA views share the timeline. Adding or removing a global pair changes every dataset; editing one sensor must retain that common number of points. The editor checks quantitative thresholds and dedicated boolean transitions so a preparation value cannot accidentally trigger or remove another planned alert.

Planned contentContract
ActualityA unique id, sensor id and CEP rule id; activation or deactivation at the chosen date.
MessageText or a picture is required. At most one message per sensor and date; authors and location are optional.
Reflex photoOne image per camera and activated actuality. The mock camera selects it by occurrence date without consuming it; it does not fall back to an unrelated image.
PotentialityAn eligible emerging/intrinsic Risk or Opportunity, not an unvalidated ML prediction. Activation sets probability to 100%; deactivation restores the stored previous probability.
Referenced actualityPushed directly on the principal step of its date, without sensor nor CEP rule. FREEZE mode activates an existing FREEZE actuality (at most once per actuality). REFERENCE mode clones a reference actuality into a new ACTIVE one, Near its reference and optionally Impacting a resource, with an optional name, description and picture used as instance icon; these four fields are refused in FREEZE mode.
Sensor valueA precise value emitted by a sensor on the principal step of its date and held until its next planned value: exactly one of a number (QUANTITATIVE sensor, finite), a boolean (DEDICATED sensor) or a latitude/longitude pair (GPS, both required and within range), optionally with the name of the model element it was placed on. At most one value per sensor and date. GPS values also accept an altitude in metres above the ground (default 0 in the editor), including negative values; choose the position by coordinates, a model place or the draggable map marker.

Mute instead of deleting. Each planned item (actuality, message, potentiality, referenced actuality, sensor value) can be muted from the speaker icon of its future card, or with the Mute button of the actuality, potentiality, referenced-actuality and sensor-value dialogs. A muted item stays on the timeline with its settings, greyed out and struck through, and the header counts it (· N muted); it is neither compiled into DATA nor played, its reflex photo is not taken and the story leaves it out. Every date keeps its DATA pair, even when all its items are muted (hollow dot). Actualities of the same CEP rule at a date are muted together; muting an activation also mutes the deactivation that follows it, and unmuting a deactivation unmutes the activation it undoes. A muted FREEZE activation does not count against the once-per-actuality limit. Editing a sensor value in DATA unmutes it.

Use r-iored to inspect the CEP rules and r-ioda to check the sensor, impacted assets and generated objectives. A scenario cannot compensate for a missing model relation.

03

Advance, acknowledge, restart

The player starts the participating controllers, waits for every preparation emission, then waits for every principal emission. A failure prevents progression to the next phase or instant. Acknowledgement confirms emission, not completion of downstream CEP processing, ML inference or workflow execution.

save the graph checkpoint for this instant
start all participating controllers; wait for all
emit preparation[2 × instant]; wait for all
emit principal[2 × instant + 1]; wait for all
apply planned potentiality changes and referenced actualities
advance the shared cursor

On reload, a known server playback position takes precedence over dataset progress; otherwise progress is reconstructed from the least-advanced controller. A partially emitted pair is retried without replaying already acknowledged steps.

Edit during playback. While a scenario is being played, items after the playhead can still be added, removed or muted: the playback position and the sensor dataset positions are kept, and the next step plays the edited plan. A change that touches a date already played (including a DATA edit of a played step or a story that rebuilds the timeline) is refused before anything is saved; go back before that date with Previous step, the playhead or Restart first.

Previous step, playhead and Restart

Before each instant, PlaybackCheckpoints saves the nodes and edges of the knowledge space, across statuses, in server memory. Previous step or dragging the playhead backwards restores that checkpoint; dragging forwards plays successive steps. Restart requests checkpoint 0 and resets the timeline actors, planned probabilities and referenced actualities.

checkpoint before instant → emit preparation → emit principal → apply direct changes
rewind: pause 2L waves → compare checkpoint with current graph
        → remove later nodes/edges → restore changed/missing nodes/edges
        → notify views and reverse trajectories → resume 2L

Use a dedicated demonstration knowledge space. Rewinding can also undo graph edits made by other users after the checkpoint. Checkpoints are lost when the server stops: a previous step then cannot be restored, and Restart falls back to the changes handled by the timeline itself. This is a graph restoration, not a durable backup or compensation of external actions, workflow execution, sensor histories or time-series databases. The service reports remainingDifferences; restoration is not a guarantee of an atomic or byte-identical rollback.

See the reviewed Henri barbecue walkthrough for the reverse path, and Parc des Princes incidents for referenced actualities and human tasks.

04

Narrate the scenario without changing its facts

The STORY view can request an English or French narrative from the project's configured AI provider. Author guidance is limited to 1,000 characters. It can influence tone and emphasis, but event identifiers and chronology remain constrained. Existing message text is preserved; the narrator can fill messages whose text was left empty. The description of an actuality is passed to the narrator as author context, and planned sensor values are narrated as measures (value read, state switched, carrier moving to a place). A story already written in the other language can be sent with translationOf: the narrator then translates it segment by segment, keeping groups, dates and event identifiers, and also translates the guidance.

The browser validates coverage, group order, dates and event identifiers before applying the result. The saved story has a fingerprint derived from meaningful timeline content, including photo content: changing the plan can make the narrative stale. Inspect the generated text before using it in a demonstration; structural validation is not a guarantee that every sentence is factually correct. Generation and photo description may call a paid external provider.

The narrative adapter removes technical sensor and CEP metadata and uses temporary event identifiers. This is data minimisation, not anonymisation: scenario text, names and supplied images can still contain sensitive information. See AI assistants.

05

Separate planned events from observed facts

r-iose provides a read-only observation timeline fed by received sensor events and governance notifications. It restores evidence from SensorManager and KnowledgeHistory, rather than treating the simulator's plan as proof that an event occurred. Occurred at preserves the scenario date through CEP creation and removal notifications.

SensorManager retains up to 300 received payloads per sensor during its current lifetime. The observer correlates event ids with CEP evidence, generated actualities and reflex photos. Unvalidated ML predictions do not count as confirmed observations. Clearing the timeline clears the view, not server records; restarting the manager does not restore an earlier run from browser storage.

An ML provider failure is not a successful prediction with no danger found. The mlPredictErrorTopic event carries rule, sensor, source event and error information to r-iosemit and r-iota; other rules may continue. Check the provider configuration before replaying, and do not publish diagnostic messages containing sensitive data.

Continue in r-iota to qualify alerts, validate predictions, deduce a response and supervise it. Sensor emission, interpretation, expert validation and resolution are separate stages.

06

Existing use cases and historical captures

The schema now stores timeAxis, instant and optional storyJson, replacing numberOfTimeSteps and timeBetweenSteps. Four committed packages now ship a game scenario in the folder layout described below: IMT Albi Crisis and IMT Albi Healthcare (Default Game Scenario), Crisis Event Show — Parc des Princes (Full scenario) and Barbecue (Henri barbecue story). Legacy packaged game scenarios were removed from Albi, Cathedral Albi, Nantes Macro, Golfech, RealWorld, Skateboard Logistics and Toulouse PrisonBreak; their project models remain separate assets.

A project export stores each scenario in its own folder, game_scenarios/<Name_of_scenario>/, holding the scenario XML, a datasets/ folder and a media/ folder for the pictures of referenced actualities and planned messages, all referenced relatively (./datasets/…, ./media/…). On import the media are uploaded into the knowledge space; scenarios that reference a dataset only by name are still read.

Older screenshots and guided demonstrations are retained as historical examples. Their scenario names, step numbers and screens may differ from the current editor; prepare a dated timeline instead of expecting Default_with10steps to be present. The Fire at Albi Cathedral walkthrough remains a model-building and human-task example, not a new standalone Maven use-case module.

07

Implementation and contracts

The authenticated r-iosemit /gameMaster POST endpoints create, update, save, select, list and delete scenarios. JSON uses local ISO date strings; attachments are base64 values, not Java stream objects. See API reference and simulation architecture.

Référence / Simulation et observation

Chronologies de scénario et observation

Planifier des événements datés dans r-iosemit, les émettre par le véritable pipeline d’interprétation et comparer le plan aux faits observés dans r-iose.

01

Planifier une chronologie locale commune

Dans r-iosemit, définissez un début et une fin, puis ajoutez des actualités, messages, changements de potentialité, actualités référencées ou valeurs de capteur datés. Les dates sont des heures locales, par exemple 2026-09-24T09:00:00 : sans Z ni décalage de fuseau. Le serveur refuse les dates dupliquées, les instants hors bornes et une fin qui ne suit pas le début.

Plusieurs événements peuvent partager un instant. Chaque instant produit exactement deux événements de jeu de données par capteur participant : préparation, puis principal. La préparation établit l’état précédant une transition CEP ; l’événement principal réalise le changement prévu. Il ne s’agit pas d’une horloge à intervalle fixe.

Zoom. Les boutons − / +, ou Ctrl + molette sur la chronologie, zooment autour du pointeur (jusqu’à 8 pixels par seconde) ; la chronologie défile alors horizontalement et, pendant la lecture, la vue suit le curseur. Fit to window réaffiche toute la chronologie. Le zoom de chaque scénario est conservé tant que la page reste ouverte.

09:00  préparation → principal  [fumée activée + message]
09:07  préparation → principal  [fumée désactivée]
09:25  préparation → principal  [risque devenu certain]
02

Garder DATA et le scénario cohérents

Les vues TIMELINE et DATA partagent la chronologie. Ajouter ou supprimer une paire globale modifie tous les jeux de données ; l’édition d’un capteur doit conserver ce nombre commun de points. L’éditeur contrôle les seuils quantitatifs et les transitions booléennes dédiées pour qu’une valeur de préparation ne déclenche ni ne supprime accidentellement une autre alerte prévue.

Contenu planifiéContrat
ActualitéUn identifiant unique, un capteur et une règle CEP ; activation ou désactivation à la date choisie.
MessageUn texte ou une image est nécessaire. Un message au maximum par capteur et par date ; auteur et position facultatifs.
Photo réflexeUne image par caméra et actualité activée. La caméra simulée la sélectionne par date d’occurrence sans la consommer ; elle ne renvoie pas une image sans rapport en remplacement.
PotentialitéUn Risk ou une Opportunity émergent/intrinsèque éligible, pas une prédiction ML non validée. L’activation porte la probabilité à 100 % ; la désactivation restaure la probabilité précédente enregistrée.
Actualité référencéePoussée directement sur le pas principal de sa date, sans capteur ni règle CEP. Le mode FREEZE active une actualité FREEZE existante (une seule fois par actualité). Le mode REFERENCE clone une actualité de référence en une nouvelle actualité ACTIVE, Near de sa référence et éventuellement Impacting une ressource, avec nom, description et image facultatifs servant d’icône d’instance ; ces quatre champs sont refusés en mode FREEZE.
Valeur de capteurUne valeur précise émise par un capteur sur le pas principal de sa date et maintenue jusqu’à sa valeur planifiée suivante : exactement un nombre (capteur QUANTITATIVE, fini), un booléen (capteur DEDICATED) ou un couple latitude/longitude (GPS, les deux requis et dans les bornes), avec éventuellement le nom de l’élément du modèle où il a été placé. Une valeur au maximum par capteur et par date. Les valeurs GPS acceptent aussi une altitude en mètres au-dessus du sol (0 par défaut dans l’éditeur), y compris négative ; choisissez la position par coordonnées, lieu du modèle ou marqueur déplaçable sur la carte.

Mettre en sourdine plutôt que supprimer. Chaque élément planifié (actualité, message, potentialité, actualité référencée, valeur de capteur) peut être mis en sourdine par l’icône de haut-parleur de sa carte future, ou par le bouton Mute des boîtes actualité, potentialité, actualité référencée et valeur de capteur. Un élément en sourdine reste sur la chronologie avec ses réglages, grisé et barré, et l’en-tête le compte (· N muted) ; il n’est ni compilé dans DATA ni joué, sa photo réflexe n’est pas prise et le récit l’ignore. Chaque date garde sa paire DATA, même quand tous ses éléments sont en sourdine (point creux). Les actualités d’une même règle CEP à une date passent ensemble en sourdine ; couper une activation coupe aussi la désactivation qui la suit, et réactiver une désactivation réactive l’activation qu’elle annule. Une activation FREEZE en sourdine ne compte pas dans la limite d’une activation par actualité. Modifier une valeur de capteur dans DATA lève sa sourdine.

Utilisez r-iored pour inspecter les règles CEP et r-ioda pour vérifier le capteur, les biens impactés et les objectifs générés. Un scénario ne peut pas compenser une relation absente du modèle.

03

Avancer, acquitter, redémarrer

Le lecteur démarre les contrôleurs participants, attend toutes les émissions de préparation, puis toutes les émissions principales. Un échec empêche le passage à la phase ou à l’instant suivant. L’acquittement confirme l’émission, pas la fin du traitement CEP, de l’inférence ML ni de l’exécution du workflow en aval.

sauvegarder le point du graphe pour cet instant
démarrer tous les contrôleurs participants ; attendre tous
émettre préparation[2 × instant] ; attendre tous
émettre principal[2 × instant + 1] ; attendre tous
appliquer les changements de potentialité et actualités référencées prévus
avancer le curseur commun

Au rechargement, la position connue du rejeu côté serveur prime sur la progression des jeux de données ; sinon la progression est reconstruite depuis le contrôleur le moins avancé. Une paire partiellement émise est reprise sans rejouer les étapes déjà acquittées.

Modifier pendant la lecture. Pendant le rejeu d’un scénario, les éléments situés après le curseur peuvent encore être ajoutés, supprimés ou mis en sourdine : la position de lecture et celle des jeux de données des capteurs sont conservées, et le pas suivant joue le plan modifié. Une modification qui touche une date déjà jouée (y compris une édition DATA d’un pas joué ou un récit qui reconstruit la chronologie) est refusée avant tout enregistrement ; revenez d’abord avant cette date avec Previous step, le curseur ou Restart.

Previous step, curseur et Restart

Avant chaque instant, PlaybackCheckpoints conserve en mémoire serveur les nœuds et arêtes de l’espace de connaissance, tous statuts confondus. Previous step ou le déplacement du curseur vers l’arrière restaure ce point ; avancer le curseur joue les étapes successives. Restart demande le point 0 et réinitialise les acteurs de la chronologie, les probabilités planifiées et les actualités référencées.

point avant l’instant → préparation → principal → changements directs
reculer : suspendre les vagues 2L → comparer le point au graphe courant
          → supprimer les nœuds/arêtes ultérieurs → restaurer les éléments modifiés/manquants
          → notifier les vues et inverser les trajectoires → reprendre 2L

Utilisez un espace de connaissance réservé à la démonstration. Reculer peut aussi annuler les modifications du graphe apportées par d’autres utilisateurs après le point de restauration. Ces points disparaissent à l’arrêt du serveur : une étape antérieure ne peut alors plus être restaurée, et Restart se limite aux changements gérés par la chronologie elle-même. Cette restauration du graphe n’est ni une sauvegarde durable ni une compensation des actions externes, de l’exécution des workflows, des historiques capteurs ou des bases de séries temporelles. Le service renvoie remainingDifferences ; la restauration ne garantit pas un retour atomique ou identique octet par octet.

Voir le parcours Henri au barbecue revu pour le retour en arrière et les incidents du Parc des Princes pour les actualités référencées et les tâches humaines.

04

Raconter le scénario sans changer ses faits

La vue STORY peut demander un récit anglais ou français au fournisseur d’IA configuré pour le projet. Les consignes d’auteur sont limitées à 1 000 caractères. Elles orientent le ton et les points à souligner, mais les identifiants d’événement et la chronologie restent contraints. Le texte des messages existants est conservé ; le narrateur peut compléter les messages laissés vides. La description d’une actualité est transmise au narrateur comme contexte d’auteur, et les valeurs de capteur planifiées sont racontées comme des mesures (valeur lue, état basculé, porteur se déplaçant vers un lieu). Un récit déjà écrit dans l’autre langue peut être envoyé avec translationOf : le narrateur le traduit alors segment par segment, en conservant groupes, dates et identifiants d’événement, et traduit aussi les consignes.

Le navigateur valide la couverture, l’ordre des groupes, les dates et les identifiants avant d’appliquer le résultat. Le récit enregistré possède une empreinte des éléments significatifs de la chronologie, y compris les photos : modifier le plan peut rendre le récit périmé. Relisez le texte avant une démonstration ; la validation structurelle ne garantit pas l’exactitude de chaque phrase. Génération et description de photos peuvent appeler un fournisseur externe payant.

L’adaptateur narratif retire les métadonnées techniques des capteurs et règles CEP et emploie des identifiants d’événement temporaires. C’est une minimisation des données, pas une anonymisation : texte, noms et images fournis peuvent rester sensibles. Voir les assistants IA.

05

Distinguer événements prévus et faits observés

r-iose propose une chronologie d’observation en lecture seule, alimentée par les événements reçus des capteurs et les notifications de gouvernance. Elle restaure les preuves depuis SensorManager et KnowledgeHistory, sans prendre le plan du simulateur pour une preuve d’occurrence. Occurred at conserve la date du scénario dans les notifications de création CEP et de suppression.

SensorManager conserve jusqu’à 300 messages reçus par capteur pendant sa durée de vie courante. L’observateur rapproche les identifiants d’événement des preuves CEP, des actualités générées et des photos réflexes. Les prédictions ML non validées ne comptent pas comme observations confirmées. Effacer la chronologie efface la vue, pas les enregistrements serveur ; redémarrer le gestionnaire ne restaure pas une ancienne exécution depuis le stockage du navigateur.

Un échec du fournisseur ML n’est pas une prédiction réussie sans danger détecté. L’événement mlPredictErrorTopic transmet règle, capteur, événement source et erreur à r-iosemit et r-iota ; les autres règles peuvent continuer. Vérifiez la configuration du fournisseur avant de rejouer et ne publiez pas de diagnostics contenant des données sensibles.

Poursuivez dans r-iota pour qualifier les alertes, valider les prédictions, déduire une réponse et la superviser. Émission, interprétation, validation experte et résolution sont des étapes distinctes.

06

Cas d’usage existants et captures historiques

Le schéma stocke désormais timeAxis, instant et éventuellement storyJson, à la place de numberOfTimeSteps et timeBetweenSteps. Quatre paquets commités fournissent désormais un scénario de jeu dans l’arborescence décrite ci-dessous : IMT Albi Crisis et IMT Albi Healthcare (Default Game Scenario), Crisis Event Show — Parc des Princes (Full scenario) et Barbecue (Henri barbecue story). Les anciens scénarios de jeu empaquetés ont été retirés d’Albi, Cathedral Albi, Nantes Macro, Golfech, RealWorld, Skateboard Logistics et Toulouse PrisonBreak ; leurs modèles de projet restent des ressources distinctes.

Un export de projet range chaque scénario dans son propre dossier, game_scenarios/<Nom_du_scenario>/, contenant le XML du scénario, un dossier datasets/ et un dossier media/ pour les images des actualités référencées et des messages planifiés, tous référencés relativement (./datasets/…, ./media/…). À l’import, les médias sont téléversés dans l’espace de connaissance ; les scénarios qui ne désignent un jeu de données que par son nom restent lus.

Les anciennes captures et démonstrations guidées sont conservées comme exemples historiques. Noms de scénario, numéros d’étape et écrans peuvent différer de l’éditeur actuel ; préparez une chronologie datée sans supposer la présence de Default_with10steps. Le parcours Fire at Albi Cathedral reste un exemple de construction de modèle et de tâches humaines, pas un nouveau module Maven de cas d’usage standalone.

07

Implémentation et contrats

Les endpoints POST authentifiés /gameMaster de r-iosemit créent, modifient, sauvegardent, sélectionnent, listent et suppriment les scénarios. Le JSON utilise des dates ISO locales ; les pièces jointes sont des valeurs base64, pas des objets de flux Java. Voir la référence API et l’architecture de simulation.