A scenario is not always a single line. At a fork, r-iosemit reads what r-io suite knows of the field and goes on with the matching track: if the barbecue has been put out, the child does not get burned. The story follows what really happened, without being told what r-iota decided.
01
A fork, its tracks and Otherwise
A fork has a name, a date and tracks. Each track has a name, a color, conditions, and plans its own dates after the date of the fork, played with those of the trunk; it may fork again. Once every step up to the date of the fork is played, r-iosemit reads the knowledge space and goes on with the first track whose condition holds, tried in order; the last track, Otherwise, is taken when none does. A track still to be completed is never taken.
02
What a condition reads
State of a resource: its current state (Off or On for a barbecue, Open or Closed for a pool, Wet, Bradycardia or Dead for a person).
Position of a resource: inside or outside a good drawn by a polygon (a swimming pool, a building).
Rows are joined by and or or. Forks saved earlier may also read the status of an actuality or a risk, the end of a task or the value of a sensor; these rows are kept and still read, but no longer offered. The reading is the one any observer of the field could make: nothing in the knowledge space knows the simulator, or that a fork was met.
03
The scenario as played
Which track each fork took is a choice of the playback, kept apart from the scenario. The scenario as played is the trunk with the chosen tracks: it is what is compiled into the DATA pairs, what STORY narrates and what Restart prepares. In TIMELINE, the Tracks view shows the story divided at each fork, every track visible, and the Flat view the way the playback takes. Played step by step (Discrete), the fork is read when its date is reached.
04
Switching tracks on a task effect
A task done on the field can change what a fork read: a child taken out of the pool, a barbecue put out. When a simulated task sends its effect, the forks already met that read what the task acted on are read again, the first one met first; if another track holds now, the playback leaves its track for that one from the date of the effect, and what the track left still planned is not played. Under the tracks, the row Expected effects from the tasks draws each effect (a move, a curve, a point), linked to the track it made the story take, and the row Detected problems draws the risks and actualities r-io suite detected. Both are kept with the run.
05
Authoring forks
A fork is added from the planning box (Add a fork…, in the track being edited) or edited from its chip: name, date, tracks reordered, rows of conditions, a track added or removed; a fork left with a single track disappears. Forks can also be proposed: on a value curve that crosses CEP thresholds, or with Suggest forks on a run, a fork per actuality or risk that appeared, with a track named after it and an empty track for what could happen instead. Details: Scenario timelines › authoring tools.
06
Use case: Barbecue
The Henri Barbecue Story forks three times, each fork inside a track of the previous one: at 09:02:55 on the state of the barbecue, at 09:03:13 on the state of the pool, at 09:03:54 on whether Henri is inside the pool. Without supervision the barbecue is on, the pool open and Henri stays in the water. In auto mode, Julie gets Henri out: the heart fork switches to Otherwise. With extrapolation, Paul puts the barbecue out before the first fork, which takes Otherwise: Henri never gets burned.
The tree of the scenario: the trunk, then three nested forks (diamonds), each with its track and its Otherwise track.09:04:13 - Julie at the edge of the pool; Henri, still in the water, has bradycardia. Once she gets him out, the heart fork switches to Otherwise.After 09:02:24 - the barbecue is Off: no more flames; Paul stands beside it, and Henri is safe.
r-iosemit plays the field, not r-io suite. No r-io suite application calls it or knows that it exists: for r-io suite, every event it plays is a real one. It reads the knowledge base of r-io suite (states, positions, alerts, risks, tasks) to choose its tracks and to record its runs, without ever writing what it reads. It acts only through the channels of the field: the sensors (their datasets, planned values, GPS moves and forecasts published as a provider would), the messaging sensors, the human-task service for the simulated tasks, and the clock API of the use case once the operator opened it in r-ioga (Edit project › Use case clock › Allow remote clock control).
A few authoring items act on the knowledge space directly, and the dialogs say so: a planned risk level (like the Potentialities Management slider), a referenced actuality (a FREEZE actuality made ACTIVE, or a clone of a REFERENCE one), Previous step and Restart (they restore a checkpoint of the knowledge space kept by the server) and Replay (it writes the supervision settings of a run back, after a warning).
Un scénario n’est pas toujours une seule ligne. À une fourche, r-iosemit lit ce que r-io suite sait du terrain et continue avec la piste correspondante : si le barbecue a été éteint, l’enfant ne se brûle pas. L’histoire suit ce qui s’est vraiment passé, sans qu’on lui dise ce qu’a décidé r-iota.
01
Une fourche, ses pistes et Otherwise
Une fourche a un nom, une date et des pistes. Chaque piste a un nom, une couleur, des conditions, et planifie ses propres dates après la date de la fourche, jouées avec celles du tronc ; elle peut bifurquer à son tour. Une fois toutes les étapes jusqu’à la date de la fourche jouées, r-iosemit lit l’espace de connaissances et continue avec la première piste dont la condition est vraie, essayées dans l’ordre ; la dernière piste, Otherwise, est prise quand aucune ne l’est. Une piste encore à compléter n’est jamais prise.
02
Ce que lit une condition
État d’une ressource : son état courant (Off ou On pour un barbecue, Open ou Closed pour une piscine, Wet, Bradycardia ou Dead pour une personne).
Position d’une ressource : dans ou hors d’un bien dessiné par un polygone (une piscine, un bâtiment).
Les lignes se combinent par and ou or. Des fourches sauvegardées plus tôt peuvent aussi lire le statut d’une actualité ou d’un risque, la fin d’une tâche ou la valeur d’un capteur ; ces lignes sont gardées et toujours lues, mais ne sont plus proposées. La lecture est celle que pourrait faire tout observateur du terrain : rien dans l’espace de connaissances ne connaît le simulateur, ni ne sait qu’une fourche a été rencontrée.
03
Le scénario tel qu’il est joué
La piste prise à chaque fourche est un choix de la lecture, gardé à part du scénario. Le scénario tel qu’il est joué est le tronc avec les pistes choisies : c’est lui qui est compilé dans les paires DATA, que raconte STORY et que prépare Restart. Dans TIMELINE, la vue Tracks montre l’histoire divisée à chaque fourche, toutes les pistes visibles, et la vue Flat le chemin que prend la lecture. Jouée pas à pas (Discrete), la fourche est lue quand sa date est atteinte.
04
Changer de piste sur l’effet d’une tâche
Une tâche faite sur le terrain peut changer ce qu’une fourche a lu : un enfant sorti de la piscine, un barbecue éteint. Quand une tâche simulée envoie son effet, les fourches déjà rencontrées qui lisent ce sur quoi la tâche a agi sont relues, la première rencontrée d’abord ; si une autre piste est vraie maintenant, la lecture quitte sa piste pour celle-ci à partir de la date de l’effet, et ce que la piste quittée planifiait encore n’est pas joué. Sous les pistes, la ligne Expected effects from the tasks trace chaque effet (un déplacement, une courbe, un point), relié à la piste qu’il a fait prendre, et la ligne Detected problems trace les risques et actualités que r-io suite a détectés. Les deux sont gardées avec le run.
05
Construire des fourches
Une fourche s’ajoute depuis la boîte de planification (Add a fork…, dans la piste en cours de modification) ou se modifie depuis sa pastille : nom, date, pistes réordonnées, lignes de conditions, piste ajoutée ou retirée ; une fourche réduite à une seule piste disparaît. Des fourches peuvent aussi être proposées : sur une courbe de valeurs qui franchit des seuils CEP, ou avec Suggest forks sur un run, une fourche par actualité ou risque apparu, avec une piste à son nom et une piste vide pour ce qui pourrait arriver à la place. Détails : Chronologies de scénario › outils de construction.
06
Cas d’usage : Barbecue
Le scénario Henri Barbecue Story bifurque trois fois, chaque fourche dans une piste de la précédente : à 09:02:55 sur l’état du barbecue, à 09:03:13 sur l’état de la piscine, à 09:03:54 sur la présence d’Henri dans la piscine. Sans supervision, le barbecue est allumé, la piscine ouverte et Henri reste dans l’eau. En mode auto, Julie sort Henri : la fourche du cœur passe à Otherwise. Avec extrapolation, Paul éteint le barbecue avant la première fourche, qui prend Otherwise : Henri ne se brûle jamais.
L’arbre du scénario : le tronc, puis trois fourches imbriquées (losanges), chacune avec sa piste et sa piste Otherwise.09:04:13 - Julie au bord de la piscine ; Henri, encore dans l’eau, est en bradycardie. Dès qu’elle le sort, la fourche du cœur passe à Otherwise.Après 09:02:24 - le barbecue est Off : plus de flammes ; Paul est à côté, et Henri est sain et sauf.
r-iosemit joue le terrain, pas r-io suite. Aucune application r-io suite ne l’appelle ni ne sait qu’il existe : pour r-io suite, chaque événement qu’il joue est réel. Il lit la base de connaissances de r-io suite (états, positions, alertes, risques, tâches) pour choisir ses pistes et enregistrer ses runs, sans jamais écrire ce qu’il lit. Il agit seulement par les canaux du terrain : les capteurs (leurs jeux de données, valeurs planifiées, déplacements GPS et prévisions publiées comme par un fournisseur), les capteurs de messagerie, le service des tâches humaines pour les tâches simulées, et l’API d’horloge du cas d’usage une fois que l’opérateur l’a ouverte dans r-ioga (Edit project › Use case clock › Allow remote clock control).
Quelques éléments de construction agissent directement sur l’espace de connaissances, et les boîtes de dialogue le disent : un niveau de risque planifié (comme le curseur de Potentialities Management), une actualité référencée (une actualité FREEZE rendue ACTIVE, ou un clone d’une actualité REFERENCE), Previous step et Restart (ils restaurent un point de reprise de l’espace de connaissances gardé par le serveur) et Replay (il réécrit les réglages de supervision d’un run, après un avertissement).