Перейти до вмісту

Технічне завдання: Редактор BP-моделей K2 ERP

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні

Редактор BP-моделей K2 ERP — модуль для графічного проєктування бізнес-процесів, маршрутизації документів, workflow-сценаріїв, погоджень, автоматичних дій, інтеграцій, правил переходів і виконавців. Результатом роботи редактора є структурований опис процесу у форматі YAML, з якого можуть генеруватися виконувані workflow, код, конфігурації BPM-рушія, документація та інтеграційні сценарії.

1. Мета розробки

Розробити в K2 ERP графічний редактор BP-моделей, який дозволяє:

  • створювати бізнес-процеси у графічному вигляді;
  • описувати етапи, задачі, події, переходи, умови та виконавців;
  • задавати правила погодження документів;
  • описувати автоматичні дії системи;
  • налаштовувати інтеграційні кроки;
  • зберігати модель процесу у YAML;
  • версіонувати бізнес-процеси;
  • перевіряти процес на логічні помилки;
  • генерувати виконувані workflow-схеми;
  • формувати документацію по процесу;
  • використовувати BP-модель як єдине джерело правди для виконання бізнес-процесу.

2. Основна концепція

Редактор BP-моделей має працювати за принципом:

Графічний редактор бізнес-процесу
        ↓
YAML BP-модель
        ↓
Генератори / інтерпретатор
        ↓
Workflow engine / BPMN / код / документація

Приклад цільового сценарію:

K2 BP Editor

purchase_approval.yml

K2 Workflow Engine

Виконання процесу погодження закупівлі

purchase_approval.yml

BPMN generator

purchase_approval.bpmn

purchase_approval.yml

Python workflow generator

workflow_handlers.py

purchase_approval.yml

Markdown documentation generator

process_docs.md

3. Основні принципи

Принцип Опис
Process-first Спочатку моделюється бізнес-процес, потім він виконується або генерується в код.
YAML як source of truth YAML-файл є основним джерелом опису процесу.
Graphical-first Основна робота виконується через графічний редактор.
Двостороння синхронізація Діаграма оновлює YAML, а YAML може перебудувати діаграму.
Workflow-agnostic Модель не має бути жорстко привʼязана до одного BPM-рушія.
Виконуваність BP-модель має бути придатною для запуску в K2 Workflow Engine.
Валідація Перед публікацією процес перевіряється на помилки.
Версіонування Кожна зміна процесу має зберігатися як версія.
Розширюваність Має бути можливість додавати нові типи вузлів, дій і генераторів.

4. Терміни та визначення

Термін Опис
BP-модель Структурований опис бізнес-процесу.
Бізнес-процес Послідовність дій, рішень, подій і автоматичних операцій.
Workflow Виконувана логіка процесу в системі.
Node / Вузол Елемент процесу: старт, задача, умова, дія, завершення.
Transition / Перехід Звʼязок між вузлами процесу.
Task / Задача Дія, яку виконує користувач або система.
Gateway Умова або розгалуження процесу.
Event Подія, яка запускає, зупиняє або змінює процес.
Actor Виконавець задачі: користувач, роль, група, менеджер, система.
SLA Обмеження часу на виконання задачі або процесу.
Escalation Автоматичне підняття задачі на інший рівень при порушенні SLA.
Approval Погодження документа або дії.
Script action Автоматична дія, яка виконує код або функцію.
Integration action Автоматична дія, яка викликає зовнішній API або сервіс.

5. Основні користувачі

Роль Опис Основні дії
Бізнес-аналітик Описує логіку бізнес-процесів. Створення схем, опис етапів, правил і виконавців.
Архітектор Контролює структуру процесів і їх інтеграцію з K2 ERP. Валідація архітектури, звʼязок з ER-моделями та модулями.
Backend-розробник Реалізує автоматичні дії, інтеграції та генератори. Підключення handler-ів, scripts, API.
Адміністратор Налаштовує права, версії, доступи, публікацію. Управління моделями та доступами.
Керівник Затверджує бізнес-процеси. Review, approval, контроль процесів.
Користувач ERP Виконує задачі в рамках процесу. Погодження, виконання, коментування задач.

6. Функціональні блоки редактора

Редактор BP-моделей має містити:

  • графічне полотно процесу;
  • панель інструментів;
  • бібліотеку елементів процесу;
  • дерево процесу;
  • панель властивостей;
  • YAML-редактор;
  • валідатор процесу;
  • менеджер ролей і виконавців;
  • менеджер умов;
  • менеджер SLA;
  • менеджер автоматичних дій;
  • менеджер інтеграцій;
  • менеджер версій;
  • генератор workflow;
  • preview виконання процесу;
  • симулятор процесу;
  • журнал змін;
  • експорт та імпорт.

7. Загальний вигляд інтерфейсу

Рекомендована структура екрана:

+--------------------------------------------------------------------------------+
| Верхня панель: Назва BP-моделі | Save | Validate | Simulate | Publish | Export |
+----------------------+-----------------------------------------+---------------+
| Бібліотека елементів | Графічне полотно BP-діаграми            | Властивості   |
|                      |                                         |               |
| - Start Event        |  Start → Task → Gateway → Approval      | Node/Transition|
| - User Task          |             ↓        ↓                  | settings      |
| - System Task        |          Reject     Approve             |               |
| - Gateway            |             ↓        ↓                  |               |
| - End Event          |            End      System Action       |               |
+----------------------+-----------------------------------------+---------------+
| Нижня панель: Errors | Warnings | YAML | Simulation | Generated Code | History  |
+--------------------------------------------------------------------------------+

8. Графічне полотно BP-діаграми

8.1. Основні вимоги

Графічне полотно має дозволяти:

  • створювати процеси drag-and-drop;
  • розміщувати вузли процесу;
  • зʼєднувати вузли переходами;
  • налаштовувати умови переходів;
  • переміщувати вузли;
  • групувати етапи у swimlane-и;
  • масштабувати діаграму;
  • автоматично розкладати процес;
  • фільтрувати видимі вузли;
  • підсвічувати шлях виконання;
  • показувати помилки прямо на схемі;
  • відкривати властивості вузла або переходу.

8.2. Дії користувача на полотні

Дія Опис
Drag елемента з бібліотеки Додати новий вузол процесу.
Клік по вузлу Відкрити властивості вузла.
Подвійний клік по вузлу Відкрити розширене редагування.
Drag від одного вузла до іншого Створити перехід.
Клік по переходу Відкрити умови переходу.
Delete Видалити вибраний вузол або перехід після підтвердження.
Ctrl + Z Скасувати останню дію.
Ctrl + Y Повторити дію.
Ctrl + колесо миші Масштабувати схему.

9. Типи вузлів процесу

Редактор має підтримувати такі типи вузлів.

Тип вузла Код Опис
Start Event start Початок процесу.
End Event end Завершення процесу.
User Task user_task Задача, яку виконує користувач.
Approval Task approval_task Задача погодження.
System Task system_task Автоматична дія системи.
Script Task script_task Виконання скрипта або handler-а.
Integration Task integration_task Виклик зовнішнього API.
Notification Task notification_task Надсилання повідомлення.
Timer Event timer Очікування часу або дедлайну.
Gateway gateway Умова або розгалуження.
Parallel Gateway parallel_gateway Паралельне виконання гілок.
Join Gateway join_gateway Обʼєднання паралельних гілок.
Subprocess subprocess Виклик іншого бізнес-процесу.
Error Event error Обробка помилки.

10. Властивості BP-моделі

10.1. Загальні поля процесу

Поле Тип Обовʼязкове Опис
name string Так Технічна назва процесу.
code string Так Унікальний код процесу.
label string Так Людинозрозуміла назва.
description text Ні Опис процесу.
module string Так Модуль K2 ERP.
version string Так Версія процесу.
status enum Так draft, review, approved, released, archived.
entity reference Ні ER-сутність або документ, до якого привʼязаний процес.
trigger object Так Умова запуску процесу.
variables list Ні Змінні процесу.
nodes list Так Вузли процесу.
transitions list Так Переходи між вузлами.
permissions object Ні Права доступу.
sla object Ні Загальні SLA процесу.

11. Start Event

11.1. Призначення

Start Event визначає, як запускається процес.

11.2. Типи запуску

Тип запуску Опис Приклад
manual Запуск користувачем вручну. Користувач натиснув “Запустити погодження”.
document_created Запуск при створенні документа. Створено рахунок.
document_status_changed Запуск при зміні статусу документа. Замовлення перейшло у статус “На погодженні”.
scheduled Запуск за розкладом. Щодня о 09:00.
webhook Запуск зовнішнім HTTP-запитом. Подія з сайту або CRM.
event Запуск внутрішньою подією K2 ERP. Оплата отримана.

11.3. Властивості Start Event

Поле Тип Опис
id string Унікальний ID вузла.
type string start.
trigger_type enum manual, document_created, document_status_changed, scheduled, webhook, event.
entity string Сутність або документ, який запускає процес.
condition expression Додаткова умова запуску.
label string Назва вузла на діаграмі.

12. User Task

12.1. Призначення

User Task — задача, яку виконує користувач ERP.

Приклади:

  • перевірити документ;
  • заповнити додаткові поля;
  • прикріпити файл;
  • підтвердити виконання;
  • залишити коментар;
  • обрати наступну дію.

12.2. Властивості User Task

Поле Тип Обовʼязкове Опис
id string Так Унікальний ID вузла.
type string Так user_task.
name string Так Технічна назва задачі.
label string Так Назва для користувача.
description text Ні Інструкція для виконавця.
assignee_type enum Так user, role, group, manager, expression.
assignee string Так Хто виконує задачу.
form reference Ні Форма, яку потрібно показати.
required_fields list Ні Поля, які потрібно заповнити.
actions list Так Доступні дії користувача.
sla object Ні SLA задачі.
notifications list Ні Повідомлення по задачі.

12.3. Дії користувача в User Task

Приклади дій:

Дія Опис
approve Погодити.
reject Відхилити.
return Повернути на доопрацювання.
complete Завершити задачу.
cancel Скасувати процес.
delegate Делегувати іншому користувачу.
request_info Запросити додаткову інформацію.

13. Approval Task

13.1. Призначення

Approval Task використовується для погодження документів, заявок, платежів, договорів або інших обʼєктів K2 ERP.

13.2. Типи погодження

Тип Опис
single Потрібне погодження одного виконавця.
sequential Послідовне погодження кількома рівнями.
parallel_all Паралельне погодження, всі мають погодити.
parallel_any Паралельне погодження, достатньо одного погодження.
majority Потрібна більшість голосів.

13.3. Властивості Approval Task

Поле Тип Опис
approval_type enum single, sequential, parallel_all, parallel_any, majority.
approvers list Список погоджувачів.
reject_policy enum stop_process, return_to_author, continue.
allow_delegate boolean Чи дозволено делегування.
require_comment_on_reject boolean Чи обовʼязковий коментар при відхиленні.
require_signature boolean Чи потрібний електронний підпис.

14. System Task

14.1. Призначення

System Task — автоматична дія, яку виконує K2 ERP без участі користувача.

Приклади:

  • змінити статус документа;
  • створити запис;
  • оновити поле;
  • сформувати друковану форму;
  • створити задачу;
  • провести документ;
  • надіслати повідомлення;
  • запустити інший процес.

14.2. Типи системних дій

Тип дії Опис
update_entity Оновити поля сутності.
create_entity Створити новий запис.
change_status Змінити статус документа.
call_service Викликати внутрішній сервіс K2 ERP.
generate_document Сформувати документ або друковану форму.
send_notification Надіслати повідомлення.
start_process Запустити інший BP-процес.

15. Script Task

15.1. Призначення

Script Task дозволяє виконати код або handler, зареєстрований у K2 ERP.

15.2. Властивості Script Task

Поле Тип Опис
handler string Назва handler-а.
language enum python, javascript, sql, internal.
input object Вхідні параметри.
output object Очікуваний результат.
timeout integer Максимальний час виконання.
retry_policy object Правила повтору.
Статус Правило
Рекомендовано Використовувати зареєстровані handler-и, а не довільний код у YAML.
Заборонено Виконувати небезпечний довільний код без sandbox і прав доступу.

16. Integration Task

16.1. Призначення

Integration Task викликає зовнішній API або інтеграційний сервіс.

Приклади:

  • відправити рахунок у зовнішню систему;
  • перевірити статус оплати;
  • створити заявку в CRM;
  • викликати сервіс доставки;
  • відправити дані в податкову систему;
  • викликати webhook.

16.2. Властивості Integration Task

Поле Тип Опис
method enum GET, POST, PUT, PATCH, DELETE.
url string Endpoint або посилання на інтеграційний конектор.
headers object HTTP-заголовки.
body object Тіло запиту.
auth reference Посилання на налаштування авторизації.
timeout integer Timeout запиту.
retry_policy object Правила повтору.
success_condition expression Умова успішного виконання.
error_transition string Перехід у разі помилки.

17. Gateway

17.1. Призначення

Gateway використовується для розгалуження процесу за умовами.

17.2. Типи gateway

Тип Опис
exclusive Виконується тільки одна гілка.
inclusive Може виконатися одна або кілька гілок.
parallel Виконуються всі гілки паралельно.
event_based Перехід залежить від події.

17.3. Приклад умов

document.amount > 100000
document.currency == "UAH"
user.role == "finance_manager"
approval.result == "approved"

18. Transition / Перехід

18.1. Призначення

Transition визначає, як процес переходить від одного вузла до іншого.

18.2. Властивості transition

Поле Тип Обовʼязкове Опис
id string Так ID переходу.
from string Так Початковий вузол.
to string Так Наступний вузол.
label string Ні Назва переходу.
condition expression Ні Умова переходу.
action string Ні Дія користувача, яка запускає перехід.
priority integer Ні Пріоритет, якщо кілька умов істинні.

19. Змінні процесу

BP-модель має підтримувати змінні процесу.

19.1. Типи змінних

Тип Опис
string Рядок.
integer Ціле число.
decimal Десяткове число.
boolean Логічне значення.
date Дата.
datetime Дата та час.
reference Посилання на сутність K2 ERP.
object JSON-обʼєкт.
list Список.

19.2. Джерела змінних

Джерело Опис
document Поля документа, який запустив процес.
user Дані користувача.
task Дані поточної задачі.
system Системні змінні.
integration Результати зовнішнього API.
manual Значення, введені користувачем.

20. Умови та expression language

Редактор має мати простий механізм для задання умов.

20.1. Вимоги

Expression language має дозволяти:

  • порівнювати значення;
  • перевіряти статуси;
  • перевіряти ролі;
  • працювати з сумами;
  • перевіряти наявність значень;
  • використовувати AND / OR / NOT;
  • звертатися до змінних процесу.

20.2. Приклади умов

document.amount > 100000
document.status == "draft"
document.currency == "UAH" and document.amount <= 50000
user.has_role("finance_manager")
approval.result == "rejected"
Статус Правило
Рекомендовано Використовувати обмежену безпечну expression language.
Заборонено Дозволяти виконання довільного Python/SQL/JS у звичайних умовах.

21. SLA та ескалації

21.1. SLA задачі

Для кожної задачі можна задати:

Поле Опис
due_in Час на виконання задачі.
calendar Робочий календар.
reminder_before Коли нагадати до дедлайну.
escalation_after Коли ескалювати після прострочки.
escalation_to Кому ескалювати.

21.2. Приклад SLA

sla:
  due_in: 2d
  calendar: business_days
  reminder_before: 4h
  escalation_after: 1d
  escalation_to:
    type: role
    value: department_head

22. Повідомлення

Редактор має дозволяти налаштовувати повідомлення.

22.1. Канали повідомлень

Канал Опис
in_app Повідомлення всередині K2 ERP.
email Email.
telegram Telegram-бот.
sms SMS.
webhook Webhook у зовнішню систему.

22.2. Події для повідомлень

  • створення задачі;
  • наближення SLA;
  • прострочка задачі;
  • погодження;
  • відхилення;
  • завершення процесу;
  • помилка інтеграції.

23. YAML-формат BP-моделі

23.1. Загальна структура YAML

version: 1

process:
  code: purchase_approval
  name: PurchaseApproval
  label: Purchase approval
  module: purchases
  status: draft
  entity: PurchaseOrder

settings:
  allow_manual_start: true
  allow_cancel: true
  audit: true

variables: []

nodes: []

transitions: []

23.2. Приклад повної BP-моделі

version: 1

process:
  code: purchase_approval
  name: PurchaseApproval
  label: Погодження закупівлі
  description: Процес погодження заявки на закупівлю
  module: purchases
  entity: PurchaseOrder
  status: draft

settings:
  allow_manual_start: true
  allow_cancel: true
  audit: true
  default_task_priority: normal

variables:
  - name: amount
    type: decimal
    source: document.amount

  - name: currency
    type: string
    source: document.currency

  - name: requester
    type: reference
    source: document.created_by

nodes:
  - id: start
    type: start
    label: Старт
    trigger_type: document_status_changed
    entity: PurchaseOrder
    condition: document.status == "approval_required"

  - id: manager_approval
    type: approval_task
    name: ManagerApproval
    label: Погодження керівником
    assignee_type: expression
    assignee: document.created_by.manager
    approval_type: single
    require_comment_on_reject: true
    actions:
      - approve
      - reject
      - return
    sla:
      due_in: 2d
      reminder_before: 4h
      escalation_after: 1d
      escalation_to:
        type: role
        value: department_head

  - id: amount_gateway
    type: gateway
    label: Перевірка суми
    gateway_type: exclusive

  - id: finance_approval
    type: approval_task
    name: FinanceApproval
    label: Погодження фінансистом
    assignee_type: role
    assignee: finance_manager
    approval_type: single
    actions:
      - approve
      - reject
    sla:
      due_in: 1d

  - id: change_status_approved
    type: system_task
    name: ChangeStatusApproved
    label: Змінити статус на погоджено
    action:
      type: change_status
      entity: PurchaseOrder
      status: approved

  - id: change_status_rejected
    type: system_task
    name: ChangeStatusRejected
    label: Змінити статус на відхилено
    action:
      type: change_status
      entity: PurchaseOrder
      status: rejected

  - id: end_approved
    type: end
    label: Завершено: погоджено
    result: approved

  - id: end_rejected
    type: end
    label: Завершено: відхилено
    result: rejected

transitions:
  - id: t_start_manager
    from: start
    to: manager_approval

  - id: t_manager_approved
    from: manager_approval
    to: amount_gateway
    action: approve

  - id: t_manager_rejected
    from: manager_approval
    to: change_status_rejected
    action: reject

  - id: t_amount_low
    from: amount_gateway
    to: change_status_approved
    condition: document.amount <= 100000

  - id: t_amount_high
    from: amount_gateway
    to: finance_approval
    condition: document.amount > 100000

  - id: t_finance_approved
    from: finance_approval
    to: change_status_approved
    action: approve

  - id: t_finance_rejected
    from: finance_approval
    to: change_status_rejected
    action: reject

  - id: t_approved_end
    from: change_status_approved
    to: end_approved

  - id: t_rejected_end
    from: change_status_rejected
    to: end_rejected

24. Двостороння синхронізація Diagram ↔ YAML

Редактор має підтримувати два режими:

Режим Опис
Diagram-first Користувач редагує графічну діаграму, YAML оновлюється автоматично.
YAML-first Користувач редагує YAML, діаграма перебудовується після валідації.

24.1. Правила синхронізації

1. Кожна зміна на діаграмі оновлює внутрішню BP-модель.
2. Внутрішня модель серіалізується у YAML.
3. Якщо користувач редагує YAML, виконується парсинг.
4. Якщо YAML валідний — оновлюється діаграма.
5. Якщо YAML невалідний — показується помилка з рядком і полем.

25. Валідація BP-моделі

25.1. Обовʼязкові перевірки

Перевірка Рівень Опис
Один start node Error Процес має мати рівно один стартовий вузол.
Мінімум один end node Error Процес має мати хоча б один фінальний вузол.
Унікальність node.id Error Не може бути двох вузлів з однаковим ID.
Валідність transitions Error Усі переходи мають посилатися на існуючі вузли.
Досяжність вузлів Error Не має бути вузлів, до яких неможливо дійти зі старту.
Вихід із gateway Error Gateway має мати мінімум два вихідні переходи.
Умови gateway Warning Для exclusive gateway бажано мати default-гілку.
User task без виконавця Error Користувацька задача має мати assignee.
Approval task без дій Error Approval task має мати approve/reject або інші дії.
SLA без escalation Warning Якщо є SLA, бажано налаштувати escalation.
Нескінченний цикл Warning/Error Цикли мають бути явно дозволені.

25.2. Рівні повідомлень

Рівень Опис Блокує публікацію
Error Критична помилка процесу. Так.
Warning Потенційна проблема. Ні.
Info Інформаційне повідомлення. Ні.

26. Симулятор процесу

Редактор має мати режим симуляції.

26.1. Мета симулятора

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

26.2. Можливості симулятора

  • задати тестові значення змінних;
  • пройти процес по кроках;
  • побачити активні задачі;
  • перевірити умови gateway;
  • перевірити маршрути погодження;
  • перевірити SLA;
  • перевірити помилки;
  • побачити фінальний результат процесу.

26.3. Приклад симуляції

document.amount = 150000
document.currency = UAH
manager action = approve
finance action = approve

Очікуваний шлях:
start → manager_approval → amount_gateway → finance_approval → change_status_approved → end_approved

27. Генерація виконуваного workflow

27.1. Основна ідея

YAML-модель має використовуватися для генерації або інтерпретації workflow.

bp_model.yml
    ↓
K2 Workflow Engine
    ↓
Process runtime

27.2. Генератори

Генератор Пріоритет Результат
K2 Workflow Engine Високий Виконувана схема процесу.
BPMN 2.0 Високий BPMN XML.
Markdown documentation Високий Документація процесу.
Python handlers Середній Каркас handler-ів для script/system task.
TypeScript types Середній Типи змінних і задач.
Mermaid diagram Середній Mermaid-схема процесу.

27.3. Налаштування генераторів

generators:
  - name: k2_workflow
    enabled: true
    output: ./generated/workflows
    options:
      generate_runtime_schema: true
      validate_handlers: true

  - name: bpmn
    enabled: true
    output: ./generated/bpmn
    options:
      include_documentation: true

  - name: python_handlers
    enabled: true
    output: ./generated/python
    options:
      create_stub_handlers: true

28. Виконання процесу в K2 ERP

28.1. Runtime-сутності

Для виконання BP-моделей потрібно створити runtime-сутності.

bp_models
bp_model_versions
bp_process_instances
bp_task_instances
bp_process_variables
bp_process_events
bp_audit_log

28.2. bp_process_instances

Поле Тип Опис
id uuid ID екземпляра процесу.
model_id uuid BP-модель.
model_version_id uuid Версія моделі.
status enum running, completed, cancelled, failed, suspended.
entity string Сутність, з якою повʼязаний процес.
entity_id uuid/string ID документа або запису.
current_nodes list Активні вузли процесу.
started_by reference Хто запустив процес.
started_at datetime Дата запуску.
completed_at datetime Дата завершення.

28.3. bp_task_instances

Поле Тип Опис
id uuid ID задачі.
process_instance_id uuid Екземпляр процесу.
node_id string ID вузла з BP-моделі.
label string Назва задачі.
assignee reference Виконавець.
status enum created, assigned, in_progress, completed, rejected, cancelled, expired.
due_at datetime Дедлайн задачі.
completed_by reference Хто завершив.
completed_at datetime Коли завершив.
action string Яку дію обрав користувач.
comment text Коментар користувача.

29. Версіонування BP-моделей

29.1. Статуси версій

Статус Опис
draft Чернетка.
review Очікує перегляду.
approved Затверджено.
released Доступно для запуску нових процесів.
archived Архівна версія.

29.2. Правила версіонування

Правило Опис
Released-версія незмінна Опубліковану версію не можна змінювати напряму.
Нова зміна = нова draft-версія Для редагування released-процесу створюється нова версія.
Старі екземпляри Вже запущені процеси продовжують виконуватися на старій версії.
Нові екземпляри Нові процеси запускаються на актуальній released-версії.

30. Права доступу

Дія Аналітик Архітектор Розробник Адміністратор Керівник Перегляд
Перегляд BP-моделі Так Так Так Так Так Так
Створення BP-моделі Так Так Ні Так Ні Ні
Редагування вузлів Так Так Ні Так Ні Ні
Редагування YAML Частково Так Так Так Ні Ні
Редагування handler-ів Ні Так Так Так Ні Ні
Валідація Так Так Так Так Так Так
Симуляція Так Так Так Так Так Ні
Публікація Ні Так Ні Так Так Ні
Видалення Ні Так Ні Так Ні Ні

31. Audit log

31.1. Що логувати

  • створення BP-моделі;
  • зміну назви процесу;
  • додавання вузла;
  • видалення вузла;
  • зміну властивостей вузла;
  • створення переходу;
  • зміну умови переходу;
  • видалення переходу;
  • зміну SLA;
  • зміну виконавців;
  • зміну YAML;
  • запуск симуляції;
  • генерацію workflow;
  • зміну статусу версії;
  • публікацію процесу.

31.2. Поля audit log

Поле Опис
user Користувач, який зробив зміну.
action Тип дії.
object_type Process, Node, Transition, Variable, Version.
object_id ID обʼєкта.
old_value Старе значення.
new_value Нове значення.
created_at Дата зміни.
comment Коментар користувача.

32. Імпорт та експорт

32.1. Імпорт

Редактор має підтримувати імпорт із:

  • YAML;
  • JSON;
  • BPMN 2.0;
  • Mermaid flowchart;
  • PlantUML activity diagram.

Для MVP достатньо:

  • YAML;
  • BPMN 2.0 у базовому режимі.

32.2. Експорт

Редактор має підтримувати експорт у:

  • YAML;
  • JSON;
  • BPMN 2.0;
  • PNG;
  • SVG;
  • PDF;
  • Markdown;
  • Mermaid;
  • PlantUML.

33. API редактора BP-моделей

Метод Endpoint Опис
GET /api/bp-models Список BP-моделей.
POST /api/bp-models Створити BP-модель.
GET /api/bp-models/{id} Отримати BP-модель.
PUT /api/bp-models/{id} Оновити BP-модель.
POST /api/bp-models/{id}/validate Провалідувати модель.
POST /api/bp-models/{id}/simulate Запустити симуляцію.
POST /api/bp-models/{id}/generate Запустити генерацію.
POST /api/bp-models/{id}/publish Опублікувати модель.
GET /api/bp-models/{id}/versions Отримати версії.
POST /api/bp-models/import Імпорт BP-моделі.

34. Нефункціональні вимоги

34.1. Продуктивність

Редактор має підтримувати:

  • до 300 вузлів в одному процесі;
  • до 1 000 переходів;
  • відкриття процесу до 100 вузлів — до 3 секунд;
  • відкриття процесу до 300 вузлів — до 10 секунд;
  • валідація процесу до 300 вузлів — до 5 секунд;
  • генерація YAML — до 3 секунд;
  • симуляція типового процесу — до 5 секунд.

34.2. Надійність

Система має:

  • не втрачати незбережені зміни;
  • підтримувати autosave draft;
  • не дозволяти публікацію невалідного процесу;
  • не змінювати released-версії напряму;
  • зберігати історію змін;
  • підтримувати rollback до попередньої версії.

34.3. Безпека

Потрібно:

  • перевіряти права доступу;
  • заборонити виконання довільного небезпечного коду з YAML;
  • обмежити script task тільки зареєстрованими handler-ами;
  • логувати публікацію та запуск процесів;
  • не показувати користувачу задачі, до яких він не має доступу;
  • перевіряти, що integration task не відкриває небезпечні внутрішні ресурси.

35. MVP

35.1. Що включити в MVP

1. Створення BP-моделі.
2. Графічне полотно.
3. Start Event.
4. End Event.
5. User Task.
6. Approval Task.
7. System Task.
8. Exclusive Gateway.
9. Transitions з умовами.
10. YAML export/import.
11. Валідація процесу.
12. Версіонування draft/released.
13. Базова симуляція.
14. Генерація документації.
15. Генерація runtime-схеми для K2 Workflow Engine.

35.2. Що можна відкласти

1. Live collaboration.
2. BPMN import у повному обсязі.
3. Parallel gateway.
4. Complex event gateway.
5. Mermaid/PlantUML import.
6. Advanced SLA calendar.
7. AI-рекомендації по оптимізації процесу.
8. Повний visual debugger runtime-процесу.
9. Складне merge-версій.

36. Критерії приймання

36.1. Створення процесу

1. Користувач може створити нову BP-модель.
2. Користувач може задати назву, код, модуль і опис.
3. Модель зберігається в K2 ERP.
4. Для моделі створюється draft-версія.

36.2. Робота з вузлами

1. Користувач може додати Start Event.
2. Користувач може додати End Event.
3. Користувач може додати User Task.
4. Користувач може додати Approval Task.
5. Користувач може додати System Task.
6. Користувач може редагувати властивості вузла.
7. Користувач може видалити вузол після підтвердження.

36.3. Робота з переходами

1. Користувач може створити перехід між вузлами.
2. Користувач може задати умову переходу.
3. Користувач може задати дію користувача для переходу.
4. Перехід відображається на діаграмі.
5. Перехід зберігається в YAML.

36.4. YAML

1. Діаграма експортується у валідний YAML.
2. YAML можна імпортувати назад.
3. Після імпорту відновлюються вузли, переходи, умови та властивості.
4. Помилки YAML показуються користувачу.

36.5. Валідація

1. Система знаходить процес без стартового вузла.
2. Система знаходить процес без кінцевого вузла.
3. Система знаходить переходи на неіснуючі вузли.
4. Система знаходить недосяжні вузли.
5. Система не дозволяє опублікувати процес з Error.

36.6. Симуляція

1. Користувач може задати тестові змінні.
2. Система показує шлях виконання процесу.
3. Система показує активні задачі.
4. Система показує результат gateway.
5. Система показує фінальний end node.

36.7. Публікація

1. Draft-версію можна перевести в review.
2. Review-версію можна затвердити.
3. Approved-версію можна опублікувати.
4. Released-версія доступна для запуску.
5. Released-версію не можна змінювати напряму.

37. Приклад сценарію роботи користувача

1. Аналітик створює BP-модель “Погодження закупівлі”.
2. Додає Start Event при зміні статусу PurchaseOrder.
3. Додає Approval Task для керівника.
4. Додає Gateway для перевірки суми.
5. Якщо сума до 100 000 грн — документ погоджується автоматично.
6. Якщо сума понад 100 000 грн — додається погодження фінансиста.
7. Додає System Task для зміни статусу документа.
8. Додає End Event для погодження та відхилення.
9. Запускає валідацію.
10. Запускає симуляцію з різними сумами.
11. Зберігає draft.
12. Передає на review.
13. Архітектор затверджує процес.
14. Адміністратор публікує released-версію.
15. Нові документи PurchaseOrder запускають процес автоматично.

38. Ризики

Ризик Наслідок Як зменшити
Процес не має кінцевого вузла Екземпляри процесу зависають. Валідація має блокувати публікацію.
Неправильно задані умови gateway Процес іде не тією гілкою. Симулятор і default-гілка.
Паралельні задачі створюють конфлікт Документ може отримати некоректний статус. Чіткі правила join і блокування документа.
Script task виконує небезпечний код Ризик безпеки. Тільки зареєстровані handler-и та sandbox.
Зміна released-процесу Старі процеси можуть зламатися. Released-версії незмінні, зміни тільки через нову версію.
Інтеграційний крок не відповідає Процес зупиняється. Timeout, retry policy, error transition.

39. Рекомендований план реалізації

39.1. Етап 1. Аналітика

1. Узгодити YAML-схему BP-моделі.
2. Узгодити типи вузлів.
3. Узгодити expression language.
4. Узгодити runtime-модель.
5. Узгодити правила публікації.

39.2. Етап 2. Базовий редактор

1. Створити сторінку BP-редактора.
2. Реалізувати графічне полотно.
3. Реалізувати бібліотеку вузлів.
4. Реалізувати додавання вузлів.
5. Реалізувати панель властивостей.

39.3. Етап 3. Переходи та умови

1. Реалізувати transitions.
2. Реалізувати умови переходів.
3. Реалізувати actions для user/approval task.
4. Реалізувати gateway.

39.4. Етап 4. YAML

1. Реалізувати YAML export.
2. Реалізувати YAML import.
3. Реалізувати YAML preview.
4. Реалізувати двосторонню синхронізацію.

39.5. Етап 5. Валідація та симуляція

1. Реалізувати валідатор.
2. Реалізувати підсвічування помилок.
3. Реалізувати симулятор.
4. Реалізувати test variables.

39.6. Етап 6. Runtime та публікація

1. Створити runtime-сутності.
2. Реалізувати запуск процесу.
3. Реалізувати створення задач.
4. Реалізувати виконання задач.
5. Реалізувати публікацію released-версій.

39.7. Етап 7. Генерація та документація

1. Генерація K2 Workflow schema.
2. Генерація Markdown-документації.
3. Генерація BPMN.
4. Генерація Python handler stubs.

40. Висновок

Редактор BP-моделей K2 ERP має стати центральним інструментом для моделювання та виконання бізнес-процесів у системі.

Ключові вимоги:

  • графічне редагування бізнес-процесів;
  • підтримка start/end/user/approval/system/gateway вузлів;
  • опис переходів, умов, виконавців, SLA та повідомлень;
  • збереження BP-моделі у YAML;
  • двостороння синхронізація Diagram ↔ YAML;
  • валідація перед публікацією;
  • симуляція процесу;
  • генерація runtime workflow;
  • версіонування та audit log;
  • підтримка виконання процесів у K2 Workflow Engine.

Для MVP достатньо реалізувати базовий графічний редактор, YAML import/export, User Task, Approval Task, System Task, Exclusive Gateway, валідацію, симуляцію, версіонування та публікацію процесу.