Вимоги та рекомендації розробнику щодо моделювання регламенту реєстру
- 1. Загальний опис
- 2. Вимоги до роботи з моделлю даних
- 3. Вимоги на етапі створення бізнес-процесу
- 3.1. Встановлення часового обмеження на користувацьку задачу
- 3.2. Створення можливості повернутися на певний етап бізнес-процесу, який був створений раніше, та до головного меню
- 3.3. Налаштування відправлення повідомлень в особистий кабінет користувача
- 3.4. Налаштування в кабінеті посадової особи можливості відхилити реєстрацію форми
- 3.5. Ідентифікатори послуг в кабінеті посадової особи
- 3.6. Налаштування прав доступу
- 3.7. Категоризація доступних послуг в кабінеті користувача
- 4. Вимоги на етапі створення UI форм
- 5. Вимоги до формування аналітичних звітів у застосунку Redash
При розробці реєстру слід дотримуватися наведених нижче рекомендацій та обов’язково проводити аудит реєстру. |
1. Загальний опис
Розробник має створити логічну модель бізнес-процесу, яка описує послуги для фізичних і юридичних осіб, і реалізувати додаткові можливості для роботи з регламентом.
- Дотримуйтеся таких рекомендацій щодо розробки регламенту реєстрів:
- Основні вимоги до розробника реєстру поділяються на такі типи (залежно від етапу, коли їх необхідно реалізувати):
-
-
робота з моделлю даних;
-
моделювання бізнес-процесу в Кабінеті адміністратора або в Camunda Modeler;
-
створення UI-форм у Кабінеті адміністратора;
-
формування аналітичних звітів.
-
2. Вимоги до роботи з моделлю даних
Для створення фізичної моделі даних під час розробки регламенту реєстру використовується Liquibase — система управління версіями баз даних, що описується за допомогою строго типізованих XML-шаблонів.
- Під час розробки моделі даних розробники мають дотримуватися наступних вимог:
-
-
Використовуйте єдиний стиль для назв таблиць, полів, критеріїв пошуку, аналітичних представлень, індексів і ключів.
-
Забезпечуйте інформативність імен і ідентифікаторів.
-
Організуйте файли структуровано (сутності, бізнес-процеси, форми) для легкого розуміння й управління в командній роботі.
-
Використовуйте лише теги зі стандартної бібліотеки Liquibase або liquibase-ddm-ext, як описано в документації Платформи. Практичні приклади використання бібліотеки
liquibase-ddm-ext
детально показані у розділі Розширення Liquibase для моделювання даних. -
Уникайте створення зайвих changeSet і підтримуйте їх актуальність.
-
Додавайте лише ті колонки, які дійсно необхідні для критеріїв пошуку.
-
Використовуйте пагінацію та ліміти для критеріїв пошуку.
-
Застосовуйте індекси для пришвидшення пошуку в базі даних.
-
Перевіряйте план виконання запитів після створення складних багатотабличних критеріїв пошуку.
-
Уникайте передачі з форм людиночитних параметрів, якщо це можливо.
-
2.1. Вибір імен для таблиць і критеріїв пошуку
Дотримуйтесь єдиного стилю для імен таблиць і критеріїв пошуку:
-
Використовуйте snake_case або camelCase.
-
Для пошукових критеріїв додавайте префікс або суфікс
sc
для зручної ідентифікації.
Наприклад, таблиця може називатися koatuu
, а критерій пошуку — sc_koatuu_contains_name
або koatuu_contains_name_sc
. Це спрощує ідентифікацію таблиць і критеріїв у процесі роботи.
2.2. Підтримка актуальності changeSet
Зі збільшенням кількості changeSet зростає складність файлу, що ускладнює його управління та розуміння. Велика кількість changeSet збільшує час застосування змін у базі даних. Тому важливо регулярно перевіряти актуальність changeSet, особливо після cleanup-процедури.
Під час роботи над регламентом реєстру можливо послідовно створювати різну кількість changeSet для внесення, видалення або модифікації таблиць і їх полів. Це може знизити читабельність файлу. Тому якщо до cleanup-процесу були присутні послідовні changeSet на виправлення, видалення або внесення змін до моделі даних, то після cleanup рекомендується видалити ChangeSet, які модифікували таблиці, і залишити лише ті, які створюють актуальну модель даних.
Якщо потрібно внести зміни до таблиці, видаліть її (разом із залежними компонентами у зворотному порядку їх створення) та створіть нову таблицю з актуальними змінами.
Для видалення кількох таблиць або критеріїв пошуку використовуйте один changeSet:
<changeSet id="drop-table" author="me">
<dropTable tableName="test" />
<dropTable tableName="test_hst" />
</changeSet>
2.3. Встановлення актуальних колонок в критеріях пошуку
У критеріях пошуку вказуйте лише ті колонки, які потрібні для використання іншими підсистемами. Надмірна кількість колонок уповільнює виконання запита. Створюйте окремі критерії пошуку для різних етапів бізнес-процесу.
Пам’ятайте про продуктивність критеріїв пошуку при роботі з великими обсягами даних. Оператори й функції, такі як ORDER BY
, GROUP BY
, JOIN
, а також функції агрегації COUNT()
, SUM()
, AVG()
, MIN()
, MAX()
, можуть вимагати значних ресурсів. Для оптимізації запитів використовуйте індекси та регулярно аналізуйте продуктивність створених запитів.
2.4. Використання пагінації та лімітів у критеріях пошуку
Ліміти в критеріях пошуку визначають максимальну кількість результатів, що повертаються. Без лімітів можливий витік даних і зниження продуктивності системи.
Щоб зменшити обсяг даних і знизити навантаження на сервер, використовуйте атрибут limit
разом з атрибутом pagination
.
2.5. Використання індексів для пошуку у базі даних
Під час створення критеріїв пошуку переконайтеся, що для полів, які використовуються для зв’язку таблиць і формування умов вибірки представлення, у таблицях із великою кількістю записів створені індекси. Індекси покращують швидкість і продуктивність запитів.
Не створюйте індекси для таблиць із невеликою кількістю даних. СКБД Postgres виділяє ресурси для створення та підтримки індексів і щоразу при запиті пошуку до бази даних розраховує оптимальні варіанти, як проводити пошук: якщо таблиця зберігає невелику кількість даних, то СКБД Postgres не буде використовувати індекси для пошуку. У таких випадках індекси лише займають пам’ять і ресурси.
Детальніше про створення й використання індексів читайте у розділі Атрибут indexing та доступні значення.
3. Вимоги на етапі створення бізнес-процесу
Нижче приведені основні вимоги під час розробки бізнес-процесу.
3.1. Встановлення часового обмеження на користувацьку задачу
Покинуті з різних причин бізнес-процеси (помилка у бізнес-процесі чи незавершений користувачем процес), накопичуються у системі та фактично стають системним "сміттям". Вони не мають перспективи завершення, тому наполегливо рекомендується до користувацької задачі завжди додавати подію Timer. Після правильного налаштування елемента з таймером, незавершений процес у кабінеті користувача буде автоматично закриватися після відпрацювання таймера.
Рекомендуємо за замовчуванням додавати до БП подію Таймер з налаштуванням закривати бізнес-процес через тиждень. В окремих випадках, розуміючи бізнес-вимоги замовника, можна збільшувати або зменшувати цей період. Особливо актуально для високонавантажених систем.
|
3.2. Створення можливості повернутися на певний етап бізнес-процесу, який був створений раніше, та до головного меню
Щоб коригувати раніше введені дані, користувач повинен мати можливість на етапі підпису UI-форми повернутися на форму заповнення даних. Детальніше про це див. у розділі Моделювання повернення до першої форми.
Також користувач повинен мати можливість на етапі підпису UI-форми повернутися до головного меню без збереження внесених на формі даних. Детальніше про це див. у розділі Моделювання скасування внесення даних і повернення до головного меню.
3.3. Налаштування відправлення повідомлень в особистий кабінет користувача
Для сповіщення користувачів про обробку їхньої заявки або зміну її статусу, необхідно відправляти inbox (in-app) повідомлення у кабінет користувача. Також рекомендується відправляти додаткові сповіщення коли час, встановлений таймером, закінчується, і бізнес-процес автоматично завершується. Більше про налаштування відправлення in-app повідомлень користувачам див. на сторінці Відправлення in-app-повідомлень у скриньку Кабінету отримувача послуг.
3.4. Налаштування в кабінеті посадової особи можливості відхилити реєстрацію форми
На етапі розгляду звернення посадовою особою необхідно додати додаткову гілку для можливості відмовити у наданні послуг (якщо така можливість передбачена на нормативному рівні). У такому випадку посадова особа має вказати причину відмови реєстрації. Результат разом зі вказаною причиною відмови має зберігатися у Фабриці даних. У разі відхилення посадовою особи реєстрації, рекомендується також сповіщати отримувача послуги щодо відхилення реєстрації й надавати йому можливість внести корективи до форми.
3.5. Ідентифікатори послуг в кабінеті посадової особи
У кабінеті посадової особи усі виконані бізнес-процеси зберігаються на вкладці
. Через те, що посадова особа може реєструвати одні й ті ж послуги різним особам, рекомендується вносити додаткові ідентифікатори, які надають можливість відрізняти послуги для різних осіб за індивідуальними даними — ПІБ, ЄДРПОУ або РНОКПП тощо.Для цього налаштуйте ідентифікатори для процесів, наприклад, відображення ПІБ отримувача послуг або його ЄДРПОУ/РНОКПП, або іншого ідентифікатора, який допоможе швидко знайти потрібну послугу в переліку. Для реалізації ідентифікації під час моделювання бізнес-процесу використовуйте функцію налаштування бізнес-ключів на різних етапах процесу. Детальніше про бізнес-ключі див. на сторінці Налаштування бізнес-ключів у бізнес-процесах.
Після налаштування бізнес-ключа, в кабінеті посадової особи для кожного налаштованого процесу буде доданий ідентифікатор послуги.
3.6. Налаштування прав доступу
Для уникнення зловживань, помилок і шахрайства налаштовуйте ролі з мінімально необхідними правами, потрібними лише для виконання конкретних етапів бізнес-процесу. Деталі — у принципах управління доступом.
- Рекомендації щодо налаштування прав доступу користувачів:
-
-
На самому початку користувачі-отримувачі послуг отримують тимчасові ролі:
-
unregistered-individual
— для фізичних осіб; -
unregistered-entrepreneur
— для фізичних осіб-підприємців (ФОП); -
unregistered-legal
— для юридичних осіб.
Ці ролі система визначає автоматично, на основі даних електронного підпису та інформації з Єдиного державного реєстру (ЄДР).
-
-
Після відкриття особистого кабінету для користувачів з тимчасовими ролями з префіксом
unregistered-
, автоматично запускається єдиний доступний бізнес-процес — онбординг. -
Після успішного завершення процесу онбордингу, тимчасова роль користувача автоматично змінюється на відповідну постійну:
-
unregistered-individual
→individual
; -
unregistered-entrepreneur
→entrepreneur
; -
unregistered-legal
→legal
.
-
-
Після присвоєння постійної ролі, користувач отримує доступ до бізнес-процесів, які відповідають цій ролі.
-
Варто зазначити, що наведене вище стосується Кабінету отримувача послуг. Для Кабінету надавача послуг використовується інший підхід. |
3.7. Категоризація доступних послуг в кабінеті користувача
У кабінеті користувача може відображатися велика кількість послуг, в результаті чого виникають труднощі з пошуком необхідної послуги. Рекомендуємо групувати можливі послуги за категоріями — так користувач бачитиме папки, що логічно об’єднують доступні для користувача процеси. Налаштування категоризації послуг розробник може виконувати в Адміністративному порталі (Кабінеті адміністратора регламенту). Покрокова інструкція доступна на сторінці Категоризація доступних послуг у кабінетах користувачів.
4. Вимоги на етапі створення UI форм
- Основні вимоги до UI форм:
-
-
Форми мають бути максимально простими та інтуїтивно зрозумілими, щоб користувач міг легко взаємодіяти із системою.
-
Якщо користувач має вносити значний обсяг даних, доцільно розділити процес на кілька етапів, використовуючи послідовність із декількох форм.
-
Встановлюйте валідаційні правила для перевірки введених користувачем даних. Валідація повинна бути налаштована для всіх обов’язкових полів.
-
5. Вимоги до формування аналітичних звітів у застосунку Redash
У застосунку Redash можна створювати аналітичні звіти з відображенням всієї інформації, збереженої в базі даних. Оскільки ці звіти доступні посадовим особам, важливо уникати включення персональних даних користувачів і унеможливлення їх розповсюдження. Їх використання допускається лише за вимогами законодавства або вагомої бізнес-потреби. Для захисту даних можна застосовувати маскування, наприклад, замість повного номера телефону відображати "097*****12"
. Загальне правило: звіти не повинні містити конфіденційних даних, таких як ПІБ, ЄДРПОУ/РНОКПП, номера телефону, адреси або інших персональних даних.