Script / Importazione di dati legacy

"Scripts" è la soluzione completa di SKOOR per la creazione, la modifica e l'esecuzione di script, con tantissime opzioni per personalizzarli.

Pagina Scripts

La pagina è suddivisa in tre sezioni principali:

Impostazioni

Questa sezione include le impostazioni generali di uno script, quali:

Impostazione

Descrizione

Nome

Definisci il nome dello script SKOOR.

Descrizione

Definire la descrizione dello script SKOOR.

Timeout

Imposta il timeout predefinito per l'esecuzione dello script, in secondi.

Tipi MIME accettati

Specifica quali tipi MIME sono consentiti per i file sorgente caricati.

Configurazione di esecuzione predefinita

Seleziona la configurazione di esecuzione predefinita con cui viene eseguito lo script.

Copia e reimposta token

Consente agli amministratori di copiare e reimpostare il token del webhook. Disponibile solo per gli AMMINISTRATORI.

Configurazioni di pianificazione

Consente di impostare più pianificazioni con configurazioni di esecuzione dedicate.

Scegliere innanzitutto un periodo (Anno, Mese, Settimana, Giorno, Ora o Minuto): a seconda della selezione effettuata, verranno visualizzati solo i campi pertinenti (Mesi, Giorni del mese, Giorni della settimana, Ore, Minuti). È possibile effettuare una selezione multipla; per eseguire il processo a intervalli regolari, impostare il Periodo e fare doppio clic sul numero desiderato.

Esempio: ogni giorno alle 02:30 → Periodo "Giorno", Ora 2, Minuto 30.

Esempio: ogni 10 minuti → Periodo “Ora”, Minuto <fare doppio clic su 10>

Configurazioni di esecuzione

Consente la personalizzazione del timeout e delle variabili d’ambiente.

image-20260512-100658.png

File

Questa sezione offre una soluzione completa per la gestione dei file dello script, compreso un editor all’avanguardia per i dati in formato testo.

Se i dati sono binari (non modificabili in formato testo), verrà visualizzato un link per il download.

image-20250214-093009.png

Esecuzione

Questa sezione è responsabile dell’esecuzione e del monitoraggio delle esecuzioni di uno script. Offre una piccola area di trascinamento per caricare i file sorgente, se necessario.

image-20261015-083557.png

Supporto della barra di avanzamento

Gli script possono visualizzare una barra di avanzamento sia nella finestra di dialogo dei dettagli del lavoro che nel widget dello script. Per aggiornare lo stato di avanzamento, lo script deve emettere messaggi di stato che indichino il passaggio corrente e il numero totale di passaggi previsti. Gli aggiornamenti di stato utilizzano il seguente formato:

#PROGRESS: {step}/{maxSteps}

Le righe che corrispondono a questo formato vengono analizzate automaticamente per aggiornare la barra di avanzamento e vengono rimosse dall'output di log standard dello script.

L’esempio seguente illustra come generare aggiornamenti di avanzamento:

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

Creazione di uno script

Gli script possono essere creati manualmente oppure caricati tramite file ZIP, come illustrato di seguito:

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

Importazione di uno script tramite file ZIP

Quando si importa un file ZIP, viene eseguita un'analisi, al termine della quale vengono visualizzati diversi indicatori prima che l'importazione abbia effettivamente luogo.
L'analisi indica se gli script importati esistono già nel sistema (con lo stesso nome) o se l'importazione contiene metadati.
Indica inoltre se gli script (in caso di sovrascrittura) verranno spostati in un gruppo diverso.
Questi indicatori sono:

image-20260731-130509.png

Impostazione

Descrizione

Conferma sovrascrittura

Indica che esiste già uno script con lo stesso nome.
Selezionando questo indicatore, lo script verrà sovrascritto.

Includi metadati dello script

Indica che il file ZIP contiene il file script_metadata.json:

Questo file contiene il timeout predefinito dello script, la descrizione e la configurazione di esecuzione/pianificazione.

Elementi fondamentali di uno script

Script di esecuzione

Il file principale contiene la logica dello script. Questo determina il tipo di runner da utilizzare per lo script:

  • Il runner Python richiede un file main.py.

  • Il runner Talend richiede un file <scriptName>_run.sh.

  • Shell Runner richiede un file run.sh.

Posizionare lo script principale un livello sotto la radice (o più in alto), poiché la scansione in larghezza utilizza sempre lo script meno profondo che trova.

Quando si tenta di eseguire uno script senza uno script runner principale, viene visualizzato il seguente messaggio.

image-20250423-061703.png

.env

Si tratta di un semplice file di testo che contiene variabili d’ambiente. In questo modo le variabili utilizzate in uno script possono essere adattate in base al caso d’uso.

Il file .env deve trovarsi nella stessa cartella dello script di esecuzione (main.py, run.sh, ecc.)

Il seguente file .env produrrebbe le variabili d’ambiente mostrate, consentendo di modificarle in configurazioni di esecuzione personalizzate.

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

Variabili d’ambiente predefinite

Alcuni dettagli relativi all’esecuzione dello script vengono passati all’ambiente dello script come variabili d’ambiente. Queste sono:

  • ID utente come SKOOR_USER_ID

  • Nome utente come SKOOR_USER_USERNAME

  • Nome completo dell’utente come SKOOR_USER_FULLNAME

Le schermate riportate di seguito mostrano come recuperarli in un esempio Python insieme all'output dello script:

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

Esempio con .env

Lo script seguente legge la variabile foo nel file .env e la visualizza sulla console; di seguito sono riportate le schermate del file .env e delle rispettive configurazioni di esecuzione.

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

image-20250214-094911.png

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

File sorgente

Gli script possono essere progettati per accettare file esterni (file sorgente) ed elaborarli come parte della logica dello script.

È possibile fare riferimento ai file sorgente nello script utilizzando la variabile d'ambiente SKOOR_SOURCE_FILE, come mostrato nel seguente frammento di codice:

# 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

I seguenti tipi di file sono supportati per impostazione predefinita, a meno che non siano limitati nella configurazione dello script:

  • Testo (strutturato)

    • 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

  • Documenti

    • 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

  • Archivi

    • 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

Esecuzione di sottoscript

Se sono necessari sub-script, questi devono essere inseriti all'interno di una cartella bin. In questo modo saranno eseguibili.

Assicurarsi di inserire sempre i sub-script in una cartella bin.

Di seguito è riportato un esempio in Shell:

image-20250423-063721.png

L'output di questo script `run.sh` è:

image-20250423-063801.png

image-20250423-063907.png

L'output di questo file `run.sh` è:

image-20250423-063955.png

QuickRun

Questa opzione offre un pulsante QuickRun che esegue lo script senza un file sorgente e con i valori predefiniti delle variabili d'ambiente.
Consente di eseguire rapidamente uno script durante lo sviluppo o la risoluzione dei problemi, mentre il pulsante Latest Job Overview mostra l'output della console.

image-20250214-095256.png

Esecuzione

Avvia un'esecuzione

Nella sezione "Esegui", selezionare la configurazione desiderata (e caricare un file sorgente se necessario), quindi fare clic su "Esegui script"

image-20250214-095342.png

Annullare un'esecuzione

Sia le esecuzioni in corso che quelle in attesa possono essere annullate facendo clic sull’icona di annullamento del lavoro nella sezione Cronologia.

image-20250214-095439.png

Disattivazione di Poetry

Poetry è un potente strumento utilizzato per la gestione delle dipendenze e degli ambienti virtuali in Python. Tutto ciò avviene definendo un file pyproject.toml nella stessa cartella dello script di esecuzione (main.py, run.sh, ecc.).

Rimuovendo o rinominando il file `pyproject.toml` si disattiverà automaticamente l’uso di Poetry e si utilizzerà invece `skoor-python`.

Panoramica dei lavori

Per visualizzare i dettagli completi di un processo, fare clic su una voce nell’elenco Cronologia come mostrato di seguito:

image-20250214-095601.png

image-20250214-095612.png

Cronologia delle esecuzioni

La sezione Cronologia mostra un elenco di tutte le esecuzioni dello script. È possibile visualizzare i dettagli relativi a ciascuna esecuzione cliccandoci sopra.

image-20250214-095715.png

Utilizzo dei token Webhook per eseguire un convertitore

Questa opzione consente di eseguire lo script senza dover effettuare l’accesso ed è l’opzione preferita dagli utenti esperti.
Ogni script dispone di un token Webhook univoco e l’URL verrà copiato negli appunti cliccando su Copy Webhook Token.

Esempio di utilizzo dei token Webhook

Copiare il token Webhook dalla pagina dello script cliccando su Copy Webhook Token; in questo esempio l'URL del Webhook è il seguente:

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

Utilizza l’URL per inviare una richiesta POST:

Utilizzo di un software API come POSTMAN

image-20250213-145831.png

Una risposta 200 con l’entità del lavoro iniziale indica che l’esecuzione è stata attivata, come mostrato nella schermata qui sotto:

image-20250213-145952.png

Utilizzo di cURLnel terminale

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

La risposta dovrebbe apparire così


image-20250213-151347.png

Questa esecuzione può essere monitorata nella SKOOR Dashboard e nell’History risulta come creata dall’utente con token.

image-20250214-095924.png

image-20250214-095945.png

Eliminazione

Fare clic sul pulsante del menu contestuale e selezionare l’icona del cestino per eliminare lo script. Il pulsante del menu contestuale apparirà passando il puntatore del mouse sul nome dello script.

image-20260731-130723.png

Esportazione di script in formato ZIP

Fare clic sul pulsante del menu contestuale e selezionare il pulsante di esportazione per esportare un singolo script. L’icona apparirà quando si passa il puntatore del mouse sul nome dello script.
È anche possibile esportare un intero gruppo o persino tutti gli script disponibili sul sistema.

All’interno del file ZIP esportato viene incluso un file denominato `script_metadata.json`, contenente la descrizione, il timeout predefinito, la configurazione di esecuzione e la configurazione della pianificazione dello script.

Su Safari: disattivare Impostazioni → Generali → “Apri i file ‘sicuri’ dopo il download” per impedire l’estrazione automatica dei file ZIP.

image-20260731-130907.png