# Timer

Ein Timer-Connector wird in regelmäßigen Abständen aktiv und führt den zugehörigen Workflow aus. Die Intervalle, in denen der Timer ausgelöst wird, können flexibel konfiguriert werden. Die Einstellungen reichen von einfachen Intervallen, wie *alle fünf Minuten*, bis hin zu komplexen Zeitplänen, z. B. *von 08:00 bis 10:00 Uhr an jedem letzten Freitag im Monat*.

{% hint style="info" %}
Wird ein Timer ausgelöst, während der dazugehörige Workflow noch läuft, wird der Workflow nicht erneut gestartet.
{% endhint %}

## Erstellen eines Timer-Connectors

Um einen neuen Timer zu erstellen, wählen Sie den Menüpunkt *Connectoren* und klicken anschliessend auf das <img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FOd2lmULy1GFVQ4yPs7wU%2Fprojekte-plus-symbol.png?alt=media&#x26;token=9941d613-faf3-446a-be0d-a46c684b4e2a" alt="" data-size="line"> Symbol.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FIEr5d12T6or6zlyOyMTT%2Fconnector-timer-01.png?alt=media&#x26;token=e6c9e7b3-80bc-4b1d-96aa-a2500a90aad7" alt="" width="221"><figcaption><p>Erstellen eines neuen Connectors</p></figcaption></figure>

Danach vergeben Sie einen Namen und wählen die Option *Timer* aus der Auswahlbox aus.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FMP6KaEU32y8PGSEInKYB%2Fconnector-timer-02.png?alt=media&#x26;token=7079efe6-8ba9-4bfd-9c1c-f5360eae7895" alt="" width="302"><figcaption><p>Neuer Timer-Connector</p></figcaption></figure>

Der Timer kann im normalen Modus oder im erweiterten Modus (Cron-Modus) betrieben werden.

## Normaler Timer

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FeUKqkDd8oNw3QEibZC6F%2Fconnector-timer-03.png?alt=media&#x26;token=abec05de-505e-4cf7-8f16-8c60bc0276b0" alt="" width="380"><figcaption><p>Normaler Modus für Timer</p></figcaption></figure>

Im normalen Modus kann der Abstand des Timers in Sekunden, Minuten oder Stunden eingestellt werden. Das kleinste Interval ist eine Sekunden, das grösste ist 999 Stunden. Geben Sie das gewünschte Intervall ein und wählen Sie danach die Größe (Sekunden, Minuten oder Stunden).

## Cron-Modus

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2FZK93KbzgYs15IlXqzynd%2Fconnector-timer-04.png?alt=media&#x26;token=37c47431-6e91-432a-a532-78a91b7cb0c1" alt="" width="368"><figcaption><p>Cron-Modus für Timer</p></figcaption></figure>

Im Cron-Modus können sehr komplexe Zeitpläne für einen Timer erstellt werden. Mit einer **Cron-Expression** wird definiert, wann der Timer ausgelöst werden soll.

Eine Cron-Expression besteht aus mehreren Feldern, die mit **Leerzeichen** getrennt werden. Jedes dieser Felder steht für eine Zeiteinheit. Ein gültiger Ausdruck muss aus **sechs** oder **sieben** Feldern bestehen. Die verfügbaren Felder sind:

* Sekunde
* Minute
* Stunde
* Tag des Monats
* Monat
* Wochentag
* Jahr (optional)

Die Cron-Expression `0 0 4 * * ? *` bedeutet, dass der Timer täglich um 04:00 Uhr ausgelöst wird.

Jedes dieser Felder kann unterschiedliche Werte annehmen. Die gültigen sowie spezielle Werte sind in folgender Tabelle aufgeführt:

| Feld           | Gültige Werte     | Spezialsymbole |
| -------------- | ----------------- | -------------- |
| Sekunde        | 0-59              | , - \* /       |
| Minute         | 0-59              | , - \* /       |
| Stunde         | 0-23              | , - \* /       |
| Tag des Monats | 1-31              | , - \* ? / L W |
| Monat          | 1-12 oder JAN-DEC | , - \* /       |
| Wochentag      | 1-7 oder SUN-SAT  | , - \* ? / L # |
| Jahr           | 1970-2099         | , - \* /       |

Nähere Informationen zu den Bedeutung der Felder finden Sie unter <https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html> (Englisch).

{% hint style="warning" %}
Der Timer wird immer in der Zeitzone `Europe/Zurich` ausgeführt.
{% endhint %}

### Prüfen

Mit einem Klick auf den Button *Prüfen* wird Ihre Cron-Expression auf Richtigkeit geprüft und es werden Ihnen die nächsten fünf Ausführung des Timers angezeigt.

<figure><img src="https://2388870224-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8dtLKppxVG0mxVBzNFs6%2Fuploads%2F1MmUjzlCwqAhOUOzws8p%2Fconnector-timer-06.png?alt=media&#x26;token=9c3ca1c4-c811-4983-8d80-0965ca6eb8ad" alt=""><figcaption></figcaption></figure>

### Beispiele

* `0 15 10 * * ?` Jeden Tag um 10:15:00 Uhr
* `0 15 10 * * ? 2024` Jeden Tag im Jahr 2024 um 10:15:00 Uhr.
* `0,17,23,46 15 10 * * ?` Jeden Tag um 10:15:00, 10:15:17, 10:15:23 und 10:15:46
* `0/30 * 10 * * ?` Jeden Tag alle 30 Sekunden von 10:00:00 bis 10:59:30 Uhr.
* `10/45 10-30 10-11 * * ?` Jeden Tag alle 45 Sekunden, startend bei Sekunde 10 von 10:10:10 bis 11:59:55
* `0 15 10 15 * ?` Jeden 15. des Monats um 10:15:00
* `0 15 10 15 JAN-JUN ?` Jeden 15. in den Monaten Januar bis Juni um 10:15:00
* `0 15 10 L * ?` Jeden letzten Tag des Monats um 10:15:00
* `0 15 10 ? * 6L` Jeden letzten Freitag des Monats um 10:15:00
* `0 15 10 ? * 6#3` Jeden dritten Freitag im Monat um 10:15:00
* `0 15 10 1/5 * ?` Jeden fünften Tag im Monat, beginnend am 1. des Monats.

### Cron-Expression Generator

Auf der Webseite <https://www.freeformatter.com/cron-expression-generator-quartz.html> können Sie Ihre Cron-Expression erstellen und validieren lassen.
