Calculs¶
La fonctionnalité Calculs (Admin > Métamodèle > onglet Calculs) vous permet de définir des formules qui calculent automatiquement des valeurs de champs lorsque les fiches sont sauvegardées. C'est un outil puissant pour dériver des métriques, des scores et des agrégations à partir de vos données d'architecture.
Comment ça marche¶
- Un administrateur définit une formule ciblant un type de fiche et un champ spécifiques
- Lorsqu'une fiche de ce type est créée ou mise à jour, la formule s'exécute automatiquement
- Le résultat est écrit dans le champ cible
- Le champ cible est marqué en lecture seule sur la page de détail de la fiche (les utilisateurs voient un badge « calculé »)
Création d'un calcul¶
Cliquez sur + Nouveau calcul et configurez :
| Champ | Description |
|---|---|
| Nom | Nom descriptif du calcul |
| Type cible | Le type de fiche auquel ce calcul s'applique |
| Champ cible | Le champ où le résultat est stocké |
| Formule | L'expression à évaluer (voir la syntaxe ci-dessous) |
| Ordre d'exécution | Ordre d'exécution lorsque plusieurs calculs existent pour le même type (le plus petit s'exécute en premier) |
| Actif | Activer ou désactiver le calcul |
Syntaxe des formules¶
Les formules utilisent un langage d'expression sécurisé et isolé. Vous pouvez référencer les attributs de la fiche, les données des fiches liées et les informations du cycle de vie.
Variables de contexte¶
| Variable | Description | Exemple |
|---|---|---|
fieldKey |
N'importe quel attribut de la fiche courante | businessCriticality |
related_{type_key} |
Tableau de fiches liées d'un type donné | related_applications |
lifecycle_plan, lifecycle_active, etc. |
Valeurs de dates du cycle de vie | lifecycle_endOfLife |
Fonctions intégrées¶
| Fonction | Description | Exemple |
|---|---|---|
IF(condition, valeur_vraie, valeur_fausse) |
Logique conditionnelle | IF(riskLevel == "critical", 100, 25) |
SUM(tableau) |
Somme des valeurs numériques | SUM(PLUCK(related_applications, "costTotalAnnual")) |
AVG(tableau) |
Moyenne des valeurs numériques | AVG(PLUCK(related_applications, "dataQuality")) |
MIN(tableau) |
Valeur minimale | MIN(PLUCK(related_itcomponents, "riskScore")) |
MAX(tableau) |
Valeur maximale | MAX(PLUCK(related_itcomponents, "costAnnual")) |
COUNT(tableau) |
Nombre d'éléments | COUNT(related_interfaces) |
ROUND(valeur, decimales) |
Arrondir un nombre | ROUND(avgCost, 2) |
ABS(valeur) |
Valeur absolue | ABS(delta) |
COALESCE(a, b, ...) |
Première valeur non nulle | COALESCE(customScore, 0) |
LOWER(texte) |
Texte en minuscules | LOWER(status) |
UPPER(texte) |
Texte en majuscules | UPPER(category) |
CONCAT(a, b, ...) |
Concaténer des chaînes | CONCAT(firstName, " ", lastName) |
CONTAINS(texte, recherche) |
Vérifier si le texte contient une sous-chaîne | CONTAINS(description, "legacy") |
PLUCK(tableau, cle) |
Extraire un champ de chaque élément | PLUCK(related_applications, "name") |
FILTER(tableau, cle, valeur) |
Filtrer les éléments par valeur de champ | FILTER(related_interfaces, "status", "ACTIVE") |
MAP_SCORE(valeur, correspondance) |
Associer des valeurs catégorielles à des scores | MAP_SCORE(criticality, {"high": 3, "medium": 2, "low": 1}) |
Exemples de formules¶
Coût annuel total des applications liées :
SUM(PLUCK(related_applications, "costTotalAnnual"))
Score de risque basé sur la criticité :
IF(riskLevel == "critical", 100, IF(riskLevel == "high", 75, IF(riskLevel == "medium", 50, 25)))
Nombre d'interfaces actives :
COUNT(FILTER(related_interfaces, "status", "ACTIVE"))
Les commentaires sont pris en charge avec # :
# Calculer le score de risque pondéré
IF(businessCriticality == "missionCritical", riskScore * 2, riskScore)
Exécution des calculs¶
Les calculs s'exécutent automatiquement lorsqu'une fiche est sauvegardée. Vous pouvez également déclencher manuellement un calcul pour l'exécuter sur toutes les fiches du type cible :
- Trouvez le calcul dans la liste
- Cliquez sur le bouton Exécuter
- La formule est évaluée pour chaque fiche correspondante et les résultats sont sauvegardés
Ordre d'exécution¶
Lorsque plusieurs calculs ciblent le même type de fiche, ils s'exécutent dans l'ordre spécifié par leur valeur d'ordre d'exécution. C'est important lorsqu'un calcul dépend du résultat d'un autre -- définissez la dépendance pour qu'elle s'exécute en premier (numéro inférieur).