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

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

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". Загальне правило: звіти не повинні містити конфіденційних даних, таких як ПІБ, ЄДРПОУ/РНОКПП, номера телефону, адреси або інших персональних даних.