Trigger Nodes
I nodi Trigger sono il punto di partenza di ogni workflow. Definiscono quando e come il flusso viene attivato.
Trigger
Il nodo Trigger avvia il workflow. Supporta quattro modalitΓ di attivazione.
Configurazione
| Campo | Tipo | Descrizione |
|---|---|---|
label | text | Nome identificativo del trigger |
triggerType | select | ModalitΓ di attivazione |
schedule | text | Espressione cron (solo per tipo cron) |
webhookPath | text | Path URL (solo per tipo webhook) |
eventType | select | Tipo evento (solo per tipo event) |
Tipi di Trigger
Manual - Esecuzione on-demand
Lβutente avvia manualmente il workflow dallβinterfaccia.
Quando usarlo:
- Test e debug
- Operazioni occasionali
- Task che richiedono supervisione
Esempio configurazione:
triggerType: manual
label: "Avvia Deploy Manuale"
Cron - Esecuzione schedulata
Il workflow viene eseguito automaticamente secondo una schedulazione cron.
Sintassi Cron:
ββββββββββββββ minuto (0-59)
β ββββββββββββββ ora (0-23)
β β ββββββββββββββ giorno del mese (1-31)
β β β ββββββββββββββ mese (1-12)
β β β β ββββββββββββββ giorno della settimana (0-7, 0=domenica)
β β β β β
* * * * *
Esempi comuni:
| Schedule | Significato |
|---|---|
0 9 * * * | Ogni giorno alle 9:00 |
*/15 * * * * | Ogni 15 minuti |
0 0 * * 0 | Ogni domenica a mezzanotte |
0 8-18 * * 1-5 | Ogni ora dalle 8 alle 18, lun-ven |
0 0 1 * * | Il primo di ogni mese a mezzanotte |
Esempio configurazione:
triggerType: cron
schedule: "0 6 * * *"
label: "Backup Giornaliero 6:00"
Webhook - Attivazione HTTP
Il workflow viene attivato da una chiamata HTTP esterna.
URL generato:
https://your-domain.com/api/webhooks/flows/{flowId}/{webhookPath}
Headers richiesti:
Content-Type: application/json
X-Webhook-Secret: {secret} # opzionale ma consigliato
Esempio configurazione:
triggerType: webhook
webhookPath: "/deploy-notification"
label: "GitHub Deploy Hook"
Payload ricevuto disponibile in:
{{trigger.data.body}} # corpo della richiesta
{{trigger.data.headers}} # headers HTTP
{{trigger.data.query}} # query parameters
Event - Reazione a eventi piattaforma
Il workflow si attiva quando si verifica un evento interno.
Eventi disponibili:
| Evento | Descrizione |
|---|---|
client.created | Nuovo cliente creato |
submission.received | Form submission ricevuta |
alert.triggered | Alert di monitoring scattato |
deploy.completed | Deploy completato |
scan.finished | Scansione sicurezza terminata |
Esempio configurazione:
triggerType: event
eventType: "client.created"
label: "Setup Nuovo Cliente"
Dati evento disponibili in:
{{trigger.event.type}} # tipo evento
{{trigger.event.data}} # payload evento
{{trigger.event.timestamp}}
Workflow Esempio: Health Check Schedulato
Questo workflow esegue un health check ogni 5 minuti e invia una notifica se il servizio Γ¨ down.
Configurazione dettagliata
1. Trigger Node
type: trigger
triggerType: cron
schedule: "*/5 * * * *"
label: "Check ogni 5 minuti"
2. Monitor Node
type: monitor
monitorType: uptime
target: "https://api.example.com/health"
expectedStatus: 200
timeout: 5000
3. Condition Node
type: condition
condition: "{{monitor.output.isHealthy}} === true"
4. Notification Node (branch No)
type: notification
channel: slack
message: "β οΈ API DOWN: {{monitor.output.target}} - {{monitor.output.error}}"
5. Logger Node (branch Yes)
type: logger
level: info
message: "β
API OK - Response time: {{monitor.output.responseTime}}ms"
Workflow Esempio: CI/CD con Webhook GitHub
Questo workflow si attiva quando GitHub invia un webhook push e esegue il deploy.
Configurazione dettagliata
1. Trigger Node
type: trigger
triggerType: webhook
webhookPath: "/github-push"
label: "GitHub Push Event"
2. Condition Node
type: condition
condition: "{{trigger.data.body.ref}} === 'refs/heads/main'"
3. Docker Build Node
type: dockerBuild
action: buildAndPush
gitRepo: "{{trigger.data.body.repository.clone_url}}"
gitBranch: "main"
imageName: "myapp"
imageTag: "{{trigger.data.body.after | slice(0,7)}}"
4. Deployment Node
type: deployment
vpsId: "prod-server-1"
action: deploy
stackName: "myapp-production"
Output del Trigger
Tutti i trigger producono un output standard accessibile dai nodi successivi:
{
"type": "manual|cron|webhook|event",
"timestamp": "2024-01-15T09:00:00Z",
"flowId": "flow-123",
"executionId": "exec-456",
"data": {
// Per webhook: body, headers, query
// Per event: event payload
// Per cron/manual: {}
}
}
Best Practices
Sicurezza Webhook
- Usa sempre un secret per validare le richieste
- Limita gli IP se possibile (es: solo IP GitHub)
- Valida il payload prima di processarlo
# Nel nodo Condition dopo il webhook
condition: "{{trigger.data.headers['x-hub-signature-256']}} !== undefined"
Cron: evita sovrapposizioni
Se un workflow impiega piΓΉ tempo dellβintervallo cron, usa il flag skipIfRunning:
triggerType: cron
schedule: "*/5 * * * *"
skipIfRunning: true
Eventi: filtra correttamente
Gli eventi possono contenere dati parziali. Usa sempre condition per validare:
condition: "{{trigger.event.data.clientId}} !== undefined"