Bsp. für Terminüberwachung, Alarmierung?

  • Hallo,


    ich möchte ein Art Ausleihdatenbank entwickeln. Um die Rückgabetermine überwachen zu können, benötige ich eine Art "Alarm" der mich informiert, wenn ein Rückgabedatum überschritten ist. Hat jemand eine Idee wo man dazu ein Beispiel finden kann?


    Danke!

  • hi,


    nun denn, ein konkretes beispiel habe ich zwar nicht, aber ich schlage einen kombinierten lösungsansatz vor.


    1. symbole in der ansicht machen deutlich, wenn ein rückgabedatum < @Today
    - eignet sich für kollegen, die mit dieser db ständig arbeiten


    2. ein periodischer agent, der genau o.a. bedingung prüft und bei true ein mail an dich raus jagt.
    der dürfte je nach kommentaren in wenigen zeilen geschrieben sein und eignet sich zur info von sporadischen db-nutzern


    viel erfolg, freddy

  • Hier einmal ein Beispiel aus einer Anwendung.


    Am Anfang stehen all die Bedingungen, bei denen KEIN Mail gesendet werden soll. Dann baut man sinnvollerweise in das Dokument ein Feld ein, das das Datum enthält, an dem die letzte Erinnerung raus ging (sonst wirst du mit jedem Agentenlauf wieder an alle überfälligen erinnert, und nicht nur an die neu hinzugekommenen bzw. an die, bei denen sich in den letzten 14 Tagen nichts getan hat)


    @If(form!="02" & @Left(form;1)!="9" & @IsUnavailable($Conflict) & @IsUnavailable(Loeschkenn) & (@IsUnavailable(Sperrung) | Sperrung="0") & ((@IsAvailable(Wiedervorlage)&Wiedervorlage!="") | (form="24" & Bearbeiter!="") | (@IsAvailable(Status1) & Status1!="0" & Status1!="") | (@IsAvailable(KorStatus) & KorStatus!="0"));NULL;@Return(""));


    REM " ActionToDos, wenn sie einen sinnvollen Alert-Verteiler enthalten und wenn ein ErledigungsDatum gesetzt und überschritten wurde";
    @If(form="21";@If(DatumBis="" | DatumBis > @Now | @IsUnavailable(AlertDistribution) | AlertDistribution="";@Return("");NULL);NULL);


    REM " Informiert werden muß nur, wenn die Abschlüsse nicht gesetzt sind oder es sich um eine Wiedervorlage einer Musteranforderung handelt";
    @If(Status1!="0" | form=24;NULL;@Return(""));


    REM " Informiert werden muß nur, wenn das ErledigungsDatum überschritten wurde";
    @If(form="21" & DatumBis < @Now;NULL;@Return(""));


    REM " Informiert werden muß nur, wenn noch nicht informiert wurde oder die letzte Alert-Information älter als 14 Tage ist";
    @If(DateAlert="" | @Adjust(@Now;0;0;-14;0;0;0)>@Subset(DateAlert;-1);NULL;@Return(""));


    FIELD DateAlert:=@If(DateAlert="";@Today;DateAlert:@Today);
    SubjectInfo:="Überfällig seit "+@Text(DatumBis;"D0S0")+" für "+ @If(form="21";"Action ToDo an "+@Implode(@Name([CN];SendTo);", ")+" betr. ";"")+@If(ReklNr1="";"ohne Rekl-Nr";ReklNr1)+" "+@Implode(Produkt;", ")+" "+@Implode(DispInhalt;", ")+" "+@Implode(Dispinhalt1;" ");


    Zusatzfeld:=@If(@IsAvailable(ReklGrund);"ReklGrund: "+ReklGrund;"");
    BodyText:="Liebe "+Appname+"-BetreuerInnen,"+@NewLine+@NewLine+"Sie wünschten eine Wiedervorlage des o.g. Dokuments. Bitte leiten Sie die notwendigen Schritte für eine zügige Fertigmeldung in die Wege."+@If(subject="";"";"Das Subject des Dokuments lautete:"+@NewLine+subject)+@NewLine+@NewLine+"mit freundlichem Gruß"+@NewLine+@NewLine+"Ihr Server "+@Name([CN];@Subset(@DbName;1))+@NewLine+"P.S.: Wenn der Abschluß in 14 Tagen noch nicht erfolgt ist, erhalten Sie ein weiteres Mail"+@NewLine+Zusatzfeld+@NewLine;
    Subject:=Appname+"-Reminder: "+SubjectInfo;


    REM "Versenden auslösen";
    @MailSend(AlertDistribution;"";"";Subject;BodyText;[IncludeDoclink]);


    REM " Eintragen in Liste der letzten Editoren";
    FIELD PastAuthors := PastAuthors : (@Name([CN];UserName) + " (Makro AlertDistr)");
    FIELD PastEditDates := PastEditDates : @Text(@Now;"D0S0");
    FIELD TimesModified := TimesModified + 1;
    SELECT @All

  • Symbole in Ansichten mit Formeln wie Datum<@Today belasten den Server ganz erheblich, denn sie werden lafend neu indexiert. Aber sie ändern die Dokumente nicht.


    Daher:
    in einer verteilten Datenbank, die in unterschiedlichen Zeitzonen oder auf Notebooks lokal nicht nur zum Lesen genutzt wird, in Gottes Namen eine solche Ansicht, ansonsten ein periodischer Agent, der ein Feld setzt, aufgrund dessen Inhalt das Icon erscheint - und dafür sorgen, daß alle Repliken zu Arbeitsbeginn die Änderungen mitbekommen haben, sonst hagelt es leicht Replikationskonflikte.

  • Also ich habe einmal eine Überwachungsfunktion für eine Workflowanwendung gemacht bei der ein Dokument eine bestimmte Anzahl von Tagen in einem Status bleiben darf.


    Dazu habe ich zwei Felder in denen der aktuelle Status und das Datum der letzten Statusänderung gespeichert sind.
    Dazu eine Hilfsansicht für jeden Status über die dann ein periodischer Agent läuft (morgens um 6) der die Differenz in Tagen zwischen aktuellem Datum und letzter Statusänderung berechnet und gegebenenfalls einen Alarm verschickt.