Skip to content

Commit 4fbe835

Browse files
committed
update doc for cyclevie + cron
1 parent 6018596 commit 4fbe835

File tree

3 files changed

+147
-2
lines changed

3 files changed

+147
-2
lines changed

docs/.vuepress/config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ export default defineUserConfig({
4040
'validation',
4141
'formulaire',
4242
'config-gestion-mdp',
43-
'cyclevie'
43+
'cyclevie',
44+
'cron'
4445
]
4546
},
4647
{

docs/configuration/cron.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
---
2+
lang: fr-FR
3+
title: Cron
4+
description: Configuration des tâches cron et variables dynamiques
5+
---
6+
7+
# Configuration cron
8+
9+
Sésame supporte des tâches planifiées via des fichiers YAML dans `configs/cron`.
10+
Chaque tâche définit une planification, un handler console et des options.
11+
12+
## Emplacement
13+
14+
- Côté conteneur : `/data/configs/cron/*.yml`
15+
16+
Au démarrage, si des fichiers par défaut existent dans `defaults/cron`, ils sont copiés dans `configs/cron` lorsqu’ils sont absents.
17+
18+
## Structure d’un fichier cron
19+
20+
Exemple :
21+
22+
```yml
23+
tasks:
24+
- name: lifecycle-execute
25+
description: Exécute les règles lifecycle avec trigger.
26+
enabled: true
27+
schedule: "*/5 * * * *"
28+
handler: lifecycle-execute
29+
options:
30+
retentionPeriodDays: 30
31+
executedAt: "{{ date.now }}"
32+
executedAtIso: "{{ date.isoNow }}"
33+
monthlyKey: "job-{{ date.nowDate | dateFormat: 'YYYY-MM' }}"
34+
```
35+
36+
### Champs disponibles
37+
38+
- `name` : identifiant unique de la tâche (obligatoire)
39+
- `description` : description de la tâche (obligatoire)
40+
- `enabled` : active/désactive la tâche (obligatoire)
41+
- `schedule` : expression cron (obligatoire)
42+
- `handler` : commande console à exécuter (obligatoire)
43+
- `options` : options transmises au handler (optionnel)
44+
- objet clé/valeur recommandé
45+
- peut aussi être un tableau de chaînes selon les handlers
46+
47+
## Exécution du handler
48+
49+
La tâche exécute une commande de type :
50+
51+
```bash
52+
yarn run console <handler> --key='value'
53+
```
54+
55+
Les options booléennes `true` sont passées comme flags (`--flag`), les objets sont sérialisés en JSON.
56+
57+
## Variables dynamiques dans `options`
58+
59+
Les `options` supportent des variables dynamiques évaluées au runtime (à chaque exécution de la tâche).
60+
Les variables doivent être écrites en template Liquid (`{{ ... }}`).
61+
62+
### Variables disponibles
63+
64+
- `date.now` : timestamp courant en millisecondes (number)
65+
- `date.isoNow` : date courante au format ISO (string)
66+
- `date.nowDate` : date courante (Date)
67+
- `date.unix` : timestamp courant en millisecondes (number)
68+
- `date.unixSeconds` : timestamp courant en secondes (number)
69+
- `date.today` : date du jour (`YYYY-MM-DD`)
70+
- `date.yesterday` : date de la veille (`YYYY-MM-DD`)
71+
- `date.tomorrow` : date du lendemain (`YYYY-MM-DD`)
72+
73+
### Syntaxes supportées
74+
75+
- Template simple : `executedAtIso: "{{ date.isoNow }}"`
76+
- Interpolation : `batchId: "cron-{{ date.now }}"`
77+
- Filtre : `day: "{{ date.nowDate | dateFormat: 'YYYY-MM-DD' }}"`
78+
79+
### Filtres Liquid disponibles
80+
81+
- `dateFormat` : format Dayjs
82+
- `{{ date.nowDate | dateFormat: 'YYYY-MM-DD HH:mm:ss' }}`
83+
- `unixMs` : conversion en timestamp millisecondes
84+
- `{{ date.nowDate | unixMs }}`
85+
- `unixSeconds` : conversion en timestamp secondes
86+
- `{{ date.nowDate | unixSeconds }}`
87+
88+
### Moteur de templates
89+
90+
Le rendu des templates est assuré par [LiquidJS](https://liquidjs.com/).

docs/configuration/cyclevie.md

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,59 @@ identities:
135135
```
136136
`mutation` permet d’appliquer un `$set` des champs avant le passage à l’état cible. Ici, `inetOrgPerson.cn` sera modifié avant de passer à D.
137137

138-
### Planification des triggers (cron)
138+
### Variables dynamiques et templates
139+
140+
Les champs `rules` et `mutation` supportent des variables dynamiques évaluées à l’exécution.
141+
Les variables doivent être écrites en template Liquid (`{{ ... }}`).
142+
143+
Exemples valides :
144+
145+
```yml
146+
mutation: {
147+
'example.updatedAtMs': '{{ date.now }}',
148+
'example.updatedAtIso': '{{ date.isoNow }}',
149+
'example.batchKey': 'batch-{{ date.nowDate | dateFormat: "YYYY-MM-DD" }}',
150+
}
151+
```
152+
153+
#### Variables disponibles
154+
155+
- `date.now` : timestamp courant en millisecondes (number)
156+
- `date.isoNow` : date courante au format ISO (string)
157+
- `date.nowDate` : date courante (Date)
158+
- `date.unix` : timestamp courant en millisecondes (number)
159+
- `date.unixSeconds` : timestamp courant en secondes (number)
160+
- `date.today` : date du jour (`YYYY-MM-DD`)
161+
- `date.yesterday` : date de la veille (`YYYY-MM-DD`)
162+
- `date.tomorrow` : date du lendemain (`YYYY-MM-DD`)
163+
164+
#### Syntaxes supportées
165+
166+
- Template simple : `field: '{{ date.isoNow }}'`
167+
- Template avec interpolation : `field: 'prefix-{{ date.now }}'`
168+
- Template avec filtre : `field: '{{ date.nowDate | dateFormat: "YYYY-MM-DD HH:mm:ss" }}'`
169+
170+
#### Filtres Liquid disponibles
171+
172+
- `dateFormat` : formatte une date selon le format Dayjs
173+
- Ex. `{{ date.nowDate | dateFormat: "YYYY-MM-DD" }}`
174+
- `unixMs` : convertit une date en timestamp millisecondes
175+
- Ex. `{{ date.nowDate | unixMs }}`
176+
- `unixSeconds` : convertit une date en timestamp secondes
177+
- Ex. `{{ date.nowDate | unixSeconds }}`
178+
179+
#### Comportement d’évaluation
180+
181+
- L’évaluation est faite au runtime (au moment où la règle est exécutée), pas uniquement au chargement des fichiers.
182+
- Les objets et tableaux imbriqués sont résolus récursivement.
183+
- Pour une expression template seule (ex. `{{ date.now }}`), la valeur est résolue avec son type utile.
184+
- En cas d’erreur de rendu Liquid, la valeur d’origine est conservée.
185+
186+
#### Moteur de template
187+
188+
Le rendu de templates utilise [LiquidJS](https://liquidjs.com/).
189+
190+
### Planification des triggers lifecycle (cron)
139191

140192
Les règles avec `trigger` sont exécutées par une tâche planifiée. Le cron est configurable par variable d’environnement :
141193

@@ -146,6 +198,8 @@ Exemples d’expressions :
146198
- toutes les heures : `0 * * * *`
147199
- chaque nuit à 2h30 : `30 2 * * *`
148200

201+
Pour la configuration des tâches cron YAML (`configs/cron/*.yml`) et leurs variables dynamiques, voir la page dédiée : `Configuration > Cron`.
202+
149203
### Ignorer le cycle de vie pour une identité
150204

151205
Une identité peut être exclue des traitements de cycle de vie en positionnant son champ `ignoreLifecycle` à `true`. Dans ce cas, elle n’est pas prise en compte par les règles, qu’elles soient immédiates ou à délai.

0 commit comments

Comments
 (0)