Calcoli¶
La funzionalità Calcoli (Admin > Metamodello > scheda Calcoli) consente di definire formule che calcolano automaticamente i valori dei campi quando le card vengono salvate. Questo è potente per derivare metriche, punteggi e aggregazioni dai dati architetturali.
Come funziona¶
- Un amministratore definisce una formula che mira a un tipo di card e un campo specifico
- Quando qualsiasi card di quel tipo viene creata o aggiornata, la formula viene eseguita automaticamente
- Il risultato viene scritto nel campo target
- Il campo target è contrassegnato come sola lettura nella pagina di dettaglio della card (gli utenti vedono un badge "calcolato")
Creazione di un calcolo¶
Cliccate su + Nuovo calcolo e configurate:
| Campo | Descrizione |
|---|---|
| Nome | Nome descrittivo per il calcolo |
| Tipo target | Il tipo di card a cui si applica questo calcolo |
| Campo target | Il campo dove il risultato viene memorizzato |
| Formula | L'espressione da valutare (vedi la sintassi di seguito) |
| Ordine di esecuzione | Ordine di esecuzione quando esistono più calcoli per lo stesso tipo (il numero più basso viene eseguito per primo) |
| Attivo | Abilitare o disabilitare il calcolo |
Sintassi delle formule¶
Le formule utilizzano un linguaggio di espressioni sicuro e sandboxed. Potete fare riferimento agli attributi della card, ai dati delle card correlate e alle informazioni sul ciclo di vita.
Variabili di contesto¶
| Variabile | Descrizione | Esempio |
|---|---|---|
fieldKey |
Qualsiasi attributo dalla card corrente | businessCriticality |
related_{type_key} |
Array di card correlate di un dato tipo | related_applications |
lifecycle_plan, lifecycle_active, ecc. |
Valori delle date del ciclo di vita | lifecycle_endOfLife |
Funzioni predefinite¶
| Funzione | Descrizione | Esempio |
|---|---|---|
IF(condizione, val_vero, val_falso) |
Logica condizionale | IF(riskLevel == "critical", 100, 25) |
SUM(array) |
Somma dei valori numerici | SUM(PLUCK(related_applications, "costTotalAnnual")) |
AVG(array) |
Media dei valori numerici | AVG(PLUCK(related_applications, "dataQuality")) |
MIN(array) |
Valore minimo | MIN(PLUCK(related_itcomponents, "riskScore")) |
MAX(array) |
Valore massimo | MAX(PLUCK(related_itcomponents, "costAnnual")) |
COUNT(array) |
Numero di elementi | COUNT(related_interfaces) |
ROUND(valore, decimali) |
Arrotonda un numero | ROUND(avgCost, 2) |
ABS(valore) |
Valore assoluto | ABS(delta) |
COALESCE(a, b, ...) |
Primo valore non nullo | COALESCE(customScore, 0) |
LOWER(testo) |
Testo in minuscolo | LOWER(status) |
UPPER(testo) |
Testo in maiuscolo | UPPER(category) |
CONCAT(a, b, ...) |
Unisce stringhe | CONCAT(firstName, " ", lastName) |
CONTAINS(testo, ricerca) |
Verifica se il testo contiene una sottostringa | CONTAINS(description, "legacy") |
PLUCK(array, chiave) |
Estrae un campo da ogni elemento | PLUCK(related_applications, "name") |
FILTER(array, chiave, valore) |
Filtra gli elementi per valore del campo | FILTER(related_interfaces, "status", "ACTIVE") |
MAP_SCORE(valore, mappatura) |
Mappa valori categorici a punteggi | MAP_SCORE(criticality, {"high": 3, "medium": 2, "low": 1}) |
Formule di esempio¶
Costo annuale totale dalle applicazioni correlate:
SUM(PLUCK(related_applications, "costTotalAnnual"))
Punteggio di rischio basato sulla criticità:
IF(riskLevel == "critical", 100, IF(riskLevel == "high", 75, IF(riskLevel == "medium", 50, 25)))
Conteggio delle interfacce attive:
COUNT(FILTER(related_interfaces, "status", "ACTIVE"))
I commenti sono supportati utilizzando #:
# Calcola il punteggio di rischio ponderato
IF(businessCriticality == "missionCritical", riskScore * 2, riskScore)
Esecuzione dei calcoli¶
I calcoli vengono eseguiti automaticamente quando una card viene salvata. Potete anche attivare manualmente un calcolo per eseguirlo su tutte le card del tipo target:
- Trovate il calcolo nell'elenco
- Cliccate sul pulsante Esegui
- La formula viene valutata per ogni card corrispondente e i risultati vengono salvati
Ordine di esecuzione¶
Quando più calcoli mirano allo stesso tipo di card, vengono eseguiti nell'ordine specificato dal loro valore di ordine di esecuzione. Questo è importante quando un calcolo dipende dal risultato di un altro — impostate la dipendenza per essere eseguita per prima (numero inferiore).