Trigger Nodes

I nodi Trigger sono il punto di partenza di ogni workflow. Definiscono quando e come il flusso viene attivato.


Trigger

trigger

Il nodo Trigger avvia il workflow. Supporta quattro modalitΓ  di attivazione.

Configurazione

CampoTipoDescrizione
labeltextNome identificativo del trigger
triggerTypeselectModalitΓ  di attivazione
scheduletextEspressione cron (solo per tipo cron)
webhookPathtextPath URL (solo per tipo webhook)
eventTypeselectTipo 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:

ScheduleSignificato
0 9 * * *Ogni giorno alle 9:00
*/15 * * * *Ogni 15 minuti
0 0 * * 0Ogni domenica a mezzanotte
0 8-18 * * 1-5Ogni 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:

EventoDescrizione
client.createdNuovo cliente creato
submission.receivedForm submission ricevuta
alert.triggeredAlert di monitoring scattato
deploy.completedDeploy completato
scan.finishedScansione 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.

Diagramma di flusso

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.

Diagramma di flusso

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
  1. Usa sempre un secret per validare le richieste
  2. Limita gli IP se possibile (es: solo IP GitHub)
  3. 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"