Deux modes de déclenchement
AutomationSequence V8 propose deux modes de déclenchement complémentaires : la planification CRON (déclenchement à heure fixe) et WebhookListen (déclenchement par événement externe via HTTP). Les deux peuvent être combinés dans une même installation.
CRON pour les traitements batch planifiés. WebhookListen pour les traitements événementiels. Ensemble, ils couvrent 100% des cas d'usage de déclenchement sans dépendance à un orchestrateur externe.
Planification CRON
# Configuration CRON dans automation-sequence.config.json
{
"scheduler": {
"enabled": true,
"jobs": [
{
"name": "Export mensuel PMSI",
"sequence": "sequences/export_mensuel.asenc",
"cron": "0 6 1 * *",
"timezone": "Europe/Paris",
"enabled": true
},
{
"name": "Audit quotidien Chronotime",
"sequence": "sequences/audit_chronotime.asenc",
"cron": "30 7 * * 1-5",
"timezone": "Europe/Paris",
"skip_if_running": true
}
]
}
}
Expressions CRON avancées
| Expression | Description |
|---|---|
0 6 1 * * | 1er de chaque mois à 6h00 |
30 7 * * 1-5 | Lundi-vendredi à 7h30 |
*/15 * * * * | Toutes les 15 minutes |
0 8,12,18 * * * | À 8h, 12h et 18h chaque jour |
0 6 * * 1 | Chaque lundi à 6h |
@monthly | Alias : 1er du mois à minuit |
@weekly | Alias : dimanche à minuit |
@hourly | Alias : toutes les heures |
Fuseaux horaires
# Sans timezone : le CRON s'exécute en heure locale du serveur
# Avec timezone : garanti même après passage heure d'été/hiver
"timezone": "Europe/Paris" # recommandé en France
"timezone": "UTC" # pour les serveurs multi-régions
"timezone": "America/New_York" # EST/EDT automatique
# Tester une expression CRON
automation-sequence cron-test "30 7 * * 1-5" --timezone "Europe/Paris" --next 5
# → Affiche les 5 prochaines exécutions
WebhookListen HTTP
# Configuration WebhookListen
{
"webhooks": [
{
"name": "Déclencheur import fichier",
"path": "/webhook/import",
"method": "POST",
"auth": {"type": "bearer", "token_vault": "WEBHOOK_TOKEN"},
"sequence": "sequences/traiter_import.asenc",
"pass_body":true,
"respond": {"status": 202, "body": "Accepted"}
}
]
}
# Appel depuis un système externe
curl -X POST http://srv-automation:8420/webhook/import -H "Authorization: Bearer $WEBHOOK_TOKEN" -H "Content-Type: application/json" -d '{"filename": "import_janv.csv", "source": "HOSPILOG"}'
# Dans la séquence : {{webhook.body.filename}} = "import_janv.csv"
Queue de déclenchement
Si un webhook arrive alors qu'une séquence tourne déjà, le déclenchement est mis en file :
{
"webhooks": [{
"path": "/webhook/import",
"queue": {
"enabled": true,
"max_size": 20,
"strategy": "fifo", // fifo | lifo | priority
"on_full": "reject" // reject | drop_oldest
}
}]
}
Déduplication des webhooks
{
"webhooks": [{
"path": "/webhook/import",
"deduplication": {
"enabled": true,
"key_field": "body.filename", // dédupliquer sur le nom de fichier
"window_s": 300 // même clé ignorée pendant 5 min
}
}]
}
// Évite de traiter deux fois le même fichier si
// le système émetteur renvoie le webhook par erreur
Conclusion
CRON et WebhookListen couvrent ensemble tous les modes de déclenchement sans orchestrateur externe (Airflow, Prefect, n8n). CRON pour les traitements batch planifiés, WebhookListen pour les traitements événementiels déclenchés par des systèmes tiers. La queue de déclenchement et la déduplication garantissent qu'aucun appel n'est perdu ni traité deux fois.