Task #10497
closedАвтоматизация распределения ForeignID идентефикаторов
100%
Description
Фиксирую текущее видение по реализации ForeignID.
Каждый идентефикатор должен быть уникален, новый доступный идентефикатор доступен в /Requirements в свойстве nextid
Для использования функции автоматического распределения идентефикаторов нужно явно ее включить в свойствах проекта. При этом также может быть реализован выбор имени свойства вместо ForeignID.
При первом включении происходит распределение новых идентефикаторов по всем наследникам /Requirements с увеличением nextid. Впоследствии все новые требования(как и скопированные) получают новый идентефикатор с увеличением nextid.
Для проверки уникальности идентефикаторов и того что все они меньше nextid нужно реализовать на это чекер.
Для того чтобы избежать чрезмерного увеличения nextid нужно реализовать массовую операцию которая будет осуществлять следующее:
1. Получит номер nextid из head проекта
2. Для каждого объекта с номером больше nextid присвоит новый номер.
Стоит также отметить наличие в будущем проблемы с merge. При этом могут появиться объекты с одинаковыми идентефикаторами. На данный момент предпологается что в этом случае второй из осуществляющих commit получит сообщение о необходимости переназначения идентефикаторов. Сейчас merge не поддерживается и проблемы пока нет.
Updated by Alexey Khoroshilov about 4 years ago
- Target version set to 1.3 (stable)
Updated by Denis Kildishev about 4 years ago
Текущие детали реализации
Внутри галочка Enable Sequential Identifiers
и два поля:
Attribute name: ForeignID - по умолчанию (пустое значение запрещено, далее введённое пользователем значение обозначается <ForeignID>)
Prefix: по умолчанию пусто, что эквивалентно отсутствию префикса (только пробельные значения эквивалентно пустому)
Если префикс пуст, то атрибут <ForeignID> управляется автоматом как числовой идентификатор.
Если префикс не пуст, то атрибут <ForeignID> управляется автоматом как числовой идентификатор, а в узел Requirements добавляется атрибут <ForeignID> со значение ПРЕФИКС{<ForeignID>}. _next<ForeignID> в Requirements используется для хранения значения следующего свободного.
_ForeignID, _next<ForeignID> не видны и не редактируемы.
ForeignID попадает в список read-only.
Таблица перехода между состояниями описана по ссылке [[https://forge.ispras.ru/projects/testdb/wiki/Sequential_Identifiers]]
Updated by Denis Kildishev about 4 years ago
- Status changed from New to Resolved
- % Done changed from 0 to 100
Updated by Viktoria Kopach almost 4 years ago
- Status changed from Resolved to Verified
Updated by Alexey Khoroshilov over 3 years ago
- Status changed from Verified to Closed