Люди vs Машины: как не пропустить сообщение в BPNM 2.0
Как известно бизнес-аналитикам, реальное исполнение бизнес-процессов в компании штука сложная, ведь процессы взаимодействуют между собой. Для описания таких взаимодействий в BPMN 2.0 часто применяются сообщения. Типичное описание такого взаимодействия выглядит так:
Нотация BPMN 2.0 прямого ответа на этот вопрос не даёт, оставляя его решение на откуп разработчикам процессных движков. А у разработчиков вариантов немного: хранить сообщение или не хранить.
Если хранить, то последовательность выполнения задач во взаимодействующих процессах неважна — сообщение из «Процесса 1» дождётся «своего часа» в «Процессе 2». А если не хранить, то сообщение, пришедшее раньше, просто потеряется и экземпляр «Процесса 2» навсегда зависнет на «Задаче 23».
Если мы хотим изобразить процесс, который будет точно исполним на любом BPMS, то можно самостоятельно организовать хранилище информации о сообщениях в базе данных и периодически (желательно автоматически) узнавать, не пришло ли данное сообщение. Собственно, именно таким способом устроена обработка прерываний процессором, когда нам кажется, что компьютер мгновенно реагирует на мышь или клавиатуру (впрочем, не всегда мгновенно).
Но если вы разрабатываете описательный бизнес-процесс, который не предполагается «скармливать» процессному движку, а предполагается обсудить с исполнителями и изготовить на его основании регламент, то первый вариант сгодится лучше.
Во-первых, он более читаем, а во-вторых (и это главное отличие людей от компьютеров) — любой вменяемый человек обязательно проверит, не пришло ли сообщение раньше: получено ли письмо, пришла ли машина, поступал ли товар и т. п. Ему даже в голову не придёт остановить процесс, просто потому что письмо, на которое он должен ответить, пришло раньше, чем он закончил читать предыдущее.
Всем адекватных исполнителей бизнес-процесов и не забывайте оставлять комментарии!