Verzweigungen aussagenlogisch erfassen?
*Markus
- sonstiges
0 Der Martin0 Tim Tepaße0 *Markus
Hallo,
durch eine komplizierte Abfolgelogik einer Seite, die ich gerade mit Java und Tomcat erstelle, stoße ich immer wieder auf logisch widersprüchliche Verzweigungen, zB
Wenn d. User zum allerersten Mal auf die Seite kommt, soll die "Willkommen"-Seite geladen werden.
Hat der User sich aber bereits registriert, soll er sich gleich einloggen, aber auch nur dann, wenn er es beim Anmelden oder letzten Einloggen explizit angab.
Schaltet der User aus welchen Gründen auch immer Cookies plötzlich aus, soll er ausgeloggt werden und auf der "Willkommen"-Seite landen.
Bricht der User den Registrierungsvorgang ab zB mit den Back-Buttons, darf er trotzdem nicht in interne Seiten gelangen (zB durch einen Folgefehler von gesetzten Cookies oder initialisierten Sessions). Er darf sich wiederum nur auf der Willkommen-Seite bewegen.
usw usw ....
Eigentlich geht das noch ein paar Mal so weiter, wodurch es anfängt, richtig kompliziert zu werden, da man jetzt noch Tomcateigenheiten beachten muss, zB
Eine Session gibt es erst, nachdem die 1. Seite geladen wurde. Somit würde auf ein if (session == null) ab dem 2. Mal anders reagiert werden. Hinzu kommt das Logincookie, das einem die Möglichkeit geben soll, automatisch einzuloggen, wenn man bereits Mitglied ist. Jetzt muss man schon auf zwei Cookies je nach Seite und Reihenfolge der Seitenaufrufe unterschiedlich reagieren.
Wäre es ev. möglich, jedes Verhalten aussagenlogisch so zu erfassen und auf das Ergebnis herunterzubrechen, sodass man im Endeffekt weiß, wie man wann welche Cookies erstellen oder abfragen muss?
Wie könnte ich da vorgehen?
Markus
Hallo Markus,
[komplexes Szenario]
Wäre es ev. möglich, jedes Verhalten aussagenlogisch so zu erfassen und auf das Ergebnis herunterzubrechen, sodass man im Endeffekt weiß, wie man wann welche Cookies erstellen oder abfragen muss?
ich habe dein Problem vermutlich noch nicht in seiner ganzen Tragweite erfasst - muss ich aber wahrscheinlich auch nicht. Anhand deiner Beschreibung würde ich aber spontan versuchen, das gesamte Verhalten in Form einer State Machine zu realisieren.
Du hast einen Zustand, der durch eine Reihe von einfachen Aussagen beschrieben wird (User ist registriert, User ist eingeloggt, Session existiert, Session-Cookie liegt vor, ...). Darüber hinaus gibt es bei jedem Request eine Reihe weiterer Bedingungen, und aus den bisherigen sowie den zusätzlichen Bedingungen ergibt sich ein neuer Zustand.
Hilft dir der Gedanke weiter?
So long,
Martin
Hallo,
Anhand deiner Beschreibung würde ich aber spontan versuchen, das gesamte Verhalten in Form einer State Machine zu realisieren.
Diese reduzierte State-Maschine könnte man sich gut in einem Entscheidungsdiagramm zusammenkritzeln; so etwas hilft oft, um sich über die vielen Möglichkeiten klar zu werden, weil man sich immer nur über die nächsten Schritte klar werden muß.
Tim
Hallo,
so ähnlich stellte ich es mir auch vor. Bisher bin ich mit meiner Lösung aber noch nicht zufrieden. Ich habe beschlossen, dass ich fürs erste andere Logiken der Seite implementiere, wodurch sich vielleicht noch ein paar Änderungen ergeben.
Markus