惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
腾讯CDC
L
LangChain Blog
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
量子位
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
B
Blog RSS Feed
B
Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
S
Schneier on Security
Project Zero
Project Zero
宝玉的分享
宝玉的分享
美团技术团队
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
T
Threatpost
A
Arctic Wolf
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
Recorded Future
Recorded Future
C
CERT Recently Published Vulnerability Notes
T
Threat Research - Cisco Blogs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
SecWiki News
SecWiki News
H
Hacker News: Front Page
AWS News Blog
AWS News Blog
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
C
Check Point Blog
L
Lohrmann on Cybersecurity
F
Full Disclosure
TaoSecurity Blog
TaoSecurity Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
Martin Fowler
Martin Fowler

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Процессы: чего до сих пор не хватало обычным BPM (Часть 2)
stas_makarov · 2026-05-21 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение9 мин

Охват и читатели121

В первой части мы обсуждали оргмодель — как она устроена и какая от нее польза.
В этой части поговорим про процессы.

Откуда в организациях процессы

Едва ли в наши дни кого-то стоит убеждать в пользе процессного подхода к управлению. Также, растет понимание, что процессы нарисованные на бумаге, проблем не решают — нужны автоматизированные процессы. Примем это как аксиому.

Организации это давно поняли, и сегодня практически все находятся на какой-то фазе автоматизации своих процессов, но делают это по-разному.

Процессы проникают в корпоративный ландшафт различными путями:

  • Они могут быть зашиты в ERP/CRM и другие корпоративные системы.

  • Вместе с лоукод-платформой, где они являются неотъемлемой частью функциональности.

  • Через BPM-движки, которые интегрируется в различные приложения или выступают внешним оркестратором.

Первый и второй вариант рассматривать не будем, эти платформы обычно закрыты и без вендора там ничего особо не сделаешь. Что выросло, то выросло.

А вот третий вариант оставляет достаточно гибкости, чтобы что-то изменить.
Реализуется он обычно так:

  • BPMN-модель деплоится в BPM-движок

  • Происходит запуск экземпляров процессов (вручную или автоматически)

  • Выполняются сервисные и пользовательские задачи

  • По окончании — запись в историю

Вроде бы все окей, все привыкли так делать, но чувствуется, что чего-то не хватает. А все от того, что ощущается разрыв этого сугубо инженерного подхода с процессной методологией.

Процесс как сущность

Для бизнеса процесс это не просто BPMN-модель, задеплоенная на сервер. Бизнесу надо знать цель и смысл существования этого процесса, кому он принадлежит, каков его жизненный цикл, кто в нем участвует.

Иначе говоря, бизнесу нужен репозиторий процессов — это централизованное хранилище, где живут не только схемы BPMN, но и все, что нужно, чтобы процесс был управляемым: версии моделей, регламенты, роли, метрики, связи с ИТ-системами и история изменений. Его главная задача — сделать процессы единым источником истины, чтобы бизнес, аналитики, разработчики и владельцы процессов работали с одной актуальной картиной. Например, в качестве такого репозитория может выступать Stornbpmn или Business Studio.

Но это все для аналитиков. А как быть на стадии исполнения, в проде? — Пробрасывать сюда все данные из аналитического репозитория было бы избыточно, но какой-то порядок навести все-таки стоит, чтобы видеть процесс как сущность, а не только как диаграмму.

С этой целью был реализован объект Business Process, который несет дополнительные атрибуты, позволяющие организовать удобную навигацию по множеству процессов и задать бизнес-контекст — область действия (scope), какой организации процесс принадлежит, к какой категории относится. Если потребуется, можно добавить более детальную бизнес-классификацию, но на первом этапе и этого достаточно.

Также, поддерживается версионность BPMN-моделей, у одого процессам может быть несколько диаграмм. Кроме того, теперь процесс знает, на каком конкретно BPM-сервере он живет и какая задеплоенная версия считается актуальной. Потому что в реальном ландшафте у вас может быть более десятка процессных серверов.

Таким образом, мы получаем не только process management, но в перспективе и process governance, чтобы поддержать регламент работы с процессами и их жизненный цикл.

Модели процесса

А что насчет собственно BPMN-модели? И как быть с их версионностью? — Вопрос не простой.

С одной стороны, BPM-движок сам считает версии, автоматически увеличивая номер при каждом деплое. То есть даже малейшая правка влечет за собой создание новой версии.

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

По-любому получается, что к объекту Business Process может относится множество версий BPMN-моделей. Но какую из них считать актуальной?

Чтобы разрулить эту ситуацию, пришлось добавить жизненный цикл модели от черновика до архива — при этом считать актуальной только одну версию. Чтобы не возникло рассинхрона с тоем что задеплоено на сервер, в атрибутах опубликованной версии сохраняется deploymentId. Теперь если кто-то задеплоит новую версию помимо системы напрямую в движок, мы это сразу увидим.

Процессные роли

Процессные роли обычно трактуются сугубо утилитарно — какие задачи та или иная роль исполняет (что часто моделируется дорожками).

При этом за кадром остаются роли, которые непосредственно в процессе не участвуют, но имеют к нему самое непосредственное отношение — владелец, инициатор, наблюдатель, администратор, аналитик и так далее. Пока вы оперируете процессом только как BPMN-моделью, эти роли показать невозможно.

Однако, мы ведь вышли за рамки этого ограничения, да? — Теперь у нас есть объект Business Process, и, соответственно, процессные роли привязываются к нему.

Также, стоит вспомнить, что в фундаменте у нас лежит оргмодель — значит, мы можем назначать сотрудников на процессные роли через организационный контекст.

И, аналогично тому, как мы связываем элементы оргмодели с ролями безопасности, можно сделать это и для процессных ролей.

Таким образом, мы получим конкретного исполнителя из оргмодели и дадим ему необходимые полномочия через процессную роль.

Механизм назначений

Что делать, когда подходящих кандидатов много, а исполнитель нужен только один?

Например, у вас пять менеджеров по продажам и нужно кому-то дать в работу запрос от нового клиента.

BPM-движки предлагают простое решение — давайте кинем задачу на всех кандидатов и пусть кто-то ее заберет.

При таком подходе возможны две конфликтные ситуации:

  • Нездоровая конукуренция — когда от этого зависит зарплата сотрудников и каждый старается ухватить новый заказ первым.

  • Игнор — когда зарплата от количества задач не зависит и никто не торопится взять на себя еще одну.

Чтобы такого избежать, можно использовать какой-то алгоритм, который возьмет на себя функцию распределения задач — и этих алгоритмов может быть несколько.

Работает это так:

  • Через оргконтекст система резолвит потенциальных исполнителей

  • Дополнительно подключается один из методов, который уже определяет кто именно будет назначен на задачу

  • На выходе мы получаем username, который и нужен BPM-движку для корректной работы

Небольшое пояснение по методам:

  • Все — когда нам все-таки нужна групповая задача или мульти-инстанс

  • Руководитель — это понятно, руководитель подразделения

  • Единственный — когда по смыслу должности на нее может быть только одно действующее назначение, например, генеральный директор; добавлено для дополнительного контроля

  • Случайный — тоже понятно

  • Round robin — назначение по кругу; но это не так просто, как кажется, логику надо тщательно прорабатывать

  • Наименее загруженный — в первом приближении тот, у кого меньше активных задач; но тоже можно усовершенствовать, например, учитывать суммарную длительность задач

Помните DSL-правила из первой части? Для процессов добавляется еще метод назначения, а в остальном все так же.

Например, рандомный инженер со знанием Java:

select:
  organization: ACME
  position: JAVA_DEV
  skills:
    - JAVA
assign: RANDOM
sourceSystem: LOCAL

Пусть неявное станет явным: контракт процесса

Что говорит нам теория? — В стандарте ISO 9001 процесс прямо определяется как совокупность взаимосвязанных действий, преобразующих входы в выходы, это базовый принцип всего процессного управления.

Но как из BPMN-модели понять, что процесс получает на вход и что отдает на выходе? — Никак. Модель начинается со стартового события и заканчивается конечным событием, насчет данных или состояний объектов ничего не говорится, это надо выяснять отдельно.

То есть, налицо разрыв теории с практикой. Вроде бы очевидная вещь — контракт процесса должен быть определен явно. Однако, ни одна из известных BPM и лоукод-систем этого не делают.

В классических движках Camunda и Flowable этого нет от слова совсем, можно только неявно определить через стартовые формы для входных данных, а выходные пытаться понять по конечным событиям, коих может быть множество.

Чуть ближе к этому Appian, где можно зайти в процесс и увидеть его data model, иногда даже интерфейс (SAIL), где видны входные параметры и Pega Platform — там есть структура кейса и данные, которые можно воспринимать как вход/выход. Но и там это не оформлено как явный контракт процесса.

В BPM-мире вход/выход процесса почти везде существуют неявно, через переменные и формы; явное, визуально выделенное представление “это вход, это выход” — это отсутствующая концепция, никак не стандартная фича.

Почему ситуация такова? — Я полагаю, что это из-за магии нотации BPMN. Разработчики продуктов следуют букве стандарта, который выглядит безупречным и совершенным. (По крайней мере, не нашего ума дело дорабатывать нотацию, думают они.)

Максимум, на что можно рассчитывать, — это что грамотный аналитик опишет входы и выходы в документации процесса. Но на этапе выполнения этого никто не увидит: ни люди, ни другие процессы, ни агенты.

Почему это проблема? — Проблема в том, что без явно заданных входа и выхода процесс теряет границы и контракт, а значит становится трудно управляемым.

Во-первых, непонятно, что именно процесс принимает и что гарантирует на выходе — каждая система и каждый разработчик трактуют это по-своему, и возникает рассинхрон.

Во-вторых, ломается композиция: если нет чёткого выхода, его нельзя надежно использовать как вход следующего процесса, цепочки становятся хрупкими.

В-третьих, страдает эволюция — любое изменение переменных может незаметно “сломать” потребителей, потому что нет формализованного контракта и версионирования.

И наконец, это бьёт по управляемости: невозможно нормально измерять, тестировать и обсуждать процесс на уровне бизнеса, потому что вместо понятной трансформации “было → стало” у нас есть просто некие исторические данные, которые еще надо как-то интепретировать.

Возьмем процесс выдачи кредитных карт. Только это не продакшн-процесс, а имитационная модель со множеством параметров, определяющих ее поведение. Например, вероятности событий и принятия решений. Также, есть и "настоящие" бизнес-данные — информация о заемщике, запрашиваемая сумма кредита и так далее.

В отсутствие контракта вы видите просто несколько десятков переменных и не понимаете, что из них относится к управлению поведением модели, а что к бизнесу. Без этого понимания никакая аналитика не возможна.

Для практически любого процесса уровня энтерпрайз картина будет еще сложнее. А еще учтите, что процессы могут быть иерархическими, вызывать call activity... Явное определение входов и выходов могло бы снять часть этой головной боли.

Входные и выходные схемы

Строго говоря, контракт процесса это не только про входы и выходы. Это и триггеры, которые его запускают, это и SLA и многое другое.

Но надо же с чего-то начинать! Наиболее практичным шагом будет реализация входов и выходов процесса в виде JSON-схем. Такой формат приемлем для людей и идеален для машинной обработки.

Входные и выходные JSON-схемы могут генериться полуавтоматически:

  • Для входной схемы из BPMN-модели считываются все стартовые события процесса и ассоциированные с ним переменные или поля формы.

  • Для выходной — автоматически подтягиваются только описания конечных событий, а переменные надо добавить вручную (поскольку в BPMN конечные события свойств не имеют и переменные к ним не привяжешь).

Вы также можете добавить в схемы любые произвольные свойства — но тогда на вас будет и их интерпретация.

Для аналитика и разработчика такие схемы дают четкое понимание, что процесс должен получить на старте и что использовать как результат на финише — причем в зависимости от того, по какому пути процесс завершился. Но особенно в восторге от этих схем должны быть AI-агенты, потому что JSON это для них практически родной язык.

Для примера возьмем простейший тестовый процесс, который выполняет суммирование двух чисел.

Его выходные и выходные схемы будут выглядеть так:

Входная схема полностью создалась автоматически из BPMN-модели, выходную пришлось немного доработать руками — потому что в BPMN нет возможности привязать переменные к конечным событиям.

Результат процесса

"Что остается от сказки потом, после того, как ее рассказали?" — так же и от процесса, только воспоминание, что он был. Да россыпь значений переменных в истории, которые еще надо собрать.

Так было раньше, но теперь у нас есть входные и выходные схемы. Далее логично сделать следующий шаг — заполнить эти схемы реальными значениями.

Кроме того, для каждого экземпляра процесса создается отдельный объект Process Result — в него записываются реальные входные и выходные данные согласно JSON-схемам. Теперь вам не надо копаться в сырых логах BPM-движка, чтобы узнать, что получил на вход и отдал на выходе каждый запущенный процесс.

Например вот так:

А если какие-то результаты процесса нельзя просто взять и положить в переменную, то можно сохранить их в файл и прикрепить к результирующему объекту.

Таким образом, вы получаете полную картину того, как процесс отработал, причем без необходимости строить сложные запросы к истории в BPM-движке.

Кроме того, вовсе необязательно, что все, что процесс сделал отражается в его переменных. Например, в ходе процесса изменились статусы каких-то сущностей. Из стандартной истории вы это вообще никак не поймете. Но это можно явно прописать в результаты.

Собираем все вместе

Итак, процесс — это гораздо больше, чем BPMN-модель. Это бизнес-объект, погруженный в организационный контекст, для которого определены входная и выходная схемы и у которого может быть множество моделей, причем только одна из них считается актуальной.

Каждый экземпляр процесса получает входные данные согласно своей input-схеме, а по его окончании на основании output-схемы создается объект Process Result с реальными данными.

Тут есть еще один интересный нюанс. Как известно, контекст процесса надо держать очень компактным, чтобы не нагружать движок и чтобы история не слишком раздувалась. Но бывает, что в ходе процесса создаются большие документы, особенно если это графика или видео. Да и текст может быть не маленьким.

Ничто нам не мешает сохранять их сразу в Process Result — как JSON-поля или в виде attachment'ов. При этом и контекст не страдает, и история не растет.

Начало и продолжение:

Часть 1. Оргмодель, процессы и агенты

Часть 3. Агенты выходят на работу

Подпишитесь на канал Agentic Enterprise — про жизнь агентов в кровавом энтерпрайзе

Приходите на вебинар Агенты и процессы в корпоративном контуре