Кастомизируйте метамодель — слегка
Метамодель Canopy полностью настраиваема администратором — каждый тип карточки, поле, подтип, связь и роль стейкхолдера — это данные, а не код. У Вас возникнет соблазн её переработать. Не делайте этого.
Команды, которые преуспевают, кастомизируют метамодель только когда стандартные поля не могут ответить на их вопрос. Команды, которые терпят неудачу, тратят первый ме сяц на переименование Application в Solution, добавление 30 пользовательских полей и так и не доходят до рабочего отчёта.
Что уже есть в метамодели
Прежде чем что-либо добавлять, узнайте, что у Вас уже имеется. Встроенный тип карточки Application поставляется со следующими полями «из коробки» (среди прочих):
| Встроенное поле | Тип | Для чего оно |
|---|---|---|
businessCriticality | single_select | Mission-critical / Important / Useful / Marginal |
functionalSuitability | single_select | Perfect / Appropriate / Insufficient / Unreasonable |
technicalSuitability | single_select | Fully Appropriate / Adequate / Unreasonable / Inappropriate |
timeModel | single_select (обязательное) | Tolerate / Invest / Migrate / Eliminate — каноническая TIME-диспозиция Gartner |
riskLevel | single_select | Low / Medium / High / Critical |
businessValue | single_select | Управляет осью Y Portfolio Report |
costTotalAnnual | cost | Суммарные годовые затраты |
lifecycle.* | даты | Plan / Phase In / Active / Phase Out / End of Life |
Всё, что нужно для Рационализации портфеля приложений, уже здесь, включая TIME Model. Вам не нужно добавлять поле TIME — Вы его заполняете (вручную или через вычисление, см. Ваш первый анализ). То же самое верно для functionalSuitability и technicalSuitability — двух измерений пригодности, которые классически определяют положение в TIME.
Тест из двух вопросов перед добавлением поля
Когда Вы всё-таки обнаружите, что Вам нужно поле, которого действительно нет в метамодели, спросите себя:
- Буду ли я фильтровать, группировать или строить отчёт по этому полю? Если нет, оно принадлежит описанию или тегу — а не полю.
- Нужен ли один и тот же ответ на каждой карточке этого типа? Если нет, это связь или вложение, а не поле.
Если Вы не можете ответить «да» на оба, не добавляйте поле.
Если Вам действительно нужно пользовательское поле
Для редкого случая, когда действительно нужно подлинно новое поле (например, флаг cloudReadiness, регуляторная классификация, маркер клиентского сегмента), последовательность действий такова:
- Перейдите в Админ → Метамодель, кликните по типу, переключитесь на вкладку Fields.
- Выберите секцию (или создайте новую) и нажмите + Add field.
- Заполните:
- Key в lower camel-case (например,
cloudReadiness) — становится ключом атрибута в JSON и в формулах. - Label (и перевод для каждой поддерживаемой Вами локали — иначе неанглоязычные пользователи увидят сырой ключ).
- Type —
text,number,cost,boolean,date,url,single_select,multiple_select. - Weight —
0, чтобы исключить из Качества данных,1+, чтобы включить и взвесить. - Required — оставьте выключенным при первом развёртывании; required заблокирует согласование каждой существующей карточки.
- Key в lower camel-case (например,
- Для типов select добавьте опции (key + label + цвет) и переведите каждую опцию.
- Сохраните.
Поле сразу доступно в Инвентаризации (Columns, фильтры), на карточке и в формулах Вычислений как <fieldKey>. Полная справка: Админ → Метамодель.
Вариант: выводите поле автоматически с помощью Вычисления
Помимо стандартного варианта, когда пользователи заполняют поле вручную, Canopy может вычислять значение поля автоматически из других полей той же карточки — включая встроенные — с помощью функции Вычислений. Вычисляемое поле становится только для чтения и получает бейдж «calculated», чтобы пользователи не могли отступить от правила.
Канонический пример — вычисление TIME Model, которое выводит встроенное поле timeModel на Application из измерения бизнес-пригодности и измерения технической пригодности. Оно поставляется как одна из записей в панели Formula Reference внутри Админ → Метамодель → Вычисления при создании нового вычисления, поэтому Вы можете выбрать его прямо из панели. Target type = Application, target field = timeModel; предоставленная панелью формула воспроизведена в Админ → Вычисления → Example Formulas.
Формула предполагает два поля single_select с именами businessFit и technicalFit с опциями excellent / adequate / insufficient / unreasonable. Они не входят во встроенную метамодель — добавьте их на Application согласно шагам по пользовательским полям выше, если Вы хотите использовать это вычисление.
Вычисляемый TIME — это стартовая гипотеза, а не вердикт. Либо проверяйте каждый результат с Владельцем приложения, прежде чем доверять ему, либо отключайте вычисление и полагайтесь на ручной ввод, когда валидационный воркшоп завершён.
Гибридный паттерн, который хорошо работает на практике: держите вычисление включённым, пока Вы строите инвентарь и в основном располагаете данными о пригодности; выключите его для валидационного воркшопа; затем оставьте выключенным, чтобы ручные решения закрепились.