Documentazione

Schedule (cron)

Innesca una pipeline a intervalli regolari — giornalieri, settimanali, mensili o con un'espressione cron arbitraria.

Il canale schedule innesca una pipeline secondo un calendario definito. È l'equivalente di un cron, ma configurato nell'editor del modello e registrato come ogni altro exchange.

Perché questo canale

Non tutte le pipeline sono reattive (a un'email, una chiamata, un webhook). Molte sono proattive: report giornaliero, follow-up settimanale, controllo orario di un sistema esterno. È questo ciò che copre il canale schedule.

Configurazione

  1. Nell'editor del modello, configura il nodo Start con un ricevitore Trigger pianificato.
  2. Scegli:
    • Calendario — costruiscilo visivamente con il CronBuilder (giornaliero, settimanale o mensile, all'ora che preferisci), oppure passa alla modalità avanzata per inserire un'espressione cron classica a 5 campi (0 8 * * 1-5 = alle 8 nei giorni feriali). Nessuna conoscenza della sintassi cron richiesta.
    • Fuso orario — nome IANA (Europe/Paris, UTC…) nel quale viene interpretato il calendario. Per impostazione predefinita: UTC.
    • Obiettivo — un'etichetta libera (ad es. briefing_hebdo, alerte_impayes) passata alla pipeline per instradarla.
    • Se un tick viene perso — la politica di recupero (catchup), vedi più avanti. Per impostazione predefinita: recupera tutto.

Una pipeline, più obiettivi. Uno stesso Start può portare più trigger pianificati, ognuno con un objectif diverso. Le condizioni (filter) all'inizio della pipeline dirigono quindi l'esecuzione in base all'obiettivo ricevuto — ad esempio un briefing settimanale il lunedì e un alert giornaliero nello stesso modello (vedi CFO IA).

Cosa riceve la pipeline

A ogni trigger, viene creato un exchange con:

  • schedule.objectif — l'etichetta dell'obiettivo configurato (per l'instradamento multi-trigger)
  • schedule.cron — l'espressione cron configurata
  • schedule.occurrence — il timestamp pianificato (UTC)
  • schedule.fired_at — il timestamp effettivo dell'innesco (UTC)
  • schedule.catchup — true se questo innesco è un recupero

Tolleranza e recupero

Ogni innesco viene messo in una coda durevole prima di essere eseguito: un riavvio durante l'esecuzione non lo perde.

Se betool non è disponibile al momento di un trigger (manutenzione, incidente), la sorte delle occorrenze mancate dipende dall'impostazione Se un tick viene perso (catchup) del trigger:

SceltaValoreEffetto
recupera tutto (predefinito)allLe occorrenze mancate vengono rieseguite, entro una finestra di 24 ore e nel limite delle 12 più recenti.
solo il più recenterun_onceViene rieseguita solo l'occorrenza mancata più recente.
nessunoskipNessuna occorrenza mancata viene rieseguita; la pipeline riprende al prossimo trigger previsto.

Un'occorrenza recuperata viene eseguita una sola volta e contrassegnata con schedule.catchup = true, il che permette alla pipeline di segnalare un report prodotto in ritardo. Un'occorrenza saltata volontariamente (run_once, skip) lo è in modo definitivo: non riemerge più tardi, anche se cambi politica in seguito.

Oltre la finestra di 24 ore, non viene rieseguito nulla: un report mancante è meglio di una valanga di report tardivi. Un trigger che non è mai stato eseguito non ha nulla da recuperare.

Scegli solo il più recente per uno stato istantaneo (sincronizzazione, verifica) in cui conta solo l'ultima esecuzione, e nessuno quando un'esecuzione tardiva non avrebbe più senso (alert orario, sollecito a ora fissa).

Casi d'uso tipici

  • Report giornaliero alle 8 — un agent che interroga diversi sistemi, riassume e invia un brief via email.
  • Sync oraria — una pipeline che estrae nuovi elementi da un sistema esterno, li passa a un agent classificatore e inserisce i risultati nel tuo CRM.
  • Controllo settimanale — un agent che verifica lo stato di un'infrastruttura e segnala le discrepanze.
  • Follow-up a G+7 — sui lead inviati una settimana fa e ancora senza risposta.

Buone pratiche

  • Evita gli avvii al minuto esatto — molti sistemi si attivano a 0 * * * *. Preferisci 7 * * * * per distribuire il carico.
  • Registra le attività che non hanno nulla da fare. Un'attività che viene eseguita ma non fa nulla (perché non ci sono elementi da elaborare) deve tracciarlo esplicitamente. Altrimenti, non potrai distinguere "tutto va bene" da "l'attività non gira più".