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

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

Матеріал з K2 ERP Wiki

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

=== 36.6.; Симуляція ===

* створювати бізнес-процеси у графічному вигляді;
* описувати етапи, задачі, події, переходи, умови та виконавців;
* задавати правила погодження документів;
* описувати автоматичні дії системи;
* налаштовувати інтеграційні кроки;
* зберігати модель процесу у YAML;
* версіонувати бізнес-процеси;
* перевіряти бізнес-процес на логічні помилки;
* генерувати виконувані workflow-схеми;
* формувати документацію по процесу;
* використовувати BP-модель як єдине джерело правди для виконання бізнес-процесу.; компонент; додатково реалізовано маршрутизації документів.; |-
|action
|Тип дії.; користувач системи має змогу створити перехід між вузлами.; 5.; Transitions з умовами.; {| class="wikitable"
!характеристика
=== 12.3.; Дії користувача в User Task ===

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

document.status == "draft"
document.currency == "UAH" and document.amount <= 50000
user.has_role("finance_manager")
approval.result == "rejected"

!Поле

- id: end_rejected

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

actions:

+--------------------------------------------------------------------------------+

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

Редактор має мати простий механізм для задання умов.; Складне merge-версій.; |- |label |string |Так |Людинозрозуміла назва.; Архітектор затверджує бізнес-процес.; |- |webhook |Webhook у зовнішню систему.; |- |object_type |Process, Node, Transition, Variable, Version.; Повний visual debugger runtime-процесу.; |- |label |string |Назва вузла на діаграмі.; |- |Бізнес-процес |Послідовність дій, рішень, подій і автоматичних операцій.; |- |form |reference |Ні |Форма, яку потрібно показати.; |- |entity |string |Сутність або документ, який запускає бізнес-процес.; |Підключення handler-ів, scripts, API.; |}

document.currency == "UAH" user.role == "finance_manager"
Тип

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

from: manager_approval

Process runtime

Start Event start class="wikitable"
type: system_task
- id: t_finance_approved
|-
|string
|Рядок.; Валідація процесу.; |-
|send_notification
|Надіслати повідомлення.; - id: start
5.; 3.; |}

!Поле

=== 21.2.; Приклад SLA ===
purchase_approval.bpmn

4.; |-
|started_by
|reference
|Хто запустив бізнес-процес.; |}

== 37.; Приклад сценарію роботи користувача ==
== 31. Audit log ==
Симулятор потрібен, щоб перевірити логіку процесу без запуску реальних документів.;== 23.; YAML-формат BP-моделі ==
!характеристика

</syntaxhighlight>
 ↓
10.; |-
|require_comment_on_reject
|boolean
|Чи обовʼязковий коментар при відхиленні.; Створення BP-моделі.; |-
|type
|string
|start.;<pre>
|-
|method
|enum
|GET, POST, PUT, PATCH, DELETE.; |-
|boolean
|Логічне значення.; |-
|name
|string
|Так
|Технічна назва задачі.; 5.; |-
|PUT
|/api/bp-models/{id}
|Оновити BP-модель.; 3.; |-
|System Task
|system_task
|Автоматична дія системи.; BPMN import у повному обсязі.; платформа має:
1.; |-
|label
|string
|Так
|Назва для користувача.; 5.; Реалізувати YAML import.; користувач системи має змогу створити нову BP-модель.; sla:
!Режим
 result: rejected
 type: string
process:
=== 36.7.; Публікація ===
finance action = approve
3.; |-
|model_version_id
|uuid
|реліз моделі.; Якщо сума понад 100 000 грн — додається погодження фінансиста.; |}

{| class="wikitable"
!характеристика
document.amount = 150000
{| class="wikitable"
purchase_approval.yml
5.; |-
|користувач системи ERP
|Виконує задачі в рамках процесу.; |Щодня о 09:00.;== 9.; Типи вузлів процесу ==
 name: FinanceApproval
!Генератор
=== 20.1.; Вимоги ===

3.; |-
|status
|enum
|running, completed, cancelled, failed, suspended.; |-
|Delete
|Видалити вибраний вузол або перехід після підтвердження.; |-
|Інтеграційний крок не відповідає
|бізнес-процес зупиняється.; |-
|required_fields
|list
|Ні
|Поля, які потрібно заповнити.; 1.; +--------------------------------------------------------------------------------+
2.; |}

 source: document.currency
3.; |Ні.; 2.; |-
|Transition / Перехід
|Звʼязок між вузлами процесу.; Генерація документації.;=== 27.2.; Генератори ===
3.; |-
|Старі екземпляри
|Вже запущені процеси продовжують виконуватися на старій версії.; action: approve
 reminder_before: 4h
!характеристика
{| class="wikitable"
generators:
|-
|id
|uuid
|ID екземпляра процесу.; Реалізувати панель властивостей.; платформа показує фінальний end node.; Реалізувати умови переходів.; |-
|from
|string
|Так
|Початковий вузол.; options:

11.; Створити runtime-сутності.; |}
 - id: t_rejected_end
!Тип
K2 Workflow Engine
|-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Рекомендовано
|Використовувати зареєстровані handler-и, а не довільний код у YAML.; користувач системи має змогу додати End Event.; |-
|Клік по переходу
|Відкрити умови переходу.;== 14. System Task ==
 to: change_status_approved
!Правило
 name: ChangeStatusRejected
Approval Task застосовують, коли потрібно для погодження документів, заявок, платежів, договорів або інших обʼєктів K2 ERP.;<pre>
=== Етап 1.; 39.1.; аналітичні інструменти ===
 type: system_task
!характеристика
!характеристика
 ↓
document.amount > 100000
6.; |-
|Gateway
|Умова або розгалуження процесу.; |-
|action
|string
|Яку дію обрав користувач системи.; |-
|input
|object
|Вхідні параметри.; |-
|Diagram-first
|користувач системи редагує графічну діаграму, YAML оновлюється автономно.; Помилки YAML показуються користувачу.; Live collaboration.; |-
| style="background:#f8d7da; color:#721c24; font-weight:bold;" |Заборонено
|Дозволяти виконання довільного Python/SQL/JS у звичайних умовах.; transitions: []
!Код
 due_in: 2d

 label: Завершено: відхилено
=== 11.3.; Властивості Start Event ===
!Основні дії
 create_stub_handlers: true
!характеристика
!Рівень
Markdown documentation generator
7.; |}

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

 - id: amount_gateway
4.; |-
|entity_id
|uuid/string
|ID документа або запису.; |-
|sla
|object
|Ні
|Загальні SLA процесу.; |-
|timeout
|integer
|Timeout запиту.; Exclusive Gateway.;=== Етап 5.; 39.5.; Валідація та симуляція ===
=== 26.1.; Мета симулятора ===
 from: manager_approval
4.; |-
|approvers
|list
|Список погоджувачів.; користувач системи має змогу видалити вузол після підтвердження.; |-
|review
|Очікує перегляду.; |-
|condition
|expression
|Додаткова умова запуску.; |-
|completed_by
|reference
|Хто завершив.; |-
|Join Gateway
|join_gateway
|Обʼєднання паралельних гілок.;=== 14.1.; Призначення ===
{| class="wikitable"

version: 1
 type: approval_task
!характеристика
 ↓
sla:
== 34.; Нефункціональні вимоги ==
1.; Результатом роботи редактора є собою структурований характеристика процесу у форматі '''YAML''', з якого можуть генеруватися виконувані workflow, код, конфігурації BPM-рушія, документація і інтеграційні сценарії.; |-
|YAML-first
|користувач системи редагує YAML, діаграма перебудовується після валідації.; 3.; |-
|start_process
|Запустити інший BP-процес.; Реалізувати actions для user/approval task.; !Тип

38.; Ризики

workflow_handlers.py

Тип
- reject

Workflow engine / BPMN / код / документація

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

13.; |-

Нова зміна = нова draft-версія Для редагування released-процесу створюється нова реліз.; !характеристика Тип

bp_process_variables

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

status: draft
Тип дії

1.; платформа не надає можливість опублікувати бізнес-процес з Error.; {| class="wikitable"

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

- id: t_start_manager

Python workflow generator

to: end_approved

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

Статус

purchase_approval.yml 1.; ↓

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

  • відправити рахунок у зовнішню систему;
  • перевірити статус оплати;
  • створити заявку в CRM;
  • викликати сервіс доставки;
  • відправити інформаційні дані в податкову систему;
  • викликати webhook.; |-
escalation_after Коли ескалювати після прострочки.; платформа знаходить переходи на неіснуючі вузли.; !характеристика Джерело Метод 2.;
 value: department_head
!Ризик
 require_comment_on_reject: true

3.; |Створено рахунок.; |Оплата отримана.; Реалізувати YAML export.; |-
|webhook
|Запуск зовнішнім HTTP-запитом.; - id: t_manager_rejected
 escalation_after: 1d
</pre>

=== 17.2.; Типи gateway ===
 output: ./generated/bpmn
 
<pre>
{| class="wikitable"
Для MVP достатньо:
 label: Погодження фінансистом

Виконання процесу погодження закупівельна діяльність
 escalation_after: 1d
3.; |-
| style="background:#d4edda; color:#155724; font-weight:bold;" |Рекомендовано
|Використовувати обмежену безпечну expression language.; |-
|Subprocess
|subprocess
|Виклик іншого бізнес-процесу.; Узгодити runtime-модель.; |-
|GET
|/api/bp-models/{id}/versions
|Отримати версії.; |-
|Нескінченний цикл
|Warning/Error
|Цикли мають бути явно дозволені.; |-
|system
|Системні змінні.;=== 14.2.; Типи системних дій ===
{| class="wikitable"
=== 32.1.; Імпорт ===
 type: role
 to: amount_gateway
 - name: python_handlers
3.; ↓
4.; |-
|nodes
|list
|Так
|Вузли процесу.; * змінити статус документа;
* створити запис;
* оновити поле;
* сформувати друковану форму;
* створити задачу;
* провести документ;
* надіслати повідомлення;
* запустити інший бізнес-процес.; !Правило

 - name: requester
 module: purchases
== 13. Approval Task ==

 status: rejected
{| class="wikitable"
</pre>
9.; |-
|started_at
|datetime
|Дата запуску.;=== 35.2.; Що можна відкласти ===
5.; |-
|Notification Task
|notification_task
|Надсилання повідомлення.; Модель зберігається в K2 ERP.; |-
|Мінімум один end node
|Error
|бізнес-процес має мати хоча б один фінальний вузол.; Released-версію не можна змінювати напряму.; 1.; |}

3.;== 26.; Симулятор процесу ==
 allow_manual_start: true
|-
|approval_type
|enum
|single, sequential, parallel_all, parallel_any, majority.;== 22.; Повідомлення ==
6.;<syntaxhighlight lang="yaml">
!Тип

1.; AI-рекомендації по оптимізації процесу.; 11.; |-
|K2 Workflow Engine
|Високий
|Виконувана схема процесу.; |-
|label
|string
|Ні
|Назва переходу.; |}

 - id: t_manager_approved
!характеристика
характеристика

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

Approval Task approval_task Задача погодження.;=== Етап 3.; 39.3.; Переходи та умови ===
- name: amount

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

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

id string Так Замовлення перейшло у статус “На погодженні”.; |} Поле Тип Поле approval_type: single
Бізнес-аналітик - scheduled - Workflow - create_entity - integer - majority Потрібна більшість голосів.; action: reject

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

16. Integration Task

== 12. User Task ==
BP-модель має підтримувати змінні процесу.; |-
|Досяжність вузлів
|Error
|Не має бути вузлів, до яких неможливо дійти зі старту.; |-
|comment
|text
|Коментар користувача.; |-
|Timer Event
|timer
|Очікування часу або дедлайну.; - approve
!характеристика
|-
|бізнес-процес не має кінцевого вузла
|Екземпляри процесу зависають.;
due_in: 2d
type: end

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

manual - Integration Task integration_task Виклик зовнішнього API.; type: gateway
output: ./generated/workflows
name: PurchaseApproval

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

to: change_status_rejected

9.; користувач системи має змогу додати Start Event.; |-

error_transition string - call_service - variables list Ні } 1.;

purchase_approval.yml

  • YAML;
  • JSON;
  • BPMN 2.0;
  • PNG;
  • SVG;
  • PDF;
  • Markdown;
  • Mermaid;
  • PlantUML.; |користувач системи натиснув “Запустити погодження”.; |-
email Email.; платформа показує результат gateway.; - name: bpmn Тип вузла

26.2.; функціональні можливості симулятора

Обовʼязкове
to: end_rejected

6.; Узгодити типи вузлів.; document.currency = UAH

nodes: []

 from: amount_gateway

 code: purchase_approval

label: Змінити статус на відхилено

40.; Висновок

характеристика

bp_process_instances

== 19.; Змінні процесу ==
 to: manager_approval

!Тип запуску
== 36.; Критерії приймання ==
=== 19.1.; Типи змінних ===
Редактор має підтримувати такі типи вузлів.;== 29.; Версіонування BP-моделей ==
Приклади дій:
!Обовʼязкове
=== 11.2.; Типи запуску ===

Графічний редактор бізнес-процесу
14.; Для моделі створюється draft-версія.;== 32.; Імпорт та експорт ==

* задати тестові значення змінних;
* пройти бізнес-процес по кроках;
* побачити активні задачі;
* перевірити умови gateway;
* перевірити маршрути погодження;
* перевірити SLA;
* перевірити помилки;
* побачити фінальний результат процесу.; Approved-версію можна опублікувати.; |-
|decimal
|Десяткове число.; |-
|released
|Доступно для запуску нових процесів.; |-
|reference
|Посилання на сутність K2 ERP.; |керування моделями та доступами.; |-
|Валідація
|Перед публікацією бізнес-процес перевіряється на помилки.;=== 36.5.; Валідація ===
=== 26.3.; Приклад симуляції ===
!Правило
variables: []
 ↓
{| class="wikitable"

Графічне полотно має дозволяти:
Редактор має підтримувати:
!характеристика
 generate_runtime_schema: true
!Поле
5.; Додає System Task для зміни статусу документа.; - id: change_status_approved
|-
|name
|string
|Так
|Технічна назва процесу.; |-
|single
|Потрібне погодження одного виконавця.; |-
|SLA
|Обмеження часу на виконання задачі або процесу.; Адміністратор публікує released-версію.; |Review, approval, контроль процесів.; |Подія з сайту або CRM.; |-
|TypeScript types
|Середній
|Типи змінних і задач.; Реалізувати test variables.; Нові документи PurchaseOrder запускають бізнес-процес автономно.; Запускає валідацію.; |-
|new_value
|Нове значення.; користувач системи має змогу задати назву, код, компонент і характеристика.; bp_process_events
<pre>
id string - Керівник - Drag від одного вузла до іншого - cancel Чіткі правила join і блокування документа.; |- retry_policy object - current_nodes list Активні вузли процесу.; Приклади:

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

exclusive - reminder_before Коли нагадати до дедлайну.; Додає Gateway для перевірки суми.; version: 1

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

draft - POST /api/bp-models/{id}/simulate - Script task виконує небезпечний код Ризик безпеки.; Transition / Перехід ==

=== 18.1.; |-

type string Так - integration - document_status_changed - Workflow-agnostic }
- id: t_finance_rejected

28.2. bp_process_instances

  • графічне полотно процесу;
  • панель інструментів;
  • бібліотеку елементів процесу;
  • дерево процесу;
  • панель властивостей;
  • YAML-редактор;
  • валідатор процесу;
  • менеджер ролей і виконавців;
  • менеджер умов;
  • менеджер SLA;
  • менеджер автоматичних дій;
  • менеджер інтеграцій;
  • менеджер версій;
  • генератор workflow;
  • preview виконання процесу;
  • симулятор процесу;
  • журнал змін;
  • експорт та імпорт.; |-
require_signature boolean - user - entity reference Ні ER-сутність або документ, до якого привʼязаний бізнес-процес.;== 4.; Терміни та визначення ==

BPMN generator

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

!Тип
|-
|Один start node
|Error
|бізнес-процес має мати рівно один стартовий вузол.; |-
|escalation_to
|Кому ескалювати.; 1.; |-
|Неправильно задані умови gateway
|бізнес-процес іде не тією гілкою.; |-
|Approval
|Погодження документа або дії.; |-
|BP-модель
|Структурований характеристика бізнес-процесу.; |-
|Escalation
|Автоматичне підняття задачі на інший рівень при порушенні SLA.; |}

=== 8.2.; Дії користувача на полотні ===
{| class="wikitable"
<pre>
process_docs.md
== 27.; Генерація виконуваного workflow ==
|-
|id
|uuid
|ID задачі.; {| class="wikitable"
4.; |-
|Адміністратор
|Налаштовує права, версії, доступи, публікацію.; 1.; |-
|task
|інформаційні дані поточної задачі.; {| class="wikitable"
{| class="wikitable"
=== 13.1.; Призначення ===
4.; |-
|End Event
|end
|Завершення процесу.; |-
|POST
|/api/bp-models/{id}/validate
|Провалідувати модель.; |-
|code
|string
|Так
|Унікальний код процесу.; |-
|object
|JSON-обʼєкт.; |-
|Зміна released-процесу
|Старі процеси можуть зламатися.; YAML export/import.; Створити сторінку BP-редактора.; 4.; {| class="wikitable"
 assignee_type: role
== 15. Script Task ==
=== 25.2.; Рівні повідомлень ===
<pre>
|-
|GET
|/api/bp-models
|Список BP-моделей.; Complex event gateway.; платформа знаходить бізнес-процес без стартового вузла.; start → manager_approval → amount_gateway → finance_approval → change_status_approved → end_approved
 code: purchase_approval
== 30.; Права доступу ==
</syntaxhighlight>

12.; |-

priority integer Ні Пріоритет, якщо кілька умов істинні.;
 audit: true
!характеристика

== 28.; Виконання процесу в K2 ERP ==
7.; |-
|telegram
|Telegram-бот.; Реалізувати створення задач.; |-
|url
|string
|Endpoint або посилання на інтеграційний конектор.; |-
|return
|Повернути на доопрацювання.; |Валідація архітектури, звʼязок з ER-моделями та модулями.; |-
|User Task
|user_task
|Задача, яку виконує користувач системи.; |}

 label: Погодження керівником
3.; !Поле

!Статус
 sla:
2.; |-
|user
|інформаційні дані користувача.; |}

Редактор BP-моделей має працювати за принципом:<pre>
transitions:
 assignee: document.created_by.manager
 - id: change_status_rejected
|-
|Released-версія незмінна
|Опубліковану версію не можна змінювати напряму.; |Timeout, retry policy, error transition.; |-
|Parallel Gateway
|parallel_gateway
|Паралельне виконання гілок.; |-
|SLA без escalation
|Warning
|Якщо є собою SLA, бажано налаштувати escalation.; |}

=== 27.3.; конфігурація генераторів ===

=== 32.2.; Експорт ===
!Роль

 entity: PurchaseOrder

* перевірити документ;
* заповнити додаткові поля;
* прикріпити файл;
* підтвердити виконання;
* залишити коментар;
* обрати наступну дію.; Призначення ===
Transition визначає, як бізнес-процес переходить від одного вузла до іншого.

=== 18.2.; Базова симуляція.; |-
|delegate
|Делегувати іншому користувачу.; |-
|Ctrl + колесо миші
|Масштабувати схему.; bp_task_instances
== 17. Gateway ==

== 5.; Основні користувачі ==
=== 31.2.; Поля audit log ===
!Блокує публікацію
 module: purchases
2.; |-
|status
|enum
|Так
|draft, review, approved, released, archived.; |-
|headers
|object
|HTTP-заголовки.;=== 16.1.; Призначення ===
<pre>

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

K2 Workflow Engine

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

value: department_head
name: PurchaseApproval
↓

4.; Додає Start Event при зміні статусу PurchaseOrder.; !Як зменшити

label: Погодження закупівельна діяльність
характеристика

Очікуваний шлях: 4.; Приклади:

- return

Редактор має підтримувати два режими: 1.; |-

POST /api/bp-models/{id}/publish Опублікувати модель.; Реалізувати запуск процесу.;
 label: Purchase approval
=== 25.1.; Обовʼязкові перевірки ===
=== 28.1.; Runtime-сутності ===
6.; користувач системи має змогу редагувати властивості вузла.; |-
|GET
|/api/bp-models/{id}
|Отримати BP-модель.;== 24.; Двостороння синхронізація Diagram ↔ YAML ==
=== 19.2.; Джерела змінних ===
{| class="wikitable"
Рекомендована структура екрана:<pre>
!Результат

 from: change_status_approved
=== 22.2.; Події для повідомлень ===
2.; |-
|description
|text
|Ні
|характеристика процесу.; | Верхня панель: Назва BP-моделі | Save | Validate | Simulate | Publish | Export |
 - name: k2_workflow
| Бібліотека елементів | Графічне полотно 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 |
!Дія
15.; !характеристика
{| class="wikitable"

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

* графічне редагування бізнес-процесів;
* супровід start/end/user/approval/system/gateway вузлів;
* характеристика переходів, умов, виконавців, SLA та повідомлень;
* збереження BP-моделі у YAML;
* двостороння синхронізація Diagram ↔ YAML;
* валідація перед публікацією;
* симуляція процесу;
* генерація runtime workflow;
* версіонування та audit log;
* супровід виконання процесів у K2 Workflow Engine.; Якщо користувач системи редагує YAML, виконується парсинг.; allow_cancel: true
|-
|update_entity
|Оновити поля сутності.; Кожна зміна на діаграмі оновлює внутрішню BP-модель.; ↓
5.; - name: currency

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

description: бізнес-процес погодження заявки на закупівлю

9.; |-

to string Так - Паралельні задачі створюють конфлікт }
due_in: 1d
  • створення задачі;
  • наближення SLA;
  • прострочка задачі;
  • погодження;
  • відхилення;
  • завершення процесу;
  • помилка інтеграції.; |}
status: draft

3.; |}

Перегляд

+----------------------+-----------------------------------------+---------------+

action:

4.; Draft-версію можна перевести в review.; |-

POST /api/bp-models/{id}/generate - POST /api/bp-models Створити BP-модель.; label: Змінити статус на погоджено Редактор має мати режим симуляції.; |-
due_at datetime - change_status - assignee string Так - assignee reference - sequential - actions list Так - Backend-розробник - request_info Запросити додаткову інформацію.; action: reject
enabled: true

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

- id: end_approved

3.; |}

4.; Start Event.; |-

timeout integer Максимальний час виконання.; Редактор BP-моделей має містити: actions: Для кожної задачі можна задати: action: Для виконання BP-моделей потрібно створити runtime-сутності.; |-
Двостороння синхронізація - transitions list Так } Адміністратор Тип Принцип

2.; document.amount > 100000

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

1.; |-

completed_at datetime - event_based class="wikitable"
=== 13.3.; Властивості Approval Task ===
=== 8.1.; Основні вимоги ===
<pre>

8.; |-

assignee_type enum Так - Info - retry_policy object Правила повтору.; Узгодити YAML-схему BP-моделі.; Узгодити правила публікації.; source: document.amount
- id: t_amount_low

2.; {| class="wikitable"

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

type: approval_task

2.; Реалізувати публікацію released-версій.; користувач системи має змогу задати умову переходу.; Реалізувати gateway.; |-

module string Так - User task без виконавця Error Користувацька задача має мати assignee.;
!характеристика
 - id: t_approved_end

!Термін
 entity: PurchaseOrder
{| class="wikitable"
=== 17.3.; Приклад умов ===
4.; |}

 options:
== 35. MVP ==
{| class="wikitable"
 entity: PurchaseOrder
|-
|document
|Поля документа, який запустив бізнес-процес.;== 1.; Мета розробки ==
4.; |-
|Ctrl + Y
|Повторити дію.; |-
|POST
|/api/bp-models/import
|Імпорт BP-моделі.; |}

bp_model_versions

settings:
 label: Старт
 source: document.created_by
{| class="wikitable"
 calendar: business_days
2.; |-
|action
|string
|Ні
|Дія користувача, яка запускає перехід.; Перехід зберігається в YAML.; |Тільки зареєстровані handler-и та sandbox.; |Валідація має блокувати публікацію.; |-
|trigger
|object
|Так
|Умова запуску процесу.; |-
|Python handlers
|Середній
|Каркас handler-ів для script/system task.; Редактор має підтримувати експорт у:

YAML BP-модель
!Аналітик
 name: ChangeStatusApproved
{| class="wikitable"
{| class="wikitable"
15.; User Task.; Властивості transition ===
1.; |-
|generate_document
|Сформувати документ або друковану форму.; Запускає симуляцію з різними сумами.; !Архітектор

=== 21.1.; SLA задачі ===
 escalation_to:
10.; 1.; ↓
 type: reference

=== 13.2.; Типи погодження ===
12.; |}

!Поле

 reminder_before: 4h
 type: change_status

* до 300 вузлів в одному процесі;
* до 1 000 переходів;
* відкриття процесу до 100 вузлів — до 3 секунд;
* відкриття процесу до 300 вузлів — до 10 секунд;
* валідація процесу до 300 вузлів — до 5 секунд;
* генерація YAML — до 3 секунд;
* симуляція типового процесу — до 5 секунд.; |-
|Нові екземпляри
|Нові процеси запускаються на актуальній released-версії.;</pre>

== 10.; Властивості BP-моделі ==
<pre>

* порівнювати значення;
* перевіряти статуси;
* перевіряти ролі;
* працювати з сумами;
* перевіряти наявність значень;
* використовувати AND / OR / NOT;
* звертатися до змінних процесу.; |-
|Task / Задача
|Дія, яку виконує користувач системи або платформа.; |}

!Приклад

!Рівень
<pre>

+----------------------+-----------------------------------------+---------------+
 from: start
 name: ManagerApproval
{| class="wikitable"
bp_audit_log
|-
|handler
|string
|Назва handler-а.; |-
|Actor
|Виконавець задачі: користувач системи, роль, група, менеджер, платформа.; Реалізувати бібліотеку вузлів.; 3.; користувач системи має змогу додати User Task.; |-
|complete
|Завершити задачу.; |-
|condition
|expression
|Ні
|Умова переходу.; enabled: true
!характеристика
 type: decimal
Приклади:
Script Task надає можливість виконати код або handler, зареєстрований у K2 ERP.; settings:
!Статус
2.;== 6.; Функціональні блоки редактора ==
3.; |}

<pre>

!Тип
1.; |Погодження, виконання, коментування задач.; |}

2.; System Task.; |-
|permissions
|object
|Ні
|Права доступу.; |-
|Approval task без дій
|Error
|Approval task має мати approve/reject або інші дії.; Реалізувати симулятор.; |}

YAML-модель має використовуватися для генерації або інтерпретації workflow.; |-
|object_id
|ID обʼєкта.; |-
|inclusive
|має змогу виконатися одна або кілька гілок.; Mermaid/PlantUML import.; |-
|YAML як source of truth
|YAML-файл є собою основним джерелом опису процесу.; Реалізувати двосторонню синхронізацію.; |-
|reject
|Відхилити.; Якщо YAML невалідний — показується помилка з рядком і полем.; користувач системи має змогу додати Approval Task.; |-
|version
|string
|Так
|реліз процесу.; |-
|Валідність transitions
|Error
|Усі переходи мають посилатися на існуючі вузли.; approval.result == "approved"
</pre>

== 18.; |-
|calendar
|Робочий календар.; |-
|output
|object
|Очікуваний результат.; |}

3.;

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

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

13.; |-

Markdown documentation Високий - event Запуск внутрішньою подією K2 ERP.; !Перевірка

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

Поле

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

1.;=== 29.1.; Статуси версій === 2.; Внутрішня модель серіалізується у YAML.; type: role

20.; Умови та expression language

5.; |-

language enum - Node / Вузол Елемент процесу: старт, задача, умова, дія, завершення.; платформа знаходить бізнес-процес без кінцевого вузла.; Розробити в K2 ERP графічний редактор BP-моделей, який надає можливість: Endpoint

process: 4.; |Створення схем, характеристика етапів, правил і виконавців.; Генерація Python handler stubs.; |}

manager action = approve

output: ./generated/python
from: finance_approval
Канал

4.; |-

document_created Симулятор і default-гілка.; Реалізувати transitions.; |- success_condition expression - label string Назва задачі.; Аналітик створює BP-модель “Погодження закупівельна діяльність”.; type: start
trigger_type: document_status_changed

bp_models

- id: finance_approval
Наслідок

3.; Генерація K2 Workflow schema.; |-

Вихід із gateway Error Gateway має мати мінімум два вихідні переходи.; allow_cancel: true
options:

Потрібно:

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

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

4.; Якщо YAML валідний — оновлюється діаграма.;<pre> !характеристика !Дія

K2 BP Editor

entity: PurchaseOrder
include_documentation: true
характеристика

variables: purchase_approval.yml

Тип

5.; |-

approve - list Список.; Expression language має дозволяти: Поле
due_in Час на виконання задачі.;
from: finance_approval

11. Start Event

label: Завершено: погоджено
характеристика Поле

1.; |-

date - Архітектор - Warning - status enum }

36.4. YAML

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

  • YAML;
  • BPMN 2.0 у базовому режимі.;=== 28.3. bp_task_instances ===
enabled: true
  • не втрачати незбережені зміни;
  • підтримувати autosave draft;
  • не дозволяти публікацію невалідного процесу;
  • не змінювати released-версії напряму;
  • зберігати історію змін;
  • підтримувати rollback до попередньої версії.; - reject

14.; |-

node_id string ID вузла з BP-моделі.; Якщо сума до 100 000 грн — документ погоджується автономно.; Ключові вимоги:
↓
entity: PurchaseOrder
Розробник
Drag елемента з бібліотеки - Унікальність node.id Error - parallel_all Паралельне погодження, всі мають погодити.; to: change_status_approved
type: end

* створювати процеси drag-and-drop;
* розміщувати вузли процесу;
* зʼєднувати вузли переходами;
* налаштовувати умови переходів;
* переміщувати вузли;
* групувати етапи у swimlane-и;
* масштабувати діаграму;
* автономно розкладати бізнес-процес;
* фільтрувати видимі вузли;
* підсвічувати шлях виконання;
* показувати помилки прямо на схемі;
* відкривати властивості вузла або переходу.; |-
|reject_policy
|enum
|stop_process, return_to_author, continue.; |-
|old_value
|Старе значення.; Після імпорту відновлюються вузли, переходи, умови та властивості.; Додає End Event для погодження та відхилення.; Генерація BPMN.; |Ні.; |-
|allow_delegate
|boolean
|Чи дозволено делегування.; condition: document.status == "approval_required"
|-
|id
|string
|Так
|Унікальний ID вузла.; |-
|entity
|string
|Сутність, з якою повʼязаний бізнес-процес.; Start Event визначає, як запускається бізнес-процес.; |-
|Подвійний клік по вузлу
|Відкрити розширене редагування.; |-
|approved
|Затверджено.; Графічне полотно.; |-
|body
|object
|Тіло запиту.; |-
|Integration action
|Автоматична дія, яка викликає зовнішній API або сервіс.; |-
|Script Task
|script_task
|Виконання скрипта або handler-а.; validate_handlers: true
== 7.; Загальний вигляд інтерфейсу ==
!Обовʼязкове
2.; |-
|Mermaid diagram
|Середній
|Mermaid-схема процесу.; Редактор має дозволяти налаштовувати повідомлення.; Review-версію можна затвердити.; |-
|parallel_any
|Паралельне погодження, достатньо одного погодження.; |}

 label: Перевірка суми
 ↓
!Керівник
!характеристика
 from: change_status_rejected
 result: approved
=== 34.2.; Надійність ===
 condition: document.amount <= 100000

 - id: t_amount_high
 from: amount_gateway
 to: finance_approval
 condition: document.amount > 100000
5.; |-
|Error Event
|error
|Обробка помилки.; Реалізувати валідатор.; - id: manager_approval
 - approve
Редактор BP-моделей K2 ERP має стати центральним інструментом для моделювання та виконання бізнес-процесів у системі.; Діаграма експортується у валідний YAML.; |-
|Graphical-first
|Основна робота виконується через графічний редактор.; Генератори / інтерпретатор
2.; |-
|notifications
|list
|Ні
|Повідомлення по задачі.; 4.; |-
|Умови gateway
|Warning
|Для exclusive gateway бажано мати default-гілку.; |-
|Версіонування
|Кожна зміна процесу має зберігатися як реліз.; Approval Task.; |-
|Gateway
|gateway
|Умова або розгалуження.; |-
|description
|text
|Ні
|Інструкція для виконавця.; type: change_status
 escalation_to:
 assignee_type: expression
|-
|Error
|Критична помилка процесу.; |-
|auth
|reference
|Посилання на конфігурація авторизації.; |-
|manual
|Значення, введені користувачем.; |-
|process_instance_id
|uuid
|Екземпляр процесу.; користувач системи має змогу задати дію користувача для переходу.; YAML можна імпортувати назад.; Генерація Markdown-документації.; default_task_priority: normal
|-
|in_app
|Повідомлення всередині K2 ERP.; Версіонування draft/released.; |-
|created_at
|Дата зміни.; ↓
2.; |-
|Клік по вузлу
|Відкрити властивості вузла.; |-
|parallel
|Виконуються всі гілки паралельно.; Генерація runtime-схеми для K2 Workflow Engine.; |-
|Виконуваність
|BP-модель має бути придатною для запуску в K2 Workflow Engine.; |-
|Розширюваність
|Має бути можливість додавати нові типи вузлів, дій і генераторів.; |-
|completed_at
|datetime
|Дата завершення.; |Released-версії незмінні, зміни тільки через нову версію.; Окремо варто відзначити workflow-сценаріїв, погоджень, автоматичних дій, інтеграцій, правил переходів і виконавців виступає ключовою рисою графічного проєктування бізнес-процесів забезпечується через '''Редактор BP-моделей K2 ERP'''.; !характеристика
2.; |-
|trigger_type
|enum
|manual, document_created, document_status_changed, scheduled, webhook, event.; Додає Approval Task для керівника.; |-
|Ctrl + Z
|Скасувати останню дію.; платформа знаходить недосяжні вузли.; |-
|datetime
|Дата та час.; користувач системи має змогу додати System Task.; Передає на review.; |-
|Перегляд BP-моделі
|Так
|Так
|Так
|Так
|Так
|Так
|-
|Створення BP-моделі
|Так
|Так
|Ні
|Так
|Ні
|Ні
|-
|Редагування вузлів
|Так
|Так
|Ні
|Так
|Ні
|Ні
|-
|Редагування YAML
|Частково
|Так
|Так
|Так
|Ні
|Ні
|-
|Редагування handler-ів
|Ні
|Так
|Так
|Так
|Ні
|Ні
|-
|Валідація
|Так
|Так
|Так
|Так
|Так
|Так
|-
|Симуляція
|Так
|Так
|Так
|Так
|Так
|Ні
|-
|Публікація
|Ні
|Так
|Ні
|Так
|Так
|Ні
|-
|Видалення
|Ні
|Так
|Ні
|Так
|Ні
|Ні
|}

 action: approve

<pre>

* створення BP-моделі;
* зміну назви процесу;
* додавання вузла;
* видалення вузла;
* зміну властивостей вузла;
* створення переходу;
* зміну умови переходу;
* видалення переходу;
* зміну SLA;
* зміну виконавців;
* зміну YAML;
* запуск симуляції;
* генерацію workflow;
* зміну статусу версії;
* публікацію процесу.; |-
|model_id
|uuid
|BP-модель.; Перехід відображається на діаграмі.; |-
|BPMN 2.0
|Високий
|BPMN XML.;=== 34.3.; Безпека ===
!Поле
 gateway_type: exclusive

 assignee: finance_manager

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

audit: true
характеристика

8.; nodes:

status: approved

<syntaxhighlight lang="yaml">

Тип

5.; Узгодити expression language.; |-

Event - sms - Process-first - comment - archived class="wikitable"

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

характеристика Дія

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

4.; |}

Пріоритет
allow_manual_start: true
approval_type: single

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

8.; |Так.; |-

Script action Автоматична дія, яка виконує код або функцію.; !характеристика

bp_model.yml User Task — задача, яку виконує користувач системи ERP.; Реалізувати додавання вузлів.; * YAML;

  • JSON;
  • BPMN 2.0;
  • Mermaid flowchart;
  • PlantUML activity diagram.; === Етап 4.; 39.4.; YAML ===