Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wiederholungsaufgabe wie speichern ? (https://www.delphipraxis.net/178151-wiederholungsaufgabe-wie-speichern.html)

RWarnecke 19. Dez 2013 19:30

Wiederholungsaufgabe wie speichern ?
 
Hallo zusammen,

folgende Situation. Ich kann im Programm eine Aufgabe definieren, die sich über einen bestimmten Zeitraum immer zu einem bestimmten Zeitpunkt wiederholen soll. Welche Daten würdet Ihr in einer Datenbank speichern ?

Ich kann mich zwischen diesen beiden Antworten nicht entscheiden :
  1. Die Aufgabe, das Startdatum, die Dauer und den Zeitpunkt der Wiederholung speichern und dann jeden Tag berechnen, ob die Aufgabe dran ist.
  2. Die Aufgabe in der Anzahl der Wiederholungen als einzelnen Datensatz speichern.

Was haltet Ihr für sinnvoller ?

Es geht hier nur um die Daten, nicht darum wie ich die Daten in eine Datenbanktabelle bringe.

sx2008 19. Dez 2013 23:42

AW: Wiederholungsaufgabe wie speichern ?
 
Eigentlich brauchst du doch beide Varianten also sowohl Einzeltermine als auch Serientermine.
Ich würde beide Varianten in der gleichen Tabelle speichern und damit die Daten leicht denormalisiert abspeichern.

JobIdRepeatModeStartDateStartTimeRepeatIntervalLastActionComment
101024.12.201318:00:00  Einzeltermin
105101.01.201000:00:001y01.01.2013 00:00:03Serientermin
100-119.12.201315:00:30  inaktiver Termin
RepeatMode steuert die Art des Termin-Eintrags.
LastAction ist ein kleiner Bonus damit man sieht wann die Aktion zum letzten Mal ausgeführt wurde.

Volker Z. 20. Dez 2013 01:34

AW: Wiederholungsaufgabe wie speichern ?
 
Hallo,

ist eine interessante Frage, die so einfach wohl nicht zu beantworten ist - zumindest mit den knappen Angaben. Beide Varianten haben in einem bestimmten Kontext ihren eigenen Charme.

Wenn einen Aufgabe (mit Wiederholungen) definiert und gespeichert wird, im Anschluss aber nicht mehr geändert werden kann - oder darf -, dann ist die Variante 2 sicherlich die einfachere Lösung.

Sollen jedoch nachträgliche Änderungen am Wiederholungsintervall, das Löschen einer oder einzelner (wiederholten) Aufgaben(intervallen) möglich sein, o. ä., dann wird es vermutlich schwierig werden das in Variante 2 einfach abzubilden.

Daher würde ich eher zu Variante 1 tendieren, (nur) die wesemtlichen Attribute der Aufgabe in einer Tabelle halten (eine Aufgabe ist eine Aufgabe, egal wie oft wiederholt) und eventuelle Wiederholungen in einer zweiten Tabelle halten.

Gruß

Furtbichler 20. Dez 2013 06:46

AW: Wiederholungsaufgabe wie speichern ?
 
@sx2008: Anstatt 'RepeatMode' vielleicht 'NumberOfRepetitions'. Dort stellt man ein, wie oft der Termin wiederholt werden soll.
Bei jeder Wiederholung wird 1 abgezogen, bis 0 rauskommt (oder -1, wie man will). Es reicht ja, bei beliebig oft zu wiederholenden Terminen ("Schahatz, bringst Du den Müll runter?") maxint einzutragen. Das wird -selbst bei glücklichen Ehen- ausreichen.

Weiterhin als Idee: Der geplante nächste Termin 'NextPlannedAction' vormerken. Dieser kann vom Benutzer angepasst werden. Der Scheduler prüft dann nur, welche nächste geplante Aktionen durchgeführt werden. Das kann man natürlich auch ausrechnen, aber dann gibt es diese Flexibilität nicht.

Beim Intervall würde ich noch Dinge einbauen, wie "Am 1. des Monats", "Jeden 2.Dienstag" usw. Das wird in der Codierung eub wenig umständlich und in der Berechnung des nächsten Termins kniffelig, aber da wir die 'NextPlannedAction' in der Tabelle halten, ist das wurscht. Der Scheduler jedenfalls (oder der Kalender) glotzt ja eh nur auf 'NextPlannedAction'.

Mikkey 20. Dez 2013 06:48

AW: Wiederholungsaufgabe wie speichern ?
 
Ich würde das Prinzip beim Wecker von Android abschauen:

Startdatum, Enddatum, Uhrzeit Typ (einmalig, wiederholt), Wochentage

Nach einem aufgetretenen Ereignis das nächste Ereignis ermitteln, dann muss laufend(!?) nur jeweils mit einem Termin verglichen werden.

Sir Rufo 20. Dez 2013 08:52

AW: Wiederholungsaufgabe wie speichern ?
 
Ich würde mir mal "Geplante Tasks" bei Windows anschauen, dort finden sich bestimmt jede Menge Anregungen ;)

RWarnecke 20. Dez 2013 09:21

AW: Wiederholungsaufgabe wie speichern ?
 
Hallo zusammen,

danke erstmal für die vielen Antworten. Ich habe mir anhand den Antworten mal grob die folgenden Punkte zusammengestellt für das Speichern :
  • Die Aufgabe
  • Das Startdatum
  • in welchen Rythmus die Aufgabe wiederholt werden soll
  • der nächste Ausführungstermin
  • ob der Job aktiv oder inaktiv ist
Was ist eure Meinung zu den Punkten ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz