3 Stimmen

Guter Leitfaden für die Gestaltung von Event-Kalendern / Terminplanung?

In einer Anwendung, die ich entwerfe, muss der Benutzer in der Lage sein, ziemlich komplexe Ereignisplanung (kontinuierlicher Zeitblock vs. tägliche Zeitblöcke, Ausnahmedatum/-zeiten, Wiederholungsmuster usw.) anzugeben.

Weiß jemand eine gute Designseite für so etwas online? Zum Beispiel war ich sehr beeindruckt von dieser Seite Beschreibung, wie man Datenbank-Audit-Trail macht, und würde gerne etwas Ähnliches haben.

Aktuelle Überlegungen

  1. Meine Datenbank würde die folgenden Tabellen enthalten: Events und ScheduleItems
    • Die Beziehung wäre Events {1 -- 0..*} ScheduleItems
    • Events würden die folgenden Spalten haben: eventId, schedulePattern
    • ScheduleItems würden die folgenden Spalten haben: eventId, startDateTime, endDateTime
  2. Die Steuerelemente der Benutzeroberfläche würden es dem Benutzer ermöglichen, allgemeine Regeln anzugeben (täglich/kontinuierlich, enthält/exkludiert Wochenenden, Start-/Enddatum/-zeit usw.). Wenn sie mit den vorhandenen Steuerelementen nicht zufrieden sind, könnten sie dann entscheiden, die generierten "Zeitblöcke" anzuzeigen und manuell anzupassen
  3. Beim Speichern des Ereignisplans...
    • Wenn nur die bereitgestellten Steuerelemente verwendet wurden (ohne Anpassung), würde ich ihre Auswahl als Muster in der Events-Tabelle speichern (d.h. "sd:2010-04-28;st:09:20:00;ed:2010-05-12;et:17:20:00;r:2w[M-Th];z:EST" usw.)
    • Wenn der Benutzer die generierten Zeitblöcke manuell angepasst hat, würde ich jeden einzelnen Zeitblock innerhalb der ScheduleItems-Tabelle speichern und Events.schedulePattern einen speziellen Code geben ("MANUAL" oder etwas Ähnliches).

Vor- und Nachteile

Ich sollte in der Lage sein, > 90% der Ereignisse direkt durch das Musterfeld zu speichern und alle anderen Randfälle durch die "brute-force" ScheduleItems-Tabelle zu handhaben. Da einige der behandelten Fälle Ereignisse umfassen können, die über Monate hinweg stattfinden (was sonst in einer sehr großen Anzahl von Zeitblöcken resultieren würde), ist es recht attraktiv, es in einer Zeile zu haben.

Nachteile

Dies ist eine ziemlich komplexe Lösung; jedes andere System, das diese Daten benötigt, müsste in der Lage sein, das schedulePattern auch zu parsen und zu wissen, wann ScheduleItems abgerufen werden müssen.

1voto

Mike Lue Punkte 819

Das "schedulePattern" verwendet auf reife Weise Cron-Format, um den Zeitplan der Benutzer zu speichern, eine gute Idee zur Ausführung von Aufgaben.

Dieses Format ist einfach, aber anspruchsvoll. In einer relationalen Datenbank gibt es einige Leistungsvorteile, wenn Sie jedes "Eintrag" von Cron in eine Spalte der Tabelle mit geeigneten Indizes trennen.

Der Aufwand liegt jedoch in der Übersetzung zwischen diesem Format und der Benutzeroberfläche. Und die Rohdaten, zu denen die Benutzereingabe ursprünglich aufgezeichnet werden soll.

Ich würde zwei Arten von Tabellen entwerfen, eine für die Rohdateneingabe durch den Benutzer, eine andere für die Ausführungsaufgabe für den Zeitplan.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X