Разработка системы электронного документооборота (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-like редактор маршрутов в браузере (Camunda Modeler). Поддерживает DMN для бизнес-правил.
Activiti — лёгкий Java-движок, embedded в 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С как «согласован», проводки создаются автоматически
Реализуется через 1С HTTP-сервисы или 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 месяцев.







