Skip to content

Имяобразование экземпляров

Названия экземпляров любого класса могут формироваться автоматически по заданному шаблону с помощью текстовых OSA-правил (см. руководство по созданию правил).

Для создания правила имяобразования и назначения его на класс выполните следующие действия:

  1. Найдите класс на любой онтологической карте и открой его карточку в боковой панели
  2. На закладке "Концепт" в поле "Правило для имяобразования" кликните по кнопке "Создать правило" ()
  3. Укажите название правила
  4. Укажите текст правила для имяобразования и нажмите кнопку "Ок"
  5. Сохраните изменения в карточке класса, кликнув по кнопке "Сохранить"

Для редактирования или просмотра правила имяобразования кликните по кнопке "Редактировать правило" () в поле "Правило для имяобразования" карточки класса.

Важно

Если у экземпляра в каком-либо свойстве, участвующем в имяобразовании, не будет данных, то правило не вернет результатов. Для обработки таких случаев можно использовать ключевое слово isNull (см. пример ниже)

Совет

Создать и отредактировать правило имяобразования можно в виджете "Правило" в рабочем пространстве онтологии.

Повышение производительности

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

Для запрета вычисления названий экземпляров при любом обращении к ним необходимо установить галочку "Хранить вычисленное имя в базе данных" в карточке класса. Установка этой галочки приведет к следующему поведению системы:

  • название экземпляра будет вычисляться каждый раз при редактировании любого свойства экземпляра
  • при обращении к экземпляру его название вычисляться не будет, а будет использовано последнее сохраненное название

Автоматическая нумерация экземпляров

При создании экземпляра класса ему может быть присвоен уникальный номер.

Нумерация экземпляров осуществляется по порядку, начиная с нуля с шагом один. Первый созданный экземпляр класса получит номер 0, второй - 1 и т.д. Удаление экземпляров из класса не влияет на счетчик автоматической нумерации. Например, если вы создали три экземпляра, а затем удалили третий, то при создании нового экземпляра он получит номер 4.

Для включения режима автоматической нумерации экземпляров выполните следующие действия:

  1. Добавьте в класс скалярное целочисленное свойство с любым названием
  2. В карточке свойства в боковом меню укажите галочку у атрибута "Автоинкремент"
  3. Сохраните данные в карточке свойства

Номера созданных экземпляров будут доступны в созданном свойстве, рекомендуется запретить его редактирование.

Важно

  1. В классе должно быть только одно свойство с атрибутом "Автоинкремент".
  2. Если на момент добавления в класс свойства с автоинкрементом, в классе уже были экземпляры, то они не будут пронумерованы, а нумерация новых экземпляров начнется с нуля.
  3. Одно и то же свойство с автоинкрементом можно переиспользовать во множестве классов. Для каждого класса, в котором используется это свойство, создается отдельный счетчик. Эти счетчики работают независимо друг от друга.

Внимание

Счетчики для автоинкрементных свойств в классах не создаются автоматически. Сообщите администратору OSA о необходимости создать счетчики после добавления к классам свойств с автоинкрементом.

lpad

string.lpad(length, fill)

Функция lpad дополняет строку string слева до длины length символом fill. Если длина строки уже больше заданной, возвращается исходная строка.

Использование функции может быть полезно, если важно сортировать экземпляры по наименованию в логике автонумерации:

Неверная сортировкаВерная сортировка
1. Один001. Один
10. Десять002. Два
2. Два010. Десять

[Класс].[числовое_свойство].lpad(4, "0") + ". " + [Класс].[наименование]

Имя термина (вычисленное)числовое свойствонаименование
0001. abc1abc
0123. xyz123xyz
1234. jkl1234jkl
12345. bnm12345bnm

Примеры правил имяобразования

[Требование].[Наследует_классам].[код] + "-" + [Требование].[автоинкремент] + ". " + [Требование].[название_требования]

С помощью этого правила формируется название экземпляра класса "Требование". Пример сформированного названия экземпляра "ReqNF-123. Время отклика интерфейса на действия пользователя не должно превышать 3 секунд", здесь:

  • ReqNF - код класса "Требование"
  • 123 - номер экземпляра, автоматически сгенерированный системой
  • Время отклика... - название требования

"Я, как " + [UserStory].[роль].[name] + ", хочу " + [UserStory].[что_хочу_получить]

С помощью этого правила формируется название экземпляра класса "Пользовательская история". Пример сформированного названия экземпляра "Я, как ИТ-директор, хочу получать уведомления о неработоспособности критически важных объектов ИТ-инфраструктуры", здесь:

  • "Я, как" и ", хочу " - строковые константы в правиле
  • ИТ-директор - название связанной с пользовательской историей ролью
  • получать уведомления... - описание желаемого в строковом свойстве "что хочу получить"

[Задача].[код].isNull("н/д") + ". " + [Задача].[название]

С помощью этого правила формируется название экземпляра класса "Задача". Примеры сформированных названий экземпляров:

  • 1.1. Разработать расписание проекта - для задачи указан код "1.1"
  • н/д. Разработать бюджет проекта - для задачи не указан код, поэтому он был заменен на "н/д"