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

Бізнес-логіка

Матеріал з K2 ERP Wiki
Бізнес-логіка має змогу бути реалізована у різних частинах системи, але істотно не розкидати її хаотично.;

Під час налагодження коду програміст часто перевіряє саме бізнес-логіку.;== Бізнес-логіка і налагодження коду ==

У багатьох модулях K2 ERP бізнес-логіка відповідає за розрахунки.;

До них належать: Потрібно з’ясувати:

Потрібно визначити:

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

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

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

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

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

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

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

Бізнес-логіка в K2 ERP

  • чи правильні вхідні інформаційні дані;
  • чи спрацювала потрібна умова;
  • чи правильний статус документа;
  • чи має користувач системи потрібну роль;
  • чи не порушено правило процесу;
  • чи правильний розрахунок;
  • чи коректно виконалася інтеграційні функціональні можливості;
  • чи не виникла помилка у пов’язаному модулі.; Основна ідея: бізнес-логіка перетворює правила роботи підприємства на зрозумілі алгоритми, які має змогу виконувати ERP-система.; return False

Бізнес-логіка і права доступу

Пояснення: навіть короткий фрагмент коду має змогу містити важливі бізнес-правила, які впливають на роботу підприємства.; Правило тестування: потрібно перевіряти не лише те, що платформа надає можливість правильні дії, а й те, що вона блокує неправильні.; Це можуть бути:

def can_approve_document(user, document):

Призначення бізнес-логіки

  • чи має користувач системи потрібну роль;
  • чи перебуває документ у правильному статусі;
  • чи не перевищує сума документа ліміт погодження користувача.;
  • Чернетка;
  • На погодженні;
  • Погоджено;
  • Відхилено;
  • Проведено;
  • Оплачено;
  • Закрито;
  • Скасовано.;

Нижче наведено умовний приклад бізнес-логіки для перевірки функціональні можливості погодження документа.; return False

Бізнес-логіка і документація

Статус документа або процесу показує, на якому етапі він перебуває.; Вона має бути правильно спроєктована, реалізована, протестована, залогована і задокументована.;{{SEO

Бізнес-логіка — це сукупність правил.; * у Python-коді модуля;

  • у серверних процедурах;
  • у правилах валідації;
  • у налаштуваннях маршруту погодження;
  • у механізмах прав доступу;
  • у звітах;
  • у сценаріях інтеграції;
  • у конфігураціях процесів.;
Головна думка: бізнес-логіка в K2 ERP — це правила роботи підприємства, реалізовані у модулях, Python-коді, документах, правах доступу, звітах та інтеграціях.;
if not user.has_role("manager"):

У K2 ERP бізнес-логіка має змогу реалізовуватися за допомогою мови програмування Python.; Рекомендовано:

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

Бізнес-логіка визначає: З іншого боку, вона реалізується технічно:

Для документа бізнес-логіка має змогу визначати:

  • запуск бізнес-операції;
  • зміну статусу;
  • результат перевірки;
  • причину відмови;
  • помилку розрахунку;
  • дію користувача;
  • результат інтеграції;
  • ключові параметри процесу.; return True
  • суми документів;
  • податки;
  • знижки;
  • залишки;
  • собівартість;
  • зарплата;
  • бонуси;
  • пені;
  • планові та фактичні показники;
  • фінансові результати;
  • аналітичні коефіцієнти.;== Хороші практики роботи з бізнес-логікою ==

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

  • стандартні сценарії;
  • граничні випадки;
  • помилкові інформаційні дані;
  • різні ролі користувачів;
  • різні статуси документів;
  • перевищення лімітів;
  • відсутність обов’язкових даних;
  • повторне виконання операції;
  • роботу після зміни налаштувань;
  • взаємодію між модулями.; Python має змогу використовуватися для:

Бізнес-логіка визначає:

У K2 ERP бізнес-логіка є собою центральною частиною розробки та впровадження модулів.;== Бізнес-логіка і тестування == істотно: розрахункова бізнес-логіка має бути особливо уважно перевірена, з цієї причини що помилки в розрахунках можуть напряму впливати на фінансові рішення для бізнесу.; * роль користувача;

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

З одного боку, вона походить від бізнесу:

формування звітів залежить від правильної бізнес-логіки.;

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

У документації можна описувати:

Іншими словами, бізнес-логіка відповідає на питання: що має зробити платформа, коли відбувається певна бізнес-подія.;

Типові помилки в бізнес-логіці

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

Бізнес-логіка і інтеграції

Вона має змогу знаходитись:

У K2 ERP документи часто є собою основними об’єктами бізнес-логіки.;
</div>

* неповне розуміння бізнес-процесу;
* відсутність перевірки прав доступу;
* неправильна логіка статусів;
* розрахунок лише для одного сценарію;
* ігнорування граничних випадків;
* дублювання правил у різних місцях;
* жорстко зашиті значення;
* відсутність логування важливих рішень;
* непогодженість між модулями;
* неправильна обробка помилок інтеграції;
* відсутність документації;
* зміна логіки без тестування.; У логах можна фіксувати:
== Бізнес-логіка як міст між бізнесом і кодом ==
'''Архітектурна порада:''' критична бізнес-логіка має бути розміщена там, де її складно обійти випадковою дією користувача або зміною інтерфейсу.; Критичні перевірки доступу мають виконуватися на рівні логіки системи.; if document.status != "waiting_approval":

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

</div>
Якісна бізнес-логіка робить ERP-систему зрозумілою, керованою і корисною для підприємства.; '''Суть:''' бізнес-логіка  це місце, де мова бізнесу перетворюється на мову системи.; * спочатку зрозуміти бізнес-процес;
* описати основні правила до написання коду;
* узгодити логіку з відповідальними користувачами;
* розділяти технічну і бізнесову складність;
* уникати дублювання правил;
* додавати перевірки доступу;
* логувати важливі рішення для бізнесу системи;
* тестувати граничні випадки;
* документувати складні правила;
* не ховати критичну логіку лише в інтерфейсі;
* робити код зрозумілим для подальшої підтримки.; Бізнес-логіку потрібно тестувати, з цієї причини що саме вона визначає правильність роботи системи.; '''Професійний підхід:''' якісна бізнес-логіка має бути зрозумілою, перевіреною, документованою і придатною для розвитку разом із бізнесом.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

Бізнес-логіка є собою звязком між реальними правилами підприємства і технічною реалізацією в системі.;== Приклади бізнес-логіки ==
== Приклад бізнес-логіки в Python ==

<div style="background:#fff7ed; border-left:6px solid #fb923c; padding:12px; margin:12px 0;">
== Бізнес-логіка і модулі K2 ERP ==

Бізнес-логіка тісно повязана з правами доступу.; Для якісної реалізації бізнес-логіки варто дотримуватися практичних правил.;</div>

платформа має враховувати:
</div>

<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

* правила створення документів;
* маршрути погодження;
* фінансові розрахунки;
* обмеження доступу;
* перевірки даних;
* логіку статусів;
* роботу довідників;
* поведінку інтерфейсу;
* формування звітів;
* інтеграцію із зовнішніми системами;
* автоматичні сценарії;
* обробку подій.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Окремо варто відзначити умов, алгоритмів і процесів, які визначають, як саме має працювати платформа відповідно до потреб підприємства.; '''Суть:''' бізнес-логіка описує не без ускладнень технічні дії, а правила реального бізнесу, які платформа має виконувати автономно або контролювати.;</div>
'''Для Wiki:''' стаття або розділ про бізнес-логіку модуля сприяє швидше розуміти систему новим розробникам, аналітикам і адміністраторам.; як ілюстрація:
як ілюстрація:

<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

* хто має змогу створити документ;
* які поля є собою обовязковими;
* які значення допустимі;
* хто має змогу редагувати документ;
* які статуси доступні;
* хто має змогу погодити або відхилити документ;
* коли документ можна провести;
* коли документ можна скасувати;
* які дії запускаються після зміни статусу;
* які записи створюються в інших модулях.;</div>
'''Небезпека:''' технічно правильний код має змогу реалізовувати неправильну бізнес-логіку, якщо вимоги були зрозумілі неточно.;<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
== Бізнес-логіка і статуси ==

</div>
завдяки наявності '''Практична цінність:''' бізнес-логіка документа користувачі можуть уникати хаотичних дій і переводить роботу з документами у контрольований бізнес-процес.;</div>
 return False
'''Особливість ERP:''' помилка має змогу бути не в синтаксисі Python-коду, а в неправильному розумінні бізнес-правила.; * призначення правила;
* умови виконання;
* ролі користувачів;
* статуси процесу;
* обмеження;
* приклади правильних сценаріїв;
* приклади заборонених сценаріїв;
* повязані модулі;
* вплив на формування звітів;
* інтеграції;
* особливі випадки.; Кожен компонент K2 ERP зазвичай містить власну бізнес-логіку.; '''Безпека:''' бізнес-логіка не повинна покладатися лише на інтерфейсні обмеження.; Під час розробки ERP-модулів можуть виникати типові помилки бізнес-логіки.;== Бізнес-логіка і Python ==
== Висновок ==

 if document.amount > user.approval_limit:

* які дії дозволені користувачу;
* які документи можна створювати;
* у які статуси має змогу переходити документ;
* як виконуються розрахунки;
* які перевірки потрібно зробити перед збереженням;
* кому потрібно відправити документ на погодження;
* які інформаційні дані потрапляють у звіти;
* коли запускається автоматична дія;
* як платформа реагує на помилки;
* як модулі взаємодіють між собою.;== Бізнес-логіка і формування звітів ==
'''Перевага:''' правильно описана бізнес-логіка надає можливість системі працювати відповідно до реальних правил підприємства, а не змушує бізнес-середовище підлаштовуватися під випадкову технічну реалізацію.;<div style="background:#f0eaff; border-left:6px solid #8e44ad; padding:12px; margin:12px 0;">
Логування сприяє контролювати виконання бізнес-логіки.; '''Архітектурний принцип:''' бізнес-логіка модуля має бути узгоджена з іншими модулями K2 ERP, щоб платформа працювала як єдине ERP-рішення.; Вона визначає:
</div>
<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">

Тестування має перевіряти:
У цьому прикладі платформа перевіряє:

Бізнес-логіка — це основа роботи K2 ERP.; Вона має змогу визначати:

Для розробника: Python-код у K2 ERP часто є собою місцем, де бізнес-правила підприємства перетворюються на виконувану логіку системи.; * у Python-коді;

  • у модулях;
  • у базі даних;
  • у правах доступу;
  • у звітах;
  • в інтеграціях;
  • у налаштуваннях системи.;== Бізнес-логіка і документи ==

Див.; додатково