Skripte / Legacy-Datenimport

„Scripts“ ist die umfassende Lösung von SKOOR zum Erstellen, Bearbeiten und Ausführen von Skripten mit zahlreichen Anpassungsmöglichkeiten.

Seite „Skripte“

Die Seite ist in drei Hauptbereiche unterteilt:

Einstellungen

Dieser Abschnitt enthält die allgemeinen Einstellungen eines Skripts, wie zum Beispiel:

Einstellung

Beschreibung

Name

Legen Sie den Namen des SKOOR-Skripts fest.

Beschreibung

Legen Sie die Beschreibung des SKOOR-Skripts fest.

Zeitlimit

Legt das Standard-Timeout für die Skriptausführung in Sekunden fest.

Zulässige MIME-Typen

Gibt an, welche MIME-Typen für hochgeladene Quelldateien zulässig sind.

Standard-Ausführungskonfiguration

Wählt die Standard-Ausführungskonfiguration aus, mit der das Skript ausgeführt wird.

Token kopieren und zurücksetzen

Ermöglicht Administratoren das Kopieren und Zurücksetzen des Webhook-Tokens. Nur für ADMINS verfügbar.

Zeitplan-Konfigurationen

Ermöglicht mehrere Zeitpläne mit dedizierten Ausführungskonfigurationen.

Wählen Sie zunächst einen Zeitraum aus (Jahr, Monat, Woche, Tag, Stunde oder Minute) – je nach Ihrer Auswahl werden nur die relevanten Felder angezeigt (Monate, Tage im Monat, Wochentage, Stunden, Minuten). Eine Mehrfachauswahl ist möglich. Um den Prozess in regelmäßigen Abständen auszuführen, legen Sie den Zeitraum fest und doppelklicken Sie auf die gewünschte Zahl.

Beispiel: Jeden Tag um 02:30 Uhr → Zeitraum „Tag“, Stunde 2, Minute 30.

Beispiel: Alle 10 Minuten → Zeitraum „Stunde“, Minute <Doppelklick auf 10>

Ausführungskonfigurationen

Ermöglicht die Anpassung von Timeout- und Umgebungsvariablen.

image-20260512-100658.png

Dateien

Dieser Abschnitt bietet eine umfassende Dateiverwaltungslösung für das Skript, einschließlich eines hochmodernen Editors für textbasierte Daten.

Ein Download-Link wird angezeigt, wenn es sich um binäre Daten handelt (die nicht in Textform bearbeitet werden können).

image-20250214-093009.png

Ausführen

Dieser Abschnitt ist für die Ausführung und Überwachung der Durchläufe eines Skripts zuständig. Er bietet bei Bedarf einen kleinen Drag-and-Drop-Bereich zum Hochladen von Quelldateien.

image-20261015-083557.png

Unterstützung für Fortschrittsbalken

Skripte können sowohl im Job-Detail-Dialog als auch im Skript-Widget einen Fortschrittsbalken anzeigen. Um den Fortschritt zu aktualisieren, muss das Skript Statusmeldungen ausgeben, die den aktuellen Schritt und die Gesamtzahl der erwarteten Schritte angeben. Statusaktualisierungen verwenden das folgende Format:

#PROGRESS: {step}/{maxSteps}

Zeilen, die diesem Format entsprechen, werden automatisch analysiert, um den Fortschrittsbalken zu aktualisieren, und aus der Standard-Protokollausgabe des Skripts entfernt.

Das folgende Beispiel veranschaulicht, wie Fortschrittsaktualisierungen ausgegeben werden:

import os
import time

max_count = int(os.environ.get('max_count', 10))

for i in range(1, max_count + 1):
    time.sleep(1)
    print(f"#PROGRESS: {i}/{max_count}")
    print(f"Reached {(i / max_count) * 100:.1f}%")
image-20261015-085633.png

Erstellen eines Skripts

Skripte können entweder manuell erstellt oder wie unten gezeigt über ZIP-Dateien hochgeladen werden:

image-20250423-061036.png
image-20250423-061102.png

Importieren eines Skripts über eine ZIP-Datei

Beim Import einer ZIP-Datei wird eine Analyse durchgeführt, woraufhin vor dem eigentlichen Import verschiedene Hinweise angezeigt werden.
Die Analyse zeigt an, ob die importierten Skripte bereits im System vorhanden sind (gleicher Name) oder ob der Import Metadaten enthält.
Außerdem wird angezeigt, ob die Skripte (beim Überschreiben) in eine andere Gruppe verschoben werden.
Diese Hinweise lauten:

image-20260731-130509.png

Einstellung

Beschreibung

Überschreiben bestätigen

Zeigt an, dass ein Skript mit demselben Namen bereits vorhanden ist.
Wenn Sie dieses Kontrollkästchen aktivieren, wird das Skript überschrieben.

Metadaten des Skripts einbeziehen

Dies bedeutet, dass die ZIP-Datei die Datei script_metadata.json enthält:

Diese Datei enthält das Standard-Timeout, die Beschreibung sowie die Ausführungs- und Zeitplan-Konfiguration des Skripts.

Grundpfeiler eines Skripts

Ausführungsskript

Die Hauptdatei enthält die Logik des Skripts. Diese bestimmt den Runner-Typ für das Skript:

  • Der Python-Runner erwartet eine Datei main.py.

  • Der Talend-Runner erwartet eine Datei namens <scriptName>_run.sh.

  • Der Shell-Runner erwartet eine Datei run.sh.

Platzieren Sie Ihr Hauptskript eine Ebene unterhalb des Stammverzeichnisses (oder höher), da der Breitensuche-Scan immer das flachste Skript verwendet, das er findet.

Die folgende Meldung wird angezeigt, wenn versucht wird, ein Skript ohne Haupt-Runner-Skript auszuführen.

image-20250423-061703.png

.env

Es handelt sich um eine einfache Textdatei, die Umgebungsvariablen enthält. Auf diese Weise können Variablen, die in einem Skript verwendet werden, je nach Anwendungsfall angepasst werden.

Die .env-Datei sollte sich im selben Ordner wie das Runner-Skript (main.py, run.sh … usw.) befinden.

Die folgende .env-Datei würde die gezeigten Umgebungsvariablen liefern, sodass diese in benutzerdefinierten Ausführungskonfigurationen angepasst werden können.

image-20250214-094006.pngimage-20260512-100857.png

Vordefinierte Umgebungsvariablen

Einige Details zur Ausführung des Skripts werden als Umgebungsvariablen an die Skriptumgebung übergeben. Dies sind:

  • Benutzer-ID als SKOOR_USER_ID

  • Benutzername als SKOOR_USER_USERNAME

  • Vollständiger Name des Benutzers als SKOOR_USER_FULLNAME

Die folgenden Screenshots zeigen anhand eines Python-Beispiels, wie diese Werte abgerufen werden können, sowie die Ausgabe im Skript:

import os

source_file = os.environ.get('SKOOR_SOURCE_FILE')
user_id = os.environ.get('SKOOR_USER_ID')
username = os.environ.get('SKOOR_USER_USERNAME')
userFullname = os.environ.get('SKOOR_USER_FULLNAME')
userGroup_id = os.environ.get('SKOOR_USER_USERGROUP_IDS')
userGroup_names = os.environ.get('SKOOR_USER_USERGROUP_NAMES')


print("sourceFile: ", source_file)
print("User ID: ", user_id)
print("Username: ", username)
print("Fullname: ", userFullname)
print("UserGroup ID: ", userGroup_id)
print("UserGroup name: ", userGroup_names)
image-20251201-084654.png

Beispiel mit .env

Das folgende Skript liest die Variable foo aus der Datei .env ein und gibt sie auf der Konsole aus. Nachfolgend finden Sie Screenshots dieser .env-Datei und der entsprechenden Ausführungskonfigurationen.

image-20250214-094929.pngimage-20250214-094943.png

image-20250214-094911.png

image-20250214-095049.pngimage-20250214-095128.png

Quelldateien

Skripte können so gestaltet werden, dass sie externe Dateien (Quelldateien) akzeptieren und diese als Teil der Skriptlogik verarbeiten.

Die Quelldateien können im Skript mithilfe der Umgebungsvariable `SKOOR_SOURCE_FILE` referenziert werden, wie im folgenden Codeausschnitt zu sehen ist:

# IN PYTHON
import os

source_file = os.environ.get('SKOOR_SOURCE_FILE')
print(source_file)
#IN SHELL

echo $SKOOR_SOURCE_FILE
image-20260512-101048.png

Die folgenden Dateitypen werden standardmäßig unterstützt, sofern dies nicht in der Skriptkonfiguration eingeschränkt ist:

  • (Strukturierter) Text

    • text/plain

    • text/csv

    • text/tab-separated-values

    • text/tsv

    • text/markdown

    • text/vtt

    • application/json

    • application/x-ndjson

    • application/jsonl

    • application/xml

    • text/xml

    • application/yaml

    • text/yaml

    • application/x-yaml

    • application/sql

    • text/sql

  • Dokumente

    • application/pdf

    • application/msword

    • application/vnd.openxmlformats-officedocument.wordprocessingml.document

    • application/vnd.ms-excel

    • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

    • application/vnd.ms-powerpoint

    • application/vnd.openxmlformats-officedocument.presentationml.presentation

    • application/vnd.oasis.opendocument.text

    • application/vnd.oasis.opendocument.spreadsheet

    • application/vnd.oasis.opendocument.presentation

    • application/rtf

    • application/epub+zip

  • Archive

    • application/parquet

    • application/x-parquet

    • application/avro

    • application/x-avro

    • application/vnd.apache.arrow.file

    • application/vnd.apache.arrow.stream

    • application/orc

    • application/x-orc

    • application/zip

    • application/x-zip-compressed

    • application/gzip

    • application/x-gzip

    • application/x-bzip2

    • application/x-xz

    • application/zstd

    • application/x-zstd

    • application/x-tar

    • application/x-7z-compressed

Ausführen von Unter-Skripten

Falls Unterskripte erforderlich sind, sollten diese in einem bin-Ordner abgelegt werden, da sie dort ausgeführt werden können.

Achten Sie darauf, die Skripte immer in einem bin-Ordner abzulegen.

Im Folgenden finden Sie ein Beispiel in Shell:

image-20250423-063721.png

Die Ausgabe dieser run.sh-Datei lautet:

image-20250423-063801.png

image-20250423-063907.png

Die Ausgabe dieser run.sh-Datei lautet:

image-20250423-063955.png

QuickRun

Diese Option bietet eine Schaltfläche QuickRun, die das Skript ohne Quelldatei und mit den Standardwerten der Umgebungsvariablen ausführt.
Damit lässt sich ein Skript während der Entwicklung oder Fehlerbehebung schnell ausführen, und die Schaltfläche Latest Job Overview zeigt die Konsolenausgabe an.

image-20250214-095256.png

Ausführen

Ausführung starten

Wählen Sie im Bereich „Ausführen“ die gewünschte Konfiguration aus (und laden Sie bei Bedarf eine Quelldatei hoch) und klicken Sie dann auf „Skript ausführen“

image-20250214-095342.png

Lauf abbrechen

Sowohl laufende als auch wartende Läufe können durch Klicken auf das Symbol „Auftrag abbrechen“ im Abschnitt „Verlauf“ abgebrochen werden.

image-20250214-095439.png

Poetry-Deaktivierung

Poetry ist ein leistungsstarkes Tool für das Abhängigkeitsmanagement und die Verwaltung virtueller Umgebungen in Python. Dies erfolgt durch die Definition einer pyproject.toml-Datei im selben Ordner wie das Runner-Skript (main.py, run.sh … usw.).

Durch das Entfernen oder Umbenennen der Datei pyproject.toml wird die Verwendung von Poetry automatisch deaktiviert und stattdessen skoor-python verwendet.

Job-Übersicht

Um die vollständigen Details eines Jobs anzuzeigen, klicken Sie wie unten dargestellt auf einen Eintrag in der Liste „Verlauf“:

image-20250214-095601.png

image-20250214-095612.png

Ausführungsverlauf

Der Abschnitt „Verlauf“ zeigt eine Liste aller Skript-Ausführungen an. Details zu jeder Ausführung erhalten Sie, wenn Sie darauf klicken.

image-20250214-095715.png

Verwendung von Webhook-Tokens zum Ausführen eines Konverters

Diese Option ermöglicht es, das Skript ohne Anmeldung auszuführen, und wird vor allem von technisch versierten Benutzern bevorzugt.
Jedes Skript verfügt über ein eindeutiges Webhook-Token, und die URL wird durch Klicken auf Copy Webhook Token in die Zwischenablage kopiert.

Beispiel für die Verwendung von Webhook-Tokens

Kopieren Sie das Webhook-Token von der Skriptseite, indem Sie auf Copy Webhook Token klicken. In diesem Beispiel sieht die Webhook-URL wie folgt aus:

http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5

Verwenden Sie die URL, um eine POST-Anfrage zu senden:

Verwendung einer API-Software wie POSTMAN

image-20250213-145831.png

Eine 200-Antwort mit der anfänglichen Job-Entität zeigt an, dass der Lauf ausgelöst wurde, wie im folgenden Screenshot dargestellt:

image-20250213-145952.png

Verwendung von cURL im Terminal

curl -X POST http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5

Die Antwort würde wie folgt aussehen


image-20250213-151347.png

Dieser Lauf kann im SKOOR Dashboard verfolgt werden, und im Verlauf wird angezeigt, dass der Lauf vom Token-Benutzer erstellt wurde.

image-20250214-095924.png

image-20250214-095945.png

Löschen

Klicken Sie auf die Kontextmenü-Schaltfläche und wählen Sie das Papierkorbsymbol, um das Skript zu löschen. Die Kontextmenü-Schaltfläche wird angezeigt, wenn Sie mit dem Mauszeiger über den Namen des Skripts fahren.

image-20260731-130723.png

Skript(e) als ZIP exportieren

Klicken Sie auf die Schaltfläche für das Kontextmenü und wählen Sie die Schaltfläche „Exportieren“, um ein einzelnes Skript zu exportieren. Das Symbol wird angezeigt, wenn Sie mit dem Mauszeiger über den Namen des Skripts fahren.
Sie können auch eine ganze Gruppe oder sogar alle im System verfügbaren Skripte exportieren.

In der exportierten ZIP-Datei befindet sich eine Datei namens script_metadata.json, die die Beschreibung, das Standard-Timeout, die Ausführungskonfiguration und die Zeitplan-Konfiguration des Skripts enthält.

In Safari: Deaktivieren Sie unter „Einstellungen“ → „Allgemein“ → „‚Sichere‘ Dateien nach dem Herunterladen öffnen“, um zu verhindern, dass ZIP-Dateien automatisch entpackt werden.

image-20260731-130907.png