Генерація унікального номера для створених у реєстрі сутностей

1. Загальний опис

На платформі реалізовано можливість налаштувати для певного атрибута сутності формування системою унікального номера. Кожний створений у бізнес-процесі екземпляр отримує унікальний та зрозумілий для користувача номер. Номер формується під час збереження сутності та є унікальним у рамках окремого реєстру.

Сутностями можуть бути документи, наприклад, акти виконаних робіт тощо.

Моделювальник даних має можливість обрати, для яких сутностей необхідно генерувати такий номер, та в якому атрибуті сутності він зберігатиметься.

Генерація номера відбувається згідно з маскою, вказаною користувачем. Маска може відрізнятися, залежно від сутностей та бізнес-процесів. Маску можна вказати як шаблон за замовчуванням.

2. Конфігурація

Налаштування функціональності відбувається на рівні моделі даних регламенту реєстру, у директорії data-model.

Моделювальник даних має:

  1. У регламенті реєстру відкрити директорію data-model.

  2. Відкрити файл для створення таблиць.

  3. В рамках changeSet для створення нової таблиці, знайти тег <column> і всередині цього тегу визначити атрибут ext:autoGenerate з маскою (шаблоном) для генерації номерів у відповідному форматі.

  4. Виконати 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 для встановлення маски у моделі даних:

Таблиця 1. Схеми дати й часу Java-формату та результат
Схема Приклад

dd-MM-yyyy hh:mm:ss

02-09-2022 06:07:59

YYYYMMDD hh:mm:ss

20220902 06:07:59

MM/dd/yyyy

09/02/2022

dd/MM/yyyy

02/09/2022

3. Застосування атрибута ext:autoGenerate у бізнес-процесі

Після успішного розгортання регламенту із використанням атрибуту ext:autoGenerate для колонок таблиць БД, система генеруватиме зрозумілий унікальний номер для документів/актів за фактом виконання відповідних бізнес-процесів згідно зі встановленою маскою. Далі цей номер зберігатиметься у базі даних реєстру і може використовуватися, наприклад, для формування аналітичної звітності тощо.

Розглянемо приклад виконання бізнес-процесу генерації номера у Кабінеті посадової особи.

  1. Увійдіть до Кабінету посадової особи.

  2. Відкрийте розділ Доступні послуги.

  3. Запустіть відповідний бізнес-процес.

    auto generate number 1

  4. Заповніть порожні поля відповідними значеннями та натисніть Submit.

    auto generate number 2

  5. Підпишіть дані, внесені на попередній формі.

    auto generate number 3

  6. В результаті підписання задачі, система згенерує номер створеного акту та збереже його до бази даних реєстру.

    Номер створеного акту відповідає встановленій масці AA-{dd-MM-yyyy}-{SEQ} на рівні регламенту, у моделі даних.

    auto generate number 4

    В нашому випадку згенеровано акт №4 з кодом АА від 14-09-2022.

  7. Натисніть Submit для завершення процесу.