Project

General

Profile

Actions

Task #10497

closed

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

Added by Denis Kildishev over 3 years ago. Updated almost 3 years ago.

Status:
Closed
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 не поддерживается и проблемы пока нет.

Actions #1

Updated by Alexey Khoroshilov over 3 years ago

  • Target version set to 1.3 (stable)
Actions #2

Updated by Denis Kildishev over 3 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]]

Actions #3

Updated by Denis Kildishev over 3 years ago

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

Updated by Denis Kildishev over 3 years ago

  • Published in build set to 1.3.642
Actions #5

Updated by Viktoria Kopach about 3 years ago

  • Status changed from Resolved to Verified
Actions #6

Updated by Alexey Khoroshilov almost 3 years ago

  • Status changed from Verified to Closed
Actions

Also available in: Atom PDF