Der Artikel erklärt die Funktionsweise und Hintergründe des “Scheduler”s - der Zeitplansteuerung für Pipelines.

Version: Dieser Artikel ist mindestens gültig ab der Version 5.6


1. Voraussetzungen

  • OCT-Installation.

  • Sie benötigen gegebenenfalls Module und/oder Konnektoren, je nachdem welche Steptypen eingesetzt werden.

  • Die Datenbank ist an einem OCT Server registriert und erscheint somit als Kachel an der Serveroberfläche.

  • Ab Version 5.7 - die Datenbank ist diesem Server zugeordnet worden.


2. Verwendungsanleitung

Der “Scheduler” definiert Zeitpunkte für die automatische Ausführung von Pipelines. Sämtliche Pipelines mit allen Steptypen können auf diese Art und Weise automatisiert werden.

In der folgenden Anleitung wird eine einfache Anwendung erklärt:

  1. Legen Sie eine beliebige Pipeline an (4.3. Prozesspipelines und Steps | Pipeline-hinzufügen).

  2. Fügen Sie der Pipeline einen Step hinzu (4.3. Prozesspipelines und Steps | Step-hinzufügen).

    • Das einfachste Beispiel wäre die Ausführung eines Powerloads ( siehe 4.3.10. Step: Powerload und dort genannte Voraussetzungen).

    • im Bereich der Datenerfassung sollte eine kleine Planungsstruktur existieren (Fabrik, Produktlinie, Produkt).

  3. Legen Sie für die Pipeline einen Zeitplan (= “Scheduler”) an (4.3. Prozesspipelines und Steps | Ausführung-planen).


3. Zusätzliche Informationen

3.1. Aktualisierung der Zeitpläne

Der OCT Service aktualisiert die internen Zeitpläne zu folgenden Zeitpunkten:

  • bei Änderungen eines Schedulers über die Benutzeroberfläche.

  • bei jedem Neustart des Services.

  • alle 12 h automatisch.

  • manuell über die Serversteuerung oder die entsprechende Funktion in den Pipeline Logs.

Sie können die aktuell geladenen Ausführungspläne jederzeit an folgenden Stellen einsehen:

  • in den der Tabelle “system.tPipelineSchedules” (siehe Bild)

Tabelle system.tPipelineSchedules - Spalte SchedulesDetailsJSON (JSON als Tabelle aufgelöst)

Achtung: Die Darstellung in der Tabelle “system.tPipelineSchedules” erfolgt in UTC Zeit.


3.2. Mögliche Problemstellungen


4. Expertenbereich

Hier werden verschiedene Automatisierungsoptionen für den “Scheduler” erklärt.

4.1. Zeitpläne im Zusammenhang mit Datenbankoperationen

Der OCT Service muss Änderungen von Zeitplänen erst in den Arbeitsspeicher laden, um diese wirklich auszuführen zu können.

Wird eine Datenbank

  • per Backup / Restore wiederhergestellt oder

  • auf einen anderen Server geschoben

dann sollten die Zeitpläne mit einer der oben genannten Methoden (Best-Practice für "Scheduler" | Aktualisierung-der-Zeitpläne ) aktualisiert werden.


4.2. Erstellen von Zeitplänen über SQL

Zeitpläne der Pipelines können per SQL erzeugt und geändert werden. Diese Option kann beispielsweise nützlich sein:

  • um über einen zentralen Kalender die Zeitpläne in mehreren OCT Datenbanken zu steuern.

  • um sehr exakte Zeitpläne zu steuern.

    • z.B. das Laufen von individuellen/anderen Jobs an jedem Tag des Monats

    • z.B. eine hohe Abhängigkeit äußeren Faktoren besteht.


4.3. Format der Zeitpläne

Die Zeitpläne sind intern im JSON-Format gespeichert.

  • Was die Zeitzonen betrifft, so wird zum Speichern der Zeitpläne das UTC-Format verwendet.

  • Die Uhrzeiten in der Datenbank stimmen aus diesem Grund oft nicht mit der Anzeige in der OCT Benutzeroberfläche überein.


4.4. Verwendete Parameter

Die folgenden Eigenschaften geben verschiedene gespeicherte Informationen wieder.

  • Die Zeit, zu der der Auftrag gestartet werden soll:
    ExecutionTime (DateTime)

  • Wenn ein Job nur einmal gestartet werden soll, wird das Datum und die Uhrzeit hier gespeichert:
    SingleExecutionDate (DateTime)

  • Speichert, in welchem Zeitintervall der Job gestartet werden soll. Dies kann z.B. einmalig(0), stündlich(1), täglich(2), wöchentlich(3), monatlich(4) und jede Minute(5) sein.
    TimeUnit (int)

  • Diese Eigenschaft gibt an, in welchem Intervall der Auftrag gestartet werden soll - z.B. Intervall = 4.

    • Wenn die Zeiteinheit auf “stündlich” gesetzt ist, so wird der Auftrag alle vier Stunden gestartet.
      ExecutionInterval (int)

  • Ist die Zeiteinheit auf “monatlich” gesetzt, so speichert diese Eigenschaft den Ausführungstag des Monats - bezogen auf den Auftrag.
    DayOfMonth (int)

  • Ist die Zeiteinheit auf “monatlich” gesetzt, so speichert diese Eigenschaft ob der Tag = der letzte Tag des Monats ist.

    • Aufgrund unterschiedlicher Monatslängen kann man keinen einheitlichen/bestimmten Tag abspeichern.
      LastDayOfMonth (bool)

  • Ist die Zeiteinheit auf “stündlich” oder “täglich” gesetzt, so können Sie bestimmte Tage ausschließen an denen der Auftrag nicht ausgeführt werden soll.

    • Sonntag wäre dabei = 0, Montag = 1, etc...
      ExcludedDays (array of int)

  • Ist die Zeiteinheit auf “wöchentlich” gesetzt, so wird hier der Ausführungs-(Wochen-)tag des Jobs gespeichert.

    • Sonntag wäre dabei = 0, Montag = 1, etc...
      SelectedWeekday (int)