Zeitsteuerung Mit der Zeitsteuerung kann man bestimmte Abläufe zeitlich steuern. Bisher wurde ein einfacher Timer benutzt, mit dem Start- und Endzeit und die Intervalle einstellen konnte. Ab Version 2.6.1. ist ein neuer Timer eingebunden, mit dem dann auch solche Zeiten wie z.B. "jeden Freitag um neun Uhr" oder "jeden Wochentag um 9.30 Uhr" oder sogar "alle 5 Minuten zwischen 9.00 und 10.00 Uhr an jedem Montag, Mittwoch und Freitag im Januar" möglich sind. ab Version 2.6.1 - Cron Trigger Cron Trigger sind oft besser geeignet als SimpleTrigger, wenn man zu wiederkehrenden Zeiten Jobs starten will, im Gegensatz zu exakt angegebenen Zeitintervallen beim Simple Trigger. Mit dem Cron Trigger kann man Startzeiten festlegen wie z.B. "jeden Freitag um neun Uhr" oder "jeden Wochentag um 9.30 Uhr" oder sogar "alle 5 Minuten zwischen 9.00 und 10.00 Uhr an jedem Montag, Mittwoch und Freitag im Januar". Der Cron Trigger hat aber auch analog dem Simple Trigger eine Startzeit und Endzeit, die den Einsatz des Triggers steuert. Mode Modus Bedeutung Ausführlich Zeiträume werden über bestimmte Felder ausgewählt Expert Zeiträume werden mit Cron-Expressions im Feld "Cron-Trigger" angegeben Stunde Innerhalb welcher Stunde(n)? Auswahl: Option Bedeutung jede innerhalb jeder Stunde Zahl auswählen innerhalb der ausgewählten Stunde, z.B. 0 → von 0:00 bis 0:59 zyklisch alle 2, 4, … Stunden starten (für je eine Stunde) Eingabe spezielle Angaben mit Cron-Expressions Werte (Cron-Expression): Zeichen Bedeutung * wie Auswahl "jede" 0 … 23 wie "Zahl auswählen" , mehrere Stunden, z.B. 3,7,10: Stunde 3, 7 und 10 - Zeitraum, z.B. 10-20: ab Stunde 10 bis einschließlich 20 / Inkremente, z.B. 0/2: Start Stunde 0, alle 2 Stunden; 3/3: Start Stunde 3, alle 3 Stunden Minute Zu welcher Minute innerhalb der Stunden bzw. alle wie viele Minuten innerhalb der Stunden? Auswahl: Option Bedeutung jede startet jede Minute innerhalb der Stunde Zahl auswählen z.B. Start zur Minute 15 innerhalb der Stunde zyklisch alle 2, 5, … Minuten starten Eingabe spezielle Angaben mit Cron-Expressions Werte (Cron-Expression): Zeichen Bedeutung * wie Auswahl "jede" 0 … 59 wie "Zahl auswählen" / Inkremente, z.B. 0/10: Start Minute 0, alle 10 Minuten; 30/2: Start Minute 30, alle 2 Minuten , mehrere Werte, z.B. 2,20,45: Minute 2, 20 und 45 - Zeitraum, z.B. 10-20: ab Minute 10 bis Minute 20, jede Minute Tag Innerhalb welchen Tages im Monat? Auswahl: Option Bedeutung jeden innerhalb jeden Tages im Monat Zahl auswählen innerhalb des ausgewählten Tages im Monat Eingabe spezielle Angaben mit Cron-Expressions Werte (Cron-Expression): Zeichen Bedeutung * wie Auswahl "jeden" 1 … 31 wie "Zahl auswählen" , mehrere Tage, z.B. 13,14,19: 13., 14. und 19. Tag im Monat - Zeitraum, z.B. 5-10: 5. bis einschließlich 10. Tag im Monat / Inkremente, z.B. 1/4: Start Tag 1, alle 4 Tage; 3/3: Start Tag 3, alle 3 Tage L letzter Tag im Monat (egal ob 28., 30. oder 31.), z.B. L-2: vorvorletzter Tag im Monat W nächster Wochentag zum angegebenen Tag, z.B. 13W: ist der 13. ein Samstag → Freitag, ist er ein Sonntag → Montag ? kein spezieller Wert (Platzhalter) Monat Innerhalb welchen Monats? Auswahl: Option Bedeutung jeden jeden Monat Zahl auswählen in welchem Monat aktiv? Eingabe spezielle Angaben mit Cron-Expressions Werte (Cron-Expression): Zeichen Bedeutung * wie Auswahl "jeden" 1 … 12 bzw. JAN … DEC wie Auswahl einer Zahl , mehrere Werte, z.B. FEB,OCT: Februar und Oktober Wochentag Innerhalb welchen Wochentages? Auswahl: Option Bedeutung jeden Timer startet täglich Mo–Fr Timer startet innerhalb dieses Tages Eingabe spezielle Angaben mit Cron-Expressions Werte (Cron-Expression): Zeichen Bedeutung * wie Auswahl "jeden" 1 … 7 bzw. SUN … SAT wie "Zahl auswählen" (1 = Sonntag) , mehrere Wochentage, z.B. MON,FRI: montags und freitags - Zeitraum, z.B. MON-FRI: "wochentags" L allein: letzter Tag (Sonnabend); mit Wochentagszahl: letzter x-Tag im Monat, z.B. 6L: letzter Freitag im Monat ? kein spezieller Wert (Platzhalter) / Inkremente, z.B. 1/2: alle zwei (Wochen-)Tage mit Start am Sonntag # der wievielte Wochentag im Monat, z.B. 2#1: erster Montag im Monat (auch MON#1) Jahr Innerhalb welchen Jahres? Auswahl: Option Bedeutung jedes in jedem Jahr Eingabe individuelle Jahre angeben Wechselwirkungen Wochentag und Tag z.B. Wochentag "Mo" und Tag "4": jeden Montag, der ein 4. des Monats ist (Monat muss dann auf "jeder" stehen) Monat und Tag z.B. Monat "jeden" und Tag "31": an jedem 31. des Monats — also nur in Monaten mit 31 Tagen (Tag: "jeder") Monat, Tag und Wochentag z.B. Monat "9", Wochentag "Fr" und Tag "13": startet nur, wenn der September einen Freitag den 13. hat Das Ganze lässt sich noch mit dem Jahr koppeln, ist aber m.E. nicht sinnvoll. Aktion Auswahl eines Timer-Actions (siehe unten unter "aktuelle Timerklassen"). Steuerparameter siehe unten unter "aktuelle Timerklassen" unter der jeweiligen Klasse Cron-Expressions Cron-Expressions werden verwendet, um eine Instanz eines Cron-Triggers zu konfigurieren. Sie sind Strings aus 7 Einzelwerten, die die individuellen Einzelheiten des Ablaufplans beschreiben. Die Werte werden mit Leerzeichen getrennt und repräsentieren: 0 0 5 * * ? * ┬ ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ └── Jahr (optional) │ │ │ │ │ └──── Wochentag (1-7) (Sonntag=1) │ │ │ │ └────── Monat (1-12) │ │ │ └──────── Tag (1-31) │ │ └────────── Stunde (0-23) │ └──────────── Minute (0-59) └────────────── Sekunde (0-59, meist 0) Die zu verwendenden Werte stehen oben unter dem jeweiligen Feld (Tag, Monat usw.). Beispiele: Expression Bedeutung 0 0 12 ? * WED jeden Mittwoch um 12:00 Uhr 0 0/5 * * * ? alle 5 Minuten (beginnend mit Minute 0) 0 30 10-13 ? * WED,FRI um 10:30, 11:30, 12:30 und 13:30, jeden Mittwoch und Freitag 0 0/30 8-9 5,20 * ? halbstündlich zwischen 8 und 10 Uhr am 5. und 20. jeden Monats (8:00, 8:30, 9:00, 9:30 — aber nicht 10:00) Manche Startzeiten sind zu komplex für einen einzigen Ausdruck, z.B. alle 5 Minuten zwischen 9:00 und 10:00 Uhr und alle 20 Minuten zwischen 1:00 und 10:00 Uhr. Das lässt sich nur mit zwei Timern abbilden. in alten Versionen TimerTaskKlassen veraltet (nicht mehr benutzen) com.batix.timer.ContainerDeActivatorTask (aktiviert/deeaktiviert alte Containerdatensätze wenn Datum herangekommen ist) com.batix.timer.ContainerRemoveTask (löscht alte Containerdatensätze wenn Datum herangekommen ist) com.batix.timer.DetailDeactivatorTask (bx:schleife deaktiviert einzelne Schleifen-Datensätze) com.batix.timer.NavDeActivatorTask (aktiviert/deeaktiviert Navigationspunkte zu bestimmten Zeitpunkt) com.batix.timer.NewsArchiver (altes Newssmodul; verschiebt alte News ins Archiv) aktuelle Timerklassen com.batix.timer.ContainerImportTimer aktualisiert einen neuen Container mit Daten von einem anderen System Steuerparameter: Parameter Beschreibung container-id=125DA0FBA30 Container intern extern-id=10EA47412E6 Container extern extern-host=https://www.externer-server.de Hostname des externen Systems img-kat=125A1311768 Bildergaleriekategorie für importierte Bilder doc-kat=125A2CE1376 Bildergalerieordner für importierte Dokumente flag=html Editorfelder mit importieren com.batix.timer.UserReactivation aktiviert gesperrte User, wenn sie 3x falsches Passwort eingegeben hatten com.batix.timer.VisitorStatTimer verkürzt Userstatistik Steuerparameter: Parameter Beschreibung days-to-keep=60 com.batix.timer.URLConnectionTimer ruft URL auf (für gewöhnlich ein Action) Steuerparameter: Parameter Beschreibung url=http://www.dein-web.de/aktionen/testaktion.act ruft ein Aktion auf max-redirects=30 Anzahl der Redirekts (optional, Standard 5) username=… / password=… Zugangsdaten für den Aufruf (Basic-Auth) post=true Aufruf per POST statt GET read-timeout=… / connect-timeout=… Sekunden bis zum Abbruch der Anfrage (die Aktion läuft serverseitig evtl. trotzdem weiter) reportemail=Email-Adresse Serverantwort als Report an diese Adressen schicken (mehrere mit ;), wenn der HTTP-Code nicht 200 ist oder die Antwort das Zeichenlimit erreicht reportemail-from=Absender-Adresse Absender des Reports (Standard: die reportemail-Adresse) reportemail-cc=Email-Adresse CC-Empfänger des Reports reportemail-characterlimit=0 Mindestanzahl Zeichen der Antwort, ab der der Report auch bei HTTP 200 verschickt wird smtp-connection=ID oder Bezeichnung SMTP-Zugang für den Report (ab v3.3.4): Alias aus der special.xml oder ID bzw. Bezeichnung eines Mailkontos des Mandanten (Verwaltung → SMTP-Zugänge). Ohne Angabe wird der default-Zugang der special.xml verwendet; nur wenn es keinen gibt, das einzige Mailkonto des Mandanten. Im Docker-Image ist immer ein default-Zugang (localhost, Platzhalter) eingetragen, dort muss der Parameter gesetzt werden, sonst schlägt der Versand fehl com.batix.search.CrawlerTask Keywords: Web indizieren, Indizierung, Crawler Steuerparameter: Parameter Beschreibung sleeptime=500 Pause in Millisekunden zwischen zwei Seitenabrufen (Standard 500), entlastet den Server quickmode=true Index nicht komplett neu aufbauen, nur geänderte Seiten neu einlesen (If-Modified-Since) force=true Mehrfachstarts am selben Tag zulassen (Standard: höchstens einmal täglich) max-pdf-size=30 Maximale Größe in MB einer PDF-Datei, die noch geparst und indiziert wird; größere werden nur auf Erreichbarkeit geprüft (Standard 30, 0 = ohne Limit) username=… / password=… Zugangsdaten, wenn ein geschützter Bereich gecrawlt werden soll entry-point=/unterpfad/start.htm Startseite des Crawls (Standard: Startseite des Projekts) search-area=/unterpfad Pfad, innerhalb dessen ausschließlich gecrawlt wird (nur zusammen mit entry-point) extern-link-check=true nach dem Indizieren die gefundenen externen Links prüfen, der HTTP-Code kommt in den Report report-to=Email-Adresse Report über fehlerhafte Seiten (404 usw.) an diese Adressen (mehrere mit ;), nur wenn Fehler auftraten. Sonderwerte console und livelog schreiben den Report statt per Mail in die Konsole bzw. ins Livelog report-from=Absender-Adresse Absender des Reports. Seit v2.8.0 Pflicht: ohne report-from wird keine Mail verschickt smtp-connection=ID oder Bezeichnung SMTP-Zugang für den Report (ab v3.3.4): Alias aus der special.xml oder ID bzw. Bezeichnung eines Mailkontos des Mandanten (Verwaltung → SMTP-Zugänge). Ohne Angabe wird der default-Zugang der special.xml verwendet; nur wenn es keinen gibt, das einzige Mailkonto des Mandanten (bei mehreren Konten Fehler im Log). Im Docker-Image ist immer ein default-Zugang (localhost, Platzhalter) eingetragen, dort muss der Parameter gesetzt werden, sonst schlägt der Versand fehl Um auch Actions zu indizieren (z.B. Weiterleitungen usw. - wenn man sicher ist, daß nix gelöscht wird) kann man im Action in die Metadaten accept-crawler=true eintragen.