Вимоги та рекомендації розробнику щодо моделювання регламенту реєстру

На цій сторінці:
При розробці реєстру слід дотримуватися наведених нижче рекомендацій та обов’язково проводити аудит реєстру.

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

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

Дотримуйтеся таких рекомендацій щодо розробки регламенту реєстрів:
  • Дотримуйтеся принципів KISS. Уникайте великих бізнес-процесів, розділяйте їх на менші.

  • Виконуйте повний cleanup щотижня, узгоджуючи з командою. Це стосується лише dev-середовища.

  • НЕ використовуйте елементи з розділу Експериментальні при створенні UI-форм для забезпечення їх коректної роботи.

Основні вимоги до розробника реєстру поділяються на такі типи (залежно від етапу, коли їх необхідно реалізувати):
  • робота з моделлю даних;

  • моделювання бізнес-процесу в Кабінеті адміністратора або в 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. Ідентифікатори послуг в кабінеті посадової особи

У кабінеті посадової особи усі виконані бізнес-процеси зберігаються на вкладці Мої послуги  Надані послуги. Через те, що посадова особа може реєструвати одні й ті ж послуги різним особам, рекомендується вносити додаткові ідентифікатори, які надають можливість відрізняти послуги для різних осіб за індивідуальними даними — ПІБ, ЄДРПОУ або РНОКПП тощо.

Для цього налаштуйте ідентифікатори для процесів, наприклад, відображення ПІБ отримувача послуг або його ЄДРПОУ/РНОКПП, або іншого ідентифікатора, який допоможе швидко знайти потрібну послугу в переліку. Для реалізації ідентифікації під час моделювання бізнес-процесу використовуйте функцію налаштування бізнес-ключів на різних етапах процесу. Детальніше про бізнес-ключі див. на сторінці Налаштування бізнес-ключів у бізнес-процесах.

Після налаштування бізнес-ключа, в кабінеті посадової особи для кожного налаштованого процесу буде доданий ідентифікатор послуги.

regulations modeling requirements 1

3.6. Налаштування прав доступу

Для уникнення зловживань, помилок і шахрайства налаштовуйте ролі з мінімально необхідними правами, потрібними лише для виконання конкретних етапів бізнес-процесу. Деталі — у принципах управління доступом.

Рекомендації щодо налаштування прав доступу користувачів:
  1. На самому початку користувачі-отримувачі послуг отримують тимчасові ролі:

    • unregistered-individual — для фізичних осіб;

    • unregistered-entrepreneur — для фізичних осіб-підприємців (ФОП);

    • unregistered-legal — для юридичних осіб.

    Ці ролі система визначає автоматично, на основі даних електронного підпису та інформації з Єдиного державного реєстру (ЄДР).

  2. Після відкриття особистого кабінету для користувачів з тимчасовими ролями з префіксом unregistered-, автоматично запускається єдиний доступний бізнес-процес — онбординг.

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

    • unregistered-individualindividual;

    • unregistered-entrepreneurentrepreneur;

    • unregistered-legallegal.

  4. Після присвоєння постійної ролі, користувач отримує доступ до бізнес-процесів, які відповідають цій ролі.

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

3.7. Категоризація доступних послуг в кабінеті користувача

У кабінеті користувача може відображатися велика кількість послуг, в результаті чого виникають труднощі з пошуком необхідної послуги. Рекомендуємо групувати можливі послуги за категоріями — так користувач бачитиме папки, що логічно об’єднують доступні для користувача процеси. Налаштування категоризації послуг розробник може виконувати в Адміністративному порталі (Кабінеті адміністратора регламенту). Покрокова інструкція доступна на сторінці Категоризація доступних послуг у кабінетах користувачів.

regulations modeling requirements 2

4. Вимоги на етапі створення UI форм

Основні вимоги до UI форм:
  • Форми мають бути максимально простими та інтуїтивно зрозумілими, щоб користувач міг легко взаємодіяти із системою.

  • Якщо користувач має вносити значний обсяг даних, доцільно розділити процес на кілька етапів, використовуючи послідовність із декількох форм.

  • Встановлюйте валідаційні правила для перевірки введених користувачем даних. Валідація повинна бути налаштована для всіх обов’язкових полів.

5. Вимоги до формування аналітичних звітів у застосунку Redash

У застосунку Redash можна створювати аналітичні звіти з відображенням всієї інформації, збереженої в базі даних. Оскільки ці звіти доступні посадовим особам, важливо уникати включення персональних даних користувачів і унеможливлення їх розповсюдження. Їх використання допускається лише за вимогами законодавства або вагомої бізнес-потреби. Для захисту даних можна застосовувати маскування, наприклад, замість повного номера телефону відображати "097*****12". Загальне правило: звіти не повинні містити конфіденційних даних, таких як ПІБ, ЄДРПОУ/РНОКПП, номера телефону, адреси або інших персональних даних.