Розробка системи електронного документообігу (ECM/BPM)
ECM (Enterprise Content Management) + BPM (Business Process Management) — це системи для створення, согласування, зберігання й пошуку документів з автоматизованими бізнес-процесами. Замінюють паперові регламенти й Excel-таблиці зі статусами согласувань.
Ключові концепції
Документ — не просто файл. Об'єкт з метаданими (тип, автор, контрагент, сума, дата), версіями, історією змін, пов'язаними документами й життєвим циклом (draft → review → approved → archived).
Маршрут согласування — граф із етапів і учасників. Етапи можуть бути:
- Послідовні (крок 2 починається після кроку 1)
- Паралельні (кілька согласуючих одночасно)
- Умовні (якщо сума > 1 млн → додати CFO)
Завдання согласування — конкретна завдання конкретному користувачу: согласувати, ознайомитися, підписати, заповнити реквізити.
Движки BPM
Реалізовувати workflow-движок з нуля — довго. Зрілі рішення:
Camunda BPM — Java, BPMN 2.0-сумісний движок. REST API дозволяє вбудувати в будь-який стек. Visio-подібний редактор маршрутів у браузері (Camunda Modeler). Підтримує DMN для бізнес-правил.
Activiti — легкий Java-движок, вбудований у Spring Boot.
Temporal.io — code-first workflow engine (Go/Java/TS). Надійний при збоях, підтримує довгоживучі процеси (години, дні, місяці).
Приклад визначення процесу в BPMN (спрощено):
<process id="invoice-approval">
<startEvent id="start"/>
<userTask id="manager-review" name="Согласування керівника"
camunda:assignee="${document.manager_id}"/>
<exclusiveGateway id="gateway-1"/>
<userTask id="cfo-review" name="Согласування CFO"
camunda:assignee="[email protected]"/>
<!-- ... -->
</process>
Версіонування документів
Кожна редакція документа зберігається окремо:
CREATE TABLE document_versions (
id, document_id, version_number INT,
file_path TEXT, file_hash VARCHAR(64),
author_id, created_at,
change_summary TEXT
);
Поточна версія — запис з максимальним version_number. При редагуванні створюється нова запис, старі не видаляються. Diff між версіями — для текстових документів через diff-match-patch, для DOCX — через LibreOffice conversion + diff.
Електронна підпис
Інтеграція з провайдерами ЕП:
- КриптоПро — ГОСТ-алгоритми, вимагає встановлення плагіна або десктопного клієнта
- Діадок (Контур) — хмарна ЕП, API для вбудованої підписи
- ЕЦП від Госуслуг — через ЕСІА
Для внутрішнього документообігу достатньо "простої" електронної підписи: підтвердження особистості через аутентифікацію + фіксація hash документа та timestamp.
Полнотекстовий пошук
Пошук по тексту документів (включаючи вміст PDF, DOCX, XLSX):
- Вилучення тексту: Apache Tika або LibreOffice headless
- Індексація: Elasticsearch з кирилічною морфологією (плагін
analysis-morphology) - Пошук по метаданим + full-text з вагами
Інтеграція з 1С
Двостороння синхронізація:
- 1С → ECM: створення документів (рахунки, УПД, акти) автоматично з'являються в ECM зі статусом "потребує согласування"
- ECM → 1С: після согласування документ позначається в 1С як "согласований", проводки створюються автоматично
Реалізується через HTTP-сервіси 1С або COM-об'єкт (для on-premise).
Архів і зберігання
Законодавство вимагає зберігати первинні документи 5 років, кадрові — 75 років. Архів повинен:
- Бути незмінюваним (WORM — Write Once Read Many)
- Підтримувати швидкий пошук
- Дозволяти експорт для податкової перевірки
Об'єктне сховище (S3/MinIO) з Immutable Object Lock для WORM-режиму.
Терміни
MVP (створення документів, прості послідовні маршрути, версіонування, пошук): 3–5 місяців. Повна ECM/BPM система з Camunda, ЕП, інтеграцією 1С, полнотекстовим пошуком і архівом: 6–12 місяців.







