Генерація унікального номера для створених у реєстрі сутностей
1. Загальний опис
На платформі реалізовано можливість налаштувати для певного атрибута сутності формування системою унікального номера. Кожний створений у бізнес-процесі екземпляр отримує унікальний та зрозумілий для користувача номер. Номер формується під час збереження сутності та є унікальним у рамках окремого реєстру.
Сутностями можуть бути документи, наприклад, акти виконаних робіт тощо. |
Моделювальник даних має можливість обрати, для яких сутностей необхідно генерувати такий номер, та в якому атрибуті сутності він зберігатиметься.
Генерація номера відбувається згідно з маскою, вказаною користувачем. Маска може відрізнятися, залежно від сутностей та бізнес-процесів. Маску можна вказати як шаблон за замовчуванням.
2. Конфігурація
Налаштування функціональності відбувається на рівні моделі даних регламенту реєстру, у директорії data-model.
Моделювальник даних має:
-
У регламенті реєстру відкрити директорію data-model.
-
Відкрити файл для створення таблиць.
-
В рамках
changeSet
для створення нової таблиці, знайти тег<column>
і всередині цього тегу визначити атрибутext:autoGenerate
з маскою (шаблоном) для генерації номерів у відповідному форматі. -
Виконати commit до Gerrit-репозиторію з регламентом реєстру для застосування змін (детальніше — див. сторінку Внесення змін до регламенту).
Схема використання атрибута ext:autoGenerate
<createTable ...>
...
<column name="column_name" type="TEXT" ext:autoGenerate="AA-{dd-MM-yyyy}-{SEQ}">
</column>
...
</createTable>
AA-{dd-MM-yyyy}-{SEQ}
— Маска, відповідно до якої генерується номер для сутності (документа/акту), де:
-
Константа
АА
— код типу документа (літери українською). -
Змінна
{dd-MM-yyyy}
— дата у форматі Java. -
Змінна
{SEQ}
— згенерований порядковий номер. Додається за принципом{SEQ} + 1
. Це означає, що кожний новий документ матиме унікальний номер, більший на одиницю за попередній.
Приклад. Використання атрибута автогенерації номерів для актів у реєстрі
<changeSet id="table auto generated number build" author="registry owner">
<createTable tableName="entity_build_acts" ext:historyFlag="true" remarks="Сутність реєстру, акт для будівель">
<column name="entity_id" type="UUID" defaultValueComputed="uuid_generate_v4()">
<constraints nullable="false" primaryKey="true" primaryKeyName="pk_entity_build_acts"/>
</column>
<column name="build_number" type="TEXT">
<constraints nullable="false"/>
</column>
<column name="section_number" type="TEXT" remarks="Корпус/секція"/>
<column name="flat_number" type="TEXT"/>
<column name="auto_generated_number" type="TEXT" ext:autoGenerate="АА-{dd-MM-yyyy}-{SEQ}">
<constraints nullable="false" unique="true"/>
</column>
<column name="build_type" type="UUID" remarks="Масив id">
<constraints nullable="false"
foreignKeyName="fk_build_type"
referencedTableName="build_type"
referencedColumnNames="build_type_id"/>
</column>
</createTable>
</changeSet>
Для формування та валідації маски дати та часу система використовує Java Date Time Format. Послідовність символів, наявність дефісів, а також регістр для днів, місяців та років не має значення. |
Ми рекомендуємо використовувати наступні схеми формату Java Date Time для встановлення маски у моделі даних:
Схема | Приклад |
---|---|
|
|
|
|
|
|
|
|
3. Застосування атрибута ext:autoGenerate у бізнес-процесі
Після успішного розгортання регламенту із використанням атрибуту ext:autoGenerate
для колонок таблиць БД, система генеруватиме зрозумілий унікальний номер для документів/актів за фактом виконання відповідних бізнес-процесів згідно зі встановленою маскою. Далі цей номер зберігатиметься у базі даних реєстру і може використовуватися, наприклад, для формування аналітичної звітності тощо.
Розглянемо приклад виконання бізнес-процесу генерації номера у Кабінеті посадової особи. |
-
Увійдіть до Кабінету посадової особи.
-
Відкрийте розділ Доступні послуги.
-
Запустіть відповідний бізнес-процес.
-
Заповніть порожні поля відповідними значеннями та натисніть
Submit
. -
Підпишіть дані, внесені на попередній формі.
-
В результаті підписання задачі, система згенерує номер створеного акту та збереже його до бази даних реєстру.
Номер створеного акту відповідає встановленій масці
AA-{dd-MM-yyyy}-{SEQ}
на рівні регламенту, у моделі даних.В нашому випадку згенеровано акт №4 з кодом АА від 14-09-2022.
-
Натисніть
Submit
для завершення процесу.