BPMS в картинках
В 2011 году идеология BPMS (Business Process Management System) стала обращать на себя больше внимания. Я чаще слышал и читал про это. Графическая нотация BPMN для описания бизнес-процессов вообще вошла в практику не только у меня, но и у некоторых коллег.
Оказалось, что BPMS это уже не так дорого как 3 года назад. К пример, в 2009 году Lombardi нам предлагали за 2.5 млн. рублей (только за ПО) на 50 раб.мест, а сейчас Bonita стоит 0 за ПО и 10-15 тыс. $/ год (300-450 т.р./ год) за подписку (опционально). Созрел целый ряд бесплатных систем. ;-)
Для тех кто не знает ни одной BPM системы, предлагаю коллекцию ссылок:
- http://www.oracle.com/technetwork/middleware/bpm/overview/index.html (дорого)
- http://www.jboss.org/jbpm (бесплатно*)
- http://www.bizagi.com (не дорого)
- http://www.activiti.org (бесплатно*)
- http://bariumlive.com (SaaS)
- http://www.bonitasoft.com (бесплатно*)
* - разумеется есть коммерческий вариант.
В этом году я решил сделать пилотный проект на BPMS, получить proof-of-conception для идеологии BPMS на собственном опыте. Нашел терпеливого заказчика на Bonita Open Solution, позже расскажу о результатах.
А сейчас, для тех кто не знает что такое BPMS, я дам вдохновение и покажу сильные места Bonita Open Solution и BPMS вообще.
Рабочее пространство бизнес-аналитика и программиста
Слева находится панель с элементами, Вы просто вытаскиваете их направо в рабочее пространство.

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

BPMN
Это графический способ описания бизнес-процессов. BPMN — Business Process Modeling Notation.
Как исполняется BPMN?
У каждого из участников процесса (бухгалтерия, ЦОВ, отдел технической поддержки) есть своя дорожка на схеме. Чтобы изменить роль, которая должна выполнять задачу, достаточно перетащить эту задачу с одной дорожки на другую. В одних системах за дорожками стоят сущности, называемые действующими лицами (actors); в других, дорожки называются зонами ответственности, а за ними закрепляется алгоритм выбора исполнителя. Как бы это не называлось, размещение задачи наглядно показывает, кто её выполняет.
В примере показан бизнес-процесс "Перерасчет в связи с технической неисправностью". Он состоит из трех задач: а) подтверждение простоя (отдел тех.поддержки), б) перерасчет (бухгалтерия) и в) уведомление о перерасчете (ЦОВ), в случае удовлетворения абонента, или уведомление об отказе (ЦОВ), в случае отказа.
Апелляция является вариантом конечного события, если при уведомлении абонент её потребовал (и она запускает другой процесс — процесс апелляции), иначе БП завершается обычным красным кружком.
Кружок с часами является промежуточным событием (ждать 2 часа) которого система будет ожидать после попытки уведомления о перерасчете, если до абонента не дозвонились.
Почему нужно описывать бизнес-процессы в графическом виде?
Во-первых, пока я писал "Что это?" я устал больше, чем пока рисовал этот процесс, т.к. количество букв, которые мне пришлось ввести было больше. ;-)
Во-вторых, такое описание бизнес-процесса аналитиком идет на автоматизацию программисту сразу. Он открывает шаг и создает форму или действие во внешней системе. Во всяком случае, так задумано.
Как программист видит форму?
Ниже показана форма шага "Перерасчет", выполняемого бухгалтерией.

Каждый шаг автоматизируется независимо — никаких изменений в уже сделанном. Пожалуй, это ключевая особенность автоматизации с использованием BPMS. В результате:
- Экранные формы объектов прикладных систем не обрастают логикой отображения, специфичной для шага выполнения.
- Никаких разграничений прав, т.к. форму увидит только тот исполнитель, который будет этот шаг выполнять.
- Никаких лишних полей.
В случае автоматизации на уровне human-task (без интеграции система-система) уровень программирования понижается практически до нуля.
Как пользователь видит форму?
Показана та же форма "Перерасчет", как видит её бухгалтер.

Исполнителю мы выводим всю нужную информацию для выполнения данного шага на один экран. Никаких лишних полей.
Пользователю нужно выполнить инструкцию с экрана, заполнить обязательные поля, нажать кнопку.
Изменения в бизнес-процессах теперь не меняют рабочие инструкции
Раньше
Если решили, к примеру, что перерасчет теперь будет делать не бухгалтерия, а абонентский отдел, учитывая, что шаг требует определенной работы во внешней системе, надо по меньшей мере информировать девочек из абонентского, что в случае такой заявки нужно в биллинге денег на счет вернуть таким-то образом, затем сумму в заявку вписать и закрыть. ЦОВ-то должен сумму перерасчета из заявки читать, иначе где он её найдет? А значит у одних инструкция "куда вписать", у других "где прочитать". В результате, изменение бизнес-процесса это изменение инструкций.
Нужно понимать, что схемы и описания бизнес-процессов на общем уровне это не рабочие инструкции и наоборот, значит бизнес-аналитик через руководителей на местах должен поддерживать и то и другое в согласованном состоянии, что добавляет ряд процедур по изменению бизнес-процессов.. если мы автоматизируемся как раньше.
Теперь
BPMS объединяет в себе документацию по бизнес-процессу и реализацию, что решает проблему согласованности автоматически. Все, что нам нужно от исполнителя, мы включаем не в рабочую инструкцию, а в сообщение на форме.
Вот так, лучезарно, BPMS должна сократить стоимость внедрения изменений.
Ещё несколько экранов
Как пользователь видит список задач?
Всё просто — ящик с папкой "Входящие", где лежат все невыполненные задачи по всем бизнес-процессам. Вид заголовка задачи настраивается.

Задачи, назначенные группе пользователей (отделу) находятся во входящих у всех членов группы, пока один из них не начнет её выполнять.
Для пользователей, которые редко "сидят" в BPMS, система может отправить e-mail со ссылкой на поступившую задачу — по ссылке сразу откроется форма шага. Это так же полезно, если какие-то шаги выполняют внешние исполнители.
Как администратор видит выполняющиеся процессы?
Администратор видит все находящиеся на выполнении шаги всех бизнес-процессов и может открыть любой и посмотреть его текущую форму, а так же историю с датами выполнения каждого предыдущего шага.

Нажав на запись истории, админ видит состояния всех переменных процесса на момент выполнения выбранного шага:

Как происходит работа с данными?
Сведения, которые должны быть переданы по процессу, объявляются на уровне процесса. Данные БП в реляционном виде не хранятся, если специально что-нибудь не сделать. Их можно сохранить или извлечь как до шага, так после шага, а так же в отдельном шаге, выполнив нужное количество запросов к SQL, веб-сервисам и т.д. внешней системы или базы данных.
Важно, что в результате работы процесса, все данные в реляционном виде должны попасть в прикладные системы. BPMS работает с ними, извлекая или сохраняя их в рамках того или иного шага.
Управление данными не является задачей BPMS — она не хранит и не редактирует справочники, не накапливает данные вида "кол-во принятых подключений", "кол-во выполненных перерасчетов" и т.п. Из неё можно извлечь только информацию в разрезе бизнес-процесса — "сколько раз выполнялся процесс", "сколько раз выполнялся шаг", "сколько было задач у исполнителя", "какой самый долгий шаг в процессе" — то, что называется Business Activity Monitoring (далее BAM). Но не всегда "кол-во принятых подключений" = "сколько раз выполнялся процесс подключения", т.к. только полностью оформленное подключение считается принятым.
Поэтому даже самое простое внедрение BPMS, это интеграция. Интеграция делается в контексте каждого шага.
К примеру, если в процессе подключения ЦОВ должен помочь выбрать абоненту тарифный план, то в экранной форме у ЦОВ должен быть справочник тарифов полученный, например, SQL запросом из биллинговой системы. А если принятое подключение должно быть зафиксировано в реляционном виде с определенными сведениями, тогда отправьте данные в соответствующую систему.
Итоги
Плюс BPMS в том, что результаты описания бизнес-процесса аналитиком в графическом виде идут на автоматизацию — нет разрыва между работой аналитика и программиста.
В дополнение этого плюса, нет разницы между "человеческой" и автоматизированной задачей. Описанный аналитиком процесс изначально может состоять только из human-task, которые в дальнейшем будут обращены в service-task и человек будет исключен. Выявлению задач наиболее нуждающихся в автоматизации помогает BAM. В результате, программисты всегда работают над автоматизацией со стороны тех задач, автоматизация которых даст наибольшую отдачу.
Внедрение BPMS сопровождается моделированием данных, которые описывают бизнес-объекты, но в простом случае можно обойтись без кода для них.
Смотри так же: BPMS в цифрах, Process-driven CRM или BPMS? и Bonita Open Solution: типовые решения.