Project

General

Profile

Task #10497

Автоматизация распределения ForeignID идентефикаторов

Added by Denis Kildishev 4 months ago. Updated about 1 month ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
-
Target version:
Start date:
09/16/2020
Due date:
% Done:

100%

Estimated time:
Detected in build:
git
Published in build:
1.3.642

Description

Фиксирую текущее видение по реализации ForeignID.
Каждый идентефикатор должен быть уникален, новый доступный идентефикатор доступен в /Requirements в свойстве nextid
Для использования функции автоматического распределения идентефикаторов нужно явно ее включить в свойствах проекта. При этом также может быть реализован выбор имени свойства вместо ForeignID.
При первом включении происходит распределение новых идентефикаторов по всем наследникам /Requirements с увеличением nextid. Впоследствии все новые требования(как и скопированные) получают новый идентефикатор с увеличением nextid.
Для проверки уникальности идентефикаторов и того что все они меньше nextid нужно реализовать на это чекер.

Для того чтобы избежать чрезмерного увеличения nextid нужно реализовать массовую операцию которая будет осуществлять следующее:
1. Получит номер nextid из head проекта
2. Для каждого объекта с номером больше nextid присвоит новый номер.

Стоит также отметить наличие в будущем проблемы с merge. При этом могут появиться объекты с одинаковыми идентефикаторами. На данный момент предпологается что в этом случае второй из осуществляющих commit получит сообщение о необходимости переназначения идентефикаторов. Сейчас merge не поддерживается и проблемы пока нет.

History

#1

Updated by Alexey Khoroshilov 4 months ago

  • Target version set to 1.3 (development)
#2

Updated by Denis Kildishev about 1 month 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]]

#3

Updated by Denis Kildishev about 1 month ago

  • % Done changed from 0 to 100
  • Status changed from New to Resolved
#4

Updated by Denis Kildishev about 1 month ago

  • Published in build set to 1.3.642

Also available in: Atom PDF