********************************** pit-FMDB Erinnerungen (Alerts) ********************************** Stand: 11.06.2019 Gert Eiteljörge !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Wichtig !! !! !! !! Damit der Anwender keinen Termin verpasst, darf er Erinnerungen nicht schließen. !! !! Stattdessen sollte er mit der Funktion "Erneut erinnern" einen neuen Erinnerungs- !! !! termin einstellen. !! !! !! !! Eine Erinnerung sollte nur geschlossen werden, wenn es den Termin nicht mehr gibt !! !! oder die Aufgabe erledigt ist. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Beschreibung ============ Generell -------- Das Erinnerungssystem erstellt aus Objekten der Datenbank Erinnerungen und speichert sie benutzerspezifisch in die Datei Alerts.vsrl (bei älteren Version in Alerts.srl). In dieser Datei wird auch der Zeitpunkt der letzten Datenbankabfrage gespeichert. Die Erinnerungen werden dann in einem Dialog angezeigt und können vom Anwender angesehen und bearbeitet werden. Der Dialog kann dann geschlossen werden und wird unter bestimmten Bedingungen automatisch wieder angezeigt. Filter ------ Die Datenbankabfrage filtert Objekt durch einen konfigurierten externen Filter sowie ein vom Erinnerungssystem internen Filters. Beide Filter werden UND-verknüpft. Der interne Filter hat folgenden Aufbau: ( $ATTRIBUTE_TIMEWINDOW > UpperTimeLimitOfLastScan AND $ATTRIBUTE_TIMEWINDOW <= Now + $ADD_MINUTES ) OR :ModificationDate > LastScanTime UpperTimeLimitOfLastScan = (Now + $ADD_MINUTES) vom letzten Scan. Der interne Filter sucht nur nach Objekten deren Erinnerungszeitattribut nach der letzten Datenbankabfrage und nicht später als dem aktuellem Zeitpunkt plus die konfigurierten Minuten liegt. Dies ist also ein definiertes Zeitfenster. Außerdem werden alle Objekte gefunden, die seit der letzten Datenbankabfrage geändert wurden (optional). Erinnerungsdialog ----------------- Die Erinnerungen werden in einem Dialog zu folgenden Zeitpunkten angezeigt: * Die Datenbankabfrage hat neue Erinnerungen erstellt. * Die Datenbankabfrage hat keine neue Erinnerungen erstellt, aber es ist SHOW_ALWAY=TRUE konfiguriert. * Der Zeitpunkt, wann eine Erinnerung erneut angezeigt werden soll, ist erreicht. * Der Anwender öffnet den Dialog manuell. Der Dialog wird automatisch geschlossen, wenn keine Erinnerungen anzuzeigen sind. Erinnerungen bearbeiten ----------------------- Der Dialog zeigt alle Erinnerungen an, wie sie von der Datenbank eingelesen und in die Datei Alerts.vsrl gespeichert wurden. Der Anwender hat nun folgende Möglichkeiten: * Den Dialog einfach zu schließen. Die Erinnerungen werden dadurch nicht verändert. * Eine einzelne Erinnerung für "Erneut erinnern" konfigurieren. Diese Erinnerung wird ausgeblendet und erst wieder gezeigt, wenn der ausgewählte Zeitpunkt erreicht ist. * Eine einzelne Erinnerung schließen. Die Erinnerung wird gelöscht und ist für immer weg. * Alle Erinnerungen schließen. Alle angezeigten Erinnerungen werden gelöscht und sind für immer weg. Die unsichtbaren Erinnerungen, welche nach Ablauf einer Zeit erneut gemeldet werden, werden nicht gelöscht. * Aktualisieren. Beim Auslösen dieser Funktion wird zu einem die Datei Alerts.vsrl erneut eingelesen und dann auch einen Datenbankabfrage durchgeführt. Damit der Anwender seine Termine nicht vergisst, sollte er für eine Erinnerung solange "Erneut erinnern" wählen bis sein Termin erreicht bzw. die Aufgabe erledigt ist. Alternativ kann auch SHOW_ALWAY auf TRUE konfiguriert werden. Dann wird der Dialog in regelmäßigen Abständen angezeigt. Der Anwender kann dann selber prüfen, ob ein Termin fällig ist. In dem Fall müsste er nicht unbedingt "Erneut erinnern" anwenden. Der Anwender sollte nur eine Erinnerung schließen, wenn die Erinnerung nicht mehr notwendig ist. Eine geschlossene Erinnerung wird nicht wieder angezeigt. Geschlossene Erinnerungen können nur wieder angezeigt werden, wenn die Datei Alerts.vsrl gelöscht wird. Dann werden aber für alle Objekt, die der externe Filter findet, Erinnerungen erstellt, also auch uralten Erinnerungen. Allerdings lassen sich diese leicht schließen, wenn man nach Fälligkeit sortiert und dann die alten Erinnerungen markiert und schließt. Konfiguration ============= Das Erinnerungsystem wird durch Einträge in der pit-Registry konfiguriert. Nicht klassenspezifische Parameter ---------------------------------- Die nicht klassenspezifischen Konfigurationsparameter sind: Registry-Schlüssel: System\Config\Alert Registry-Wert Datentyp Gültige Werte ------------------------------------------------------- b_DisableAlertRemoving Bool TRUE / FALSE b_ForceScanOnOpenDialog Bool TRUE / FALSE b_DisableAlertRemoving (optional) --------------------------------- Bei Wert = True werden alle Steuerelemente im Dialog deaktiviert, welche von der Schließung einer Erinnerung betroffen sind. Damit lassen sich keine Erinnerungen schließen und auch die Funktion "Erneut erinnern" nicht ausführen. Diese Einstellung ist global und gilt somit für alle Klassen, unabhängig davon, wie der Parameter CAN_CLOSE konfiguriert ist. Der Defaultwert ist False. b_ForceScanOnOpenDialog (optional) ---------------------------------- Bei Wert = True wird eine Datenbankabfrage durchgeführt, wenn der Dialog erneut angezeigt wird, z.B. durch den Anwender und der Funktion Erinnerungsfenster zeigen". Normalerweise wird eine Datenbankabfrage nur ausgeführt, wenn das Intervall abgelaufen ist oder der Anwender die Funktion "Aktualisieren" auslöst. Der Defaultwert ist False. Klassenspezifische Parameter ---------------------------- Erinnerungen könne für verschiedene Klassen konfiguriert werden. Für jede Klasse wird ein Registry-Schlüssel mit einem beliebigen Namen angelegt. Die klassenspezifischen Konfigurationsparameter sind: Registry-Schlüssel: System\Config\Alert\ Name Registry-Wert Datentyp Gültige Werte ------------------------------------------------------- ADD_MINUTES Integer Anzahl Minuten ATTRIBUTE_DISPLAY_ID String Name vom Komplexattribut ATTRIBUTE_PRIORITY String Name vom Komplexattribut ATTRIBUTE_REFERENCETIME String Name vom Komplexattribut ATTRIBUTE_STATUS String Name vom Komplexattribut ATTRIBUTE_TIMEWINDOW String Name vom Attribut ATTRIBUTE_TYPE String Name vom Komplexattribut CAN_CLOSE Bool TRUE / FALSE CLASS String Name der Klasse DESCRIPTION_TEXT String Ausführliche Beschreibung FILTER String Dateipfad einer Filterdatei relative zu system\Filter\System FILTER_IS_MANDANTINDEPENDENT Bool TRUE / FALSE FILTER_IS_SCOPEINDEPENDENT Bool TRUE / FALSE IMAGE String Dateipfad einer Bilddatei INCLUDE_MODIFIED_OBJECTS Bool TRUE / FALSE INTERVAL Integer Wie INTERVALL (ab Revision 5314) INTERVALL Integer Anzahl Minuten PRIORITY_LEVEL Integer 1, 2 oder 3 PRIVILEGE String Name vom Recht SCAN_ALL_READABLE_CLIENTS Bool TRUE / FALSE SCAN_ALL_READABLE_SCOPES Bool TRUE / FALSE SHORT_TEXT String Kurze Beschreibung SHOW_ALWAYS Bool TRUE / FALSE TYPE String MSG_PER_ENTITY, MSG_PER_ALERTCLASS ADD_MINUTES ----------- Anzahl Minuten, die zur aktuellen Zeit hinzu addiert werden und damit den obere Wert des Zeitfenster bestimmen. Siehe auch ATTRIBUTE_TIMEWINDOW. ATTRIBUTE_DISPLAY_ID (optional) ------------------------------- Der Name eines Komplexattributes. Wenn dieser Parameter konfiguriert ist, dann wird der Wert dieses Attributes in der Spalte "Id" angezeigt. Dieser Wert wird im Intervall, wie durch Parameter INTERVAL konfiguriert ist, aktualisiert. Die Spalte "Id" wird nur angezeigt, wenn für keine der Erinnerungsklassen dieser Parameter konfiguriert ist. ATTRIBUTE_PRIORITY (optional) ----------------------------- Der Name eines Komplexattributes. Wenn dieser Parameter konfiguriert ist, dann wird der Wert dieses Attributes in der Spalte "Priorität" angezeigt. Dieser Wert wird im Intervall, wie durch Parameter INTERVAL konfiguriert ist, aktualisiert. Die Spalte "Priorität" wird nur angezeigt, wenn für keine der Erinnerungsklassen dieser Parameter konfiguriert ist. ATTRIBUTE_REFERENCETIME (optional) ---------------------------------- Ist der Name eines Datum/Zeit Komplexattributes. Der Wert des Attributes wird als Fälligkeit im Dialog angezeigt. Wenn dieser Parameter nicht angegeben ist, so wird der Wert von dem Attribut genommen, welcher durch den Parameter ATTRIBUTE_TIMEWINDOW konfiguriert ist. Das ATTRIBUTE_REFERENCETIME ist z.B. hilfreich, wenn man für den Erinnerungszeitpunkt und die Fälligkeit 2 verschiedene Attribute nutzt, beispielsweise ein Erinnern_am Datum und ein Zu_erledigen_bis Datum. Hier kann man dann zur Ausgabe, d.h. zur Anzeige der Fälligkeit, das ATTRIBUTE_REFERENCETIME verwenden und zur Bestimmung des Erinnerungszeitpunktes das ATTRIBUTE_TIMEWINDOW. ATTRIBUTE_STATUS (optional) --------------------------- Der Name eines Komplexattributes. Wenn dieser Parameter konfiguriert ist, dann wird der Wert dieses Attributes in der Spalte "Status" angezeigt. Dieser Wert wird im Intervall, wie durch Parameter INTERVAL konfiguriert ist, aktualisiert. Die Spalte "Status" wird nur angezeigt, wenn für keine der Erinnerungsklassen dieser Parameter konfiguriert ist. ATTRIBUTE_TIMEWINDOW -------------------- Ist der Name eines Datum/Zeit Attributes der Erinnerungsklasse. Die Datenbankabfrage sucht nur Objekte, dessen Werte von diesem Attribut innerhalb des Zeitfensters liegen. Dieses Attribut wird vom internen Filter verwendet. Dieses Attribut ist nicht optional. Wenn Sie jedoch nur modifizierte Objekte filtern wollen, können Sie dieses Parameter das Attribut ModificationDate zuweisen. ATTRIBUTE_TYPE (optional) ------------------------- Der Name eines Komplexattributes. Der Wert dieses Attributes wird in der Spalte "Typ" angezeigt. Dieser Wert wird im Intervall, wie durch Parameter INTERVAL konfiguriert ist, aktualisiert. Wenn dieser Parameter nicht konfiguriert ist, dann wird der Anzeigename angezeigt, wie er in der Erinnerungsklasse konfiguriert ist. CAN_CLOSE (optional) -------------------- Wenn dieser Parameter TRUE ist, dann können die Erinnerungen nicht geschlossen werden. Auch die Funktion "Erneut erinnern" kann nicht verwendet werden. Die Erinnerungen bleiben für immer in der Liste. Diese Funktion soll verhindern, dass der Anwender wichtige Erinnerungen schließt und somit seinen Termin verpasst oder eine Aufgabe nicht erledigt. CLASS ----- Der Name der Klasse für die Erinnerungen erstellt werden sollen. Im Text wird diese Klasse als Erinnerungsklasse bezeichnet. DESCRIPTION_TEXT (optional) --------------------------- Ein mehrzeiliger bestimmter Text, welcher für eine Erinnerung im Dialogkopf angezeigt wird. Damit soll ausführlich beschrieben werden, um was für eine Art von Erinnerung es sich handelt, z.B. "Diese Aufgabe wurde von «ATTRIBUTE.CreationUser» erstellt". Der Text kann auch Datenbankattribute enthalten. Diese werden im Format «ATTRIBUTE.» eingefügt. Die doppelten öffnenden und schließenden Klammern sind notwendig. Anstelle von muss der Name des Attributes verwendet werden. Wenn dieser Parameter nicht konfiguriert ist, dann wird kein Text angezeigt. FILTER ------ Der Wert ist der relative Pfad einer Filterdatei (*.flt) ausgehend vom Verzeichnis ..\system\filter\system\. Dieser externe Filter wird bei der Datenbankabfrage mit dem internen Filter UND-verknüpft. Er hat die Aufgabe nur die Objekte auszuwählen, welche für die Erinnerungen und für den angemeldeten Benutzer relevant sind. Sollte der Filter auch über Zeiten filtern, dann ist darauf zu achten, dass es kein unteres Zeitlimit gibt, ansonsten werden möglicherweise nicht alle seit der letzten Datenbankabfrage geänderte Objekte gefunden. FILTER_IS_MANDANTINDEPENDENT (optional) --------------------------------------- Es wird kein Scan ausgeführt, wenn mehrere Mandanten aktiv sind und die Erinnerungsklasse mandantspezifisch ist. Der Scan wird trotzdem ausgeführt, wenn dieser Wert auf True konfiguriert wird. FILTER_IS_SCOPEINDEPENDENT (optional) ------------------------------------- Es wird kein Scan ausgeführt, wenn mehrere Scopes aktiv sind und die Erinnerungsklasse scope-spezifisch ist. Der Scan wird trotzdem ausgeführt, wenn dieser Wert auf True konfiguriert wird. IMAGE (optional) ---------------- Dateiname ohne Extension einer Bitmapdatei (*.bmp) im Verzeichnis "..\image". Diese Bitmap wird als Icon in der Spalte "Typ" angezeigt. Wenn dieser Parameter nicht konfiguriert ist, dann wird das Icon angezeigt, wie es in der Erinnerungsklasse konfiguriert ist. INCLUDE_MODIFIED_OBJECTS (optional) ----------------------------------- Bei Wert = True, wird der Erinnerungsdialog angezeigt, wenn das Objekt seid dem letzten Scan geändert wurde, egal welches Attribut. Dafür wird das Attribut ModificationDate verwendet. Bei Wert = False, werden geänderte Objekte nicht berücksichtigt. Der Standardwert ist True. INTERVAL -------- Ist der Poll-Intervall (in Minuten) nach dem das Programm regelmäßig in die Datenbank schaut um herauszubekommen, ob bereits neue Erinnerungen fällig sind. Dieses Intervall ist auch für die Funktion SHOW_ALWAYS relevant. Bei ältere Versionen heißt dieser Parameter INTERVALL, also mit zwei "L". Zur Kompatibilität unterstützen auch die neuen Versionen diesen Namen. PRIORITY_LEVEL (optional) ------------------------- Der Name eines Komplexattributes. Wenn dieser Parameter konfiguriert ist, dann wird der Wert dieses Attributes in der Spalte "Rang" angezeigt. Dieser Wert wird im Intervall, wie durch Parameter INTERVAL konfiguriert ist, aktualisiert. Die Spalte "Rang" wird nur angezeigt, wenn für keine der Erinnerungsklassen dieser Parameter konfiguriert ist. PRIVILEGE (optional) -------------------- Kategorie, Name und Stufe eines Systemrechts, welches von den jeweiligen Benutzern benötigt wird, damit ihm die Erinnerungsfunktion für diese Klasse zur Verfügung steht. Das Recht wird durch folgendes Format angegeben: ::. Wenn dieser Parameter nicht konfiguriert, dann steht dem Anwender die Erinnerungsfunktion für diese Klasse zur Verfügung. SCAN_ALL_READABLE_CLIENTS (optional) ------------------------------------ Bei Wert = True werden alle Lesemandanten in die Datenbankabfrage einbezogen. Ber Wert = False oder wenn der Parameter nicht konfiguriert ist, dann werden bei der Datenbankabfrage nur die aktiven Mandanten berücksichtigt. SCAN_ALL_READABLE_SCOPES (optional) ------------------------------------ Bei Wert = True werden alle Lesescopes in die Datenbankabfrage einbezogen. Ber Wert = False oder wenn der Parameter nicht konfiguriert ist, dann werden bei der Datenbankabfrage nur die aktiven Scope berücksichtigt. SHORT_TEXT (optional) --------------------- Ein einzeiliger bestimmter Text, welcher für eine Erinnerung in der Liste unter der Spalte Betreff angezeigt wird. Damit soll mit wenigen Worten beschrieben werden, um was für eine Art von Erinnerung es sich handelt, z.B. "Aufgabe", "Akquise". Der Text kann auch Datenbankattribute enthalten. Diese werden im Format «ATTRIBUTE.» eingefügt. Die doppelten öffnenden und schließenden Klammern sind notwendig. Anstelle von muss der Name des Attributes verwendet werden. Wenn dieser Parameter nicht konfiguriert ist, dann wird kein Text angezeigt. SHOW_ALWAYS (optional) ---------------------- Bei Wert = True, wird der Erinnerungsdialog immer angezeigt, wenn das vorgegebene Intervall (siehe INTERVAL) abgelaufen ist, auch wenn keine neuen Erinnerungen hinzugekommen sind. Wenn der Wert = False ist oder der Parameter nicht konfiguriert ist, dann ist diese Funktion deaktiviert. TYPE (optional) --------------- Dieser Parameter definiert, wie Erinnerungen erstellt werden. Gültige Werte sind folgende: * MSG_PER_ENTITY Es wird für jedes gefundene Objekt eine Erinnerung erstellt. * MSG_PER_ALERTCLASS Es wird nur eine Erinnerung für alle gefundenen Objekte erstellt. Diese Erinnerung enthält die Texte von allen Objekten. Wenn dieser Parameter nicht konfiguriert ist, dann wird der Typ MSG_PER_ENTITY verwendet.