Вычисления¶
Функция Вычисления (Администрирование > Метамодель > вкладка «Вычисления») позволяет определять формулы, автоматически вычисляющие значения полей при сохранении карточек. Это мощный инструмент для получения метрик, оценок и агрегаций из ваших архитектурных данных.
Как это работает¶
- Администратор определяет формулу, нацеленную на конкретный тип карточки и поле
- При создании или обновлении любой карточки этого типа формула запускается автоматически
- Результат записывается в целевое поле
- Целевое поле помечается как только для чтения на странице карточки (пользователи видят метку «вычисляемое»)
Создание вычисления¶
Нажмите + Новое вычисление и настройте:
| Поле | Описание |
|---|---|
| Название | Описательное имя вычисления |
| Целевой тип | Тип карточки, к которому применяется вычисление |
| Целевое поле | Поле, в которое записывается результат |
| Формула | Выражение для вычисления (синтаксис описан ниже) |
| Порядок выполнения | Порядок выполнения при наличии нескольких вычислений для одного типа (меньшее значение выполняется первым) |
| Активно | Включить или отключить вычисление |
Синтаксис формул¶
Формулы используют безопасный изолированный язык выражений. Вы можете ссылаться на атрибуты карточки, данные связанных карточек и информацию о жизненном цикле.
Контекстные переменные¶
| Переменная | Описание | Пример |
|---|---|---|
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)
Запуск вычислений¶
Вычисления запускаются автоматически при сохранении карточки. Вы также можете вручную запустить вычисление для всех карточек целевого типа:
- Найдите вычисление в списке
- Нажмите кнопку Запустить
- Формула будет вычислена для каждой соответствующей карточки, и результаты будут сохранены
Порядок выполнения¶
Когда несколько вычислений нацелены на один и тот же тип карточки, они выполняются в порядке, определённом их значением порядка выполнения. Это важно, когда одно вычисление зависит от результата другого — задайте зависимому вычислению более позднее выполнение (большее число).