Tunnel

Tunnel

Ein Tunnel ist eine Reise, die in Schritte unterteilt ist – eine Anmeldung, ein Checkout, eine Verlängerung – deren Weg sich je nach den Antworten des Besuchers ändern kann. Das Paket merkt sich, wo jeder Besucher steht, lässt sie durch die Schritte gehen, die sie sehen können, und schickt sie dorthin zurück, wo sie hingehören, wenn sie versuchen, voranzuspringen.

Ein Baum von Cursorn

Ein Tunnel wird als Baum aufgebaut, nicht als Liste. Ein Schritt, der von zwei Stellen erreicht wird, ist zwei Cursors, jeder mit seinem eigenen Hash und seinen eigenen gespeicherten Werten: das ermöglicht es einem Ast, Schritte zu wachsen, die ein anderer nicht hat, und der Weg, den du gekommen bist, wird am Ende jedes Tunnels abgelesen.

Eine Sitzung in der Datenbank

Das Öffnen eines Tunnels erstellt eine Sitzung, die die Browsersitzung nur durch ihre ID kennt. Sie enthält die Werte, die die Schritte speichern, und läuft einen Tag nach dem letzten angezeigten Schritt ab – oder früher, wenn dieser Schritt danach fragt. Abgelaufene Sitzungen werden vom Scheduler alle 15 Minuten gelöscht; abgeschlossene und ausstehende werden behalten.

Wohin der Besucher gehen kann

Jeder Schritt entscheidet, ob er angezeigt werden kann und wohin der Besucher andernfalls geschickt wird. Links und Schaltflächen werden nach den gleichen Regeln gezeichnet, sodass ein Link niemals zu einer Umleitung zurückführt: kein nächster Button, wo der Weg sich teilt, kein Weg zurück über eine Zahlung, nichts, zu dem man in einer geschlossenen Sitzung zurückkehren könnte.

Was man beim Gehen betrachten sollte

Der Stepper Wo du stehst, was dahinter liegt, was voraus ist. Eine Lücke markiert, wo der Weg von einer noch nicht getroffenen Wahl abhängt.
Hinter diesem Schritt Unter jedem Schritt, was die Engine gerade getan hat, und ihr Zustand: der Cursor, wie der Schritt abgeschlossen wird, die Sitzung und wann sie abläuft.
Das Entwicklertool und die Shell Der Tunnels-Reiter des Entwicklertools zeichnet die Sitzung dieses Browsers auf der Karte seines Tunnels; bin/console tunnels:info tut dasselbe von einer Shell.