Имяобразование экземпляров
Названия экземпляров любого класса могут формироваться автоматически по заданному шаблону с помощью текстовых OSA-правил (см. руководство по созданию правил).
Для создания правила имяобразования и назначения его на класс выполните следующие действия:
- Найдите класс на любой онтологической карте и открой его карточку в боковой панели
- На закладке "Концепт" в поле "Правило для имяобразования" кликните по кнопке "Создать правило" ()
- Укажите название правила
- Укажите текст правила для имяобразования и нажмите кнопку "Ок"
- Сохраните изменения в карточке класса, кликнув по кнопке "Сохранить"
Для редактирования или просмотра правила имяобразования кликните по кнопке "Редактировать правило" () в поле "Правило для имяобразования" карточки класса.
Важно
Если у экземпляра в каком-либо свойстве, участвующем в имяобразовании, не будет данных, то правило не вернет результатов. Для обработки таких случаев можно использовать ключевое слово isNull (см. пример ниже)
Совет
Создать и отредактировать правило имяобразования можно в виджете "Правило" в рабочем пространстве онтологии.
Повышение производительности
При указании правила имяобразования для класса, названия экземпляров класса вычисляются каждый раз при обращении к ним. В ситуациях, когда название экземпляра может измениться только в результате редактирования самого экземпляра, такой подход может приводить к избыточным вычислениям и снижению производительности системы.
Для запрета вычисления названий экземпляров при любом обращении к ним необходимо установить галочку "Хранить вычисленное имя в базе данных" в карточке класса. Установка этой галочки приведет к следующему поведению системы:
- название экземпляра будет вычисляться каждый раз при редактировании любого свойства экземпляра
- при обращении к экземпляру его название вычисляться не будет, а будет использовано последнее сохраненное название
Автоматическая нумерация экземпляров
При создании экземпляра класса ему может быть присвоен уникальный номер.
Нумерация экземпляров осуществляется по порядку, начиная с нуля с шагом один. Первый созданный экземпляр класса получит номер 0, второй - 1 и т.д. Удаление экземпляров из класса не влияет на счетчик автоматической нумерации. Например, если вы создали три экземпляра, а затем удалили третий, то при создании нового экземпляра он получит номер 4.
Для включения режима автоматической нумерации экземпляров выполните следующие действия:
- Добавьте в класс скалярное целочисленное свойство с любым названием
- В карточке свойства в боковом меню укажите галочку у атрибута "Автоинкремент"
- Сохраните данные в карточке свойства
Номера созданных экземпляров будут доступны в созданном свойстве, рекомендуется запретить его редактирование.
Важно
- В классе должно быть только одно свойство с атрибутом "Автоинкремент".
- Если на момент добавления в класс свойства с автоинкрементом, в классе уже были экземпляры, то они не будут пронумерованы, а нумерация новых экземпляров начнется с нуля.
- Одно и то же свойство с автоинкрементом можно переиспользовать во множестве классов. Для каждого класса, в котором используется это свойство, создается отдельный счетчик. Эти счетчики работают независимо друг от друга.
Внимание
Счетчики для автоинкрементных свойств в классах не создаются автоматически. Сообщите администратору OSA о необходимости создать счетчики после добавления к классам свойств с автоинкрементом.
lpad
string.lpad(length, fill)Функция lpad дополняет строку string слева до длины length символом fill. Если длина строки уже больше заданной, возвращается исходная строка.
Использование функции может быть полезно, если важно сортировать экземпляры по наименованию в логике автонумерации:
| Неверная сортировка | Верная сортировка |
|---|---|
| 1. Один | 001. Один |
| 10. Десять | 002. Два |
| 2. Два | 010. Десять |
[Класс].[числовое_свойство].lpad(4, "0") + ". " + [Класс].[наименование]
| Имя термина (вычисленное) | числовое свойство | наименование |
|---|---|---|
0001. abc | 1 | abc |
0123. xyz | 123 | xyz |
1234. jkl | 1234 | jkl |
12345. bnm | 12345 | bnm |
Примеры правил имяобразования
[Требование].[Наследует_классам].[код] + "-" + [Требование].[автоинкремент] + ". " + [Требование].[название_требования]
С помощью этого правила формируется название экземпляра класса "Требование". Пример сформированного названия экземпляра "ReqNF-123. Время отклика интерфейса на действия пользователя не должно превышать 3 секунд", здесь:
- ReqNF - код класса "Требование"
- 123 - номер экземпляра, автоматически сгенерированный системой
- Время отклика... - название требования
"Я, как " + [UserStory].[роль].[name] + ", хочу " + [UserStory].[что_хочу_получить]
С помощью этого правила формируется название экземпляра класса "Пользовательская история". Пример сформированного названия экземпляра "Я, как ИТ-директор, хочу получать уведомления о неработоспособности критически важных объектов ИТ-инфраструктуры", здесь:
- "Я, как" и ", хочу " - строковые константы в правиле
- ИТ-директор - название связанной с пользовательской историей ролью
- получать уведомления... - описание желаемого в строковом свойстве "что хочу получить"
[Задача].[код].isNull("н/д") + ". " + [Задача].[название]
С помощью этого правила формируется название экземпляра класса "Задача". Примеры сформированных названий экземпляров:
- 1.1. Разработать расписание проекта - для задачи указан код "1.1"
- н/д. Разработать бюджет проекта - для задачи не указан код, поэтому он был заменен на "н/д"