Перейти к содержанию

Вычисления

Функция Вычисления (Администрирование > Метамодель > вкладка «Вычисления») позволяет определять формулы, автоматически вычисляющие значения полей при сохранении карточек. Это мощный инструмент для получения метрик, оценок и агрегаций из ваших архитектурных данных.

Как это работает

  1. Администратор определяет формулу, нацеленную на конкретный тип карточки и поле
  2. При создании или обновлении любой карточки этого типа формула запускается автоматически
  3. Результат записывается в целевое поле
  4. Целевое поле помечается как только для чтения на странице карточки (пользователи видят метку «вычисляемое»)

Создание вычисления

Нажмите + Новое вычисление и настройте:

Поле Описание
Название Описательное имя вычисления
Целевой тип Тип карточки, к которому применяется вычисление
Целевое поле Поле, в которое записывается результат
Формула Выражение для вычисления (синтаксис описан ниже)
Порядок выполнения Порядок выполнения при наличии нескольких вычислений для одного типа (меньшее значение выполняется первым)
Активно Включить или отключить вычисление

Синтаксис формул

Формулы используют безопасный изолированный язык выражений. Вы можете ссылаться на атрибуты карточки, данные связанных карточек и информацию о жизненном цикле.

Контекстные переменные

Переменная Описание Пример
fieldKey Любой атрибут текущей карточки businessCriticality
related_{type_key} Массив связанных карточек данного типа related_applications
lifecycle_plan, lifecycle_active и т.д. Значения дат жизненного цикла lifecycle_endOfLife

Встроенные функции

Функция Описание Пример
IF(condition, true_val, false_val) Условная логика IF(riskLevel == "critical", 100, 25)
SUM(array) Сумма числовых значений SUM(PLUCK(related_applications, "costTotalAnnual"))
AVG(array) Среднее числовых значений AVG(PLUCK(related_applications, "dataQuality"))
MIN(array) Минимальное значение MIN(PLUCK(related_itcomponents, "riskScore"))
MAX(array) Максимальное значение MAX(PLUCK(related_itcomponents, "costAnnual"))
COUNT(array) Количество элементов COUNT(related_interfaces)
ROUND(value, decimals) Округление числа ROUND(avgCost, 2)
ABS(value) Абсолютное значение ABS(delta)
COALESCE(a, b, ...) Первое ненулевое значение COALESCE(customScore, 0)
LOWER(text) Текст в нижнем регистре LOWER(status)
UPPER(text) Текст в верхнем регистре UPPER(category)
CONCAT(a, b, ...) Объединение строк CONCAT(firstName, " ", lastName)
CONTAINS(text, search) Проверка вхождения подстроки CONTAINS(description, "legacy")
PLUCK(array, key) Извлечение поля из каждого элемента PLUCK(related_applications, "name")
FILTER(array, key, value) Фильтрация элементов по значению поля FILTER(related_interfaces, "status", "ACTIVE")
MAP_SCORE(value, mapping) Сопоставление категориальных значений с оценками MAP_SCORE(criticality, {"high": 3, "medium": 2, "low": 1})

Примеры формул

Суммарная годовая стоимость связанных приложений:

SUM(PLUCK(related_applications, "costTotalAnnual"))

Оценка риска на основе критичности:

IF(riskLevel == "critical", 100, IF(riskLevel == "high", 75, IF(riskLevel == "medium", 50, 25)))

Количество активных интерфейсов:

COUNT(FILTER(related_interfaces, "status", "ACTIVE"))

Комментарии поддерживаются с помощью #:

# Вычислить взвешенную оценку риска
IF(businessCriticality == "missionCritical", riskScore * 2, riskScore)

Запуск вычислений

Вычисления запускаются автоматически при сохранении карточки. Вы также можете вручную запустить вычисление для всех карточек целевого типа:

  1. Найдите вычисление в списке
  2. Нажмите кнопку Запустить
  3. Формула будет вычислена для каждой соответствующей карточки, и результаты будут сохранены

Порядок выполнения

Когда несколько вычислений нацелены на один и тот же тип карточки, они выполняются в порядке, определённом их значением порядка выполнения. Это важно, когда одно вычисление зависит от результата другого — задайте зависимому вычислению более позднее выполнение (большее число).