Domino 9 und frühere Versionen > ND6: Entwicklung
feinere Zeitsteuerung bei Agenten
Andreas Huhn:
Guten Morgen alle zusammen,
hab aktuell ein Problem von dem ich mir sicher bin daß der ein oder andere von euch schon sich dafür auch schon mal was hat einfallen lassen müssen.
Beim erstellen eines Agenten lassen sich Zeiträume für seine Ausführung festlegen. Ich finde es nur schade daß diese mit einer festen Auswahlliste von Notes so starr und weitgehend unfelxibel gehalten wurden. Denn Auswahlmöglichkeiten für wöchentlich, monatlich, etc. sind zwar ganz schön aber eine Eingabebox für eine Anzahl an Tagen hätte genau das und noch viel mehr ermöglicht.
Denn wie kann ich einen Agenten realisieren der alle zwei Tage (alle 6 Wochen) läuft? Mir fallen da im Moment nur so umständliche Sachen ein wie zwei ineinander verschachtelte Agenten, von denen der erste das aktuelle Datum mit einem beim letzten Durchlauf angelegten Darum vergleicht und bei mindestens zwei Tagen Unterschied den zweiten Agenten startet der dann die eigentliche Aufgabe erfüllt und das neue Referenzdatum speichert.
Ist das der Weisheit letzter Schluß?
Bitte sagt mir daß es eine bessere Möglichkeit gibt 8)
Viele Grüße,
Andreas
Mandalor:
Mein Vorschlag:
in ein Profindokument wir das letzte durchlaufdatum geschrieben, der Agent läuft jeden Tag und sieht nach ob "er wieder ma dran ist". Wenn ja schreibt er das aktuelle Datu rein, wenn nein dann bleibt er ruhig.
Andreas Huhn:
Danke für den Tipp, Mandalor. Habe ein Einstellungsdokument das ich jetzt noch etwas erweitert habe. An zwei verschachtelten Agenten komm ich aber im Moment nicht herum.
Agent CoAgent:
CoAgentIntervall := @DbLookup("":"NoCache"; ""; "AnsKonfiguration";"1";"ZahlCoAgentIntervall");
CoAgentDat := @DbLookup("":"NoCache"; ""; "AnsKonfiguration";"1";"datCoAgentDat");
NowDat := @Now;
@If(
@IsTime(NowDat) & @IsTime(CoAgentDat) ;
@If(@ToNumber( (@Date (NowDat) - @Date (CoAgentDat)) / 86400) >= CoAgentIntervall; @Command([RunAgent];"CoordAgent") ;"") ;
0
);
Bei diesem Agenten mußte ich nach einer Fehlermeldung das Ziel auf "keines" ändern, um @-Befehle verwenden zu können.
Agent CoordAgent:
_Subject :="ERINNERUNG: " + "Kunde: " + Customer + " / Kein 'Coordinator' eingetragen ";
_Email := @DbLookup("":"NoCache"; ""; "AnsKonfiguration";"1";"txtCoordinatorErinnerung");
@If(
Coordinator = "" | Coordinator = "undefiniert" ;
@Prompt([OK];"fas";"sdg") & @MailSend(_Email;"";"";_Subject;"Document link: ";"";[IncludeDoclink]) & @SetField("datCoAgentDat";@Now) ;
""
);
Dieser Agent hat das Ziel "alle ausgewählten Dokumente" und bei der Dokumentenauswahl "Benutzt Maske ..."
Ein Beispiel:
CoAgentIntervall = 2
CoAgentDat = 24.11.2005
NowDat = 28.11.2005
NowDat - CoAgentDat = 4 (-> größer 2)
Ein Prompt an dieser Stelle springt an, der Vergleich ist also erfolgreich.
Der Prompt im zweiten Agenten wird allerdings nicht ausgegeben, der Agent scheint also nicht anzulaufen (Es gibt Dokumente mit Coordinator = "undefiniert").
Andreas Huhn:
Ok, hab das Problem jetzt in den Griff bekommen.
Bei einer anderen kleinen Sache könnt ihr mir aber helfen...
Wie ihr gesehen habt verschicke ich die Emails mit:
@MailSend(_Email;"";"";_Subject;
_Email enthält eine normal formatierte Emailadresse, also name@domain.suffix
Wenn ich das ersetzte durch ein Feld (Name: Sales und Typ: Name):
@MailSend(Sales;"";"";_Subject;
Dann erhalte ich die Fehlermeldung:
Kein 'SendTo'-Feld im Dokument. Verwenden sie stattdessen 'Weiterleiten' im Menü 'Aktionen'.
Die Email kommt daraufhin aber trotz der Meldung an!
Was hat die Meldung zu bedeuten? Wie kann ich sie abstellen?
Viele Grüße,
Andreas
Andreas Huhn:
... das hat ja mit dem eigentlichen Thema des Threads nicht mehr soviel zu tun.. denkt ihr ich sollte einen neuen Thread dafür aufmachen?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln