Бизнес-процессы и web-сервисы
Отдельным действиям бизнес-процесса могут соответствовать определенные программные компоненты, в том числе и распределенные в сети. Тогда бизнес-процесс оказывается общим алгоритмом, связывающим их в единое целое и предоставляющим клиентам некоторый компьютеризированный сервис. Например, сервис по бронированию гостиниц через Интернет может включать в себя поиск отеля по критериям, сформулированным клиентом, по разным сайтам отелей.
С бизнес-процессами тесно связны web-сервисы. Так, язык BPMN имеет исполняемые проекции в язык BEPL, а последний описывает бизнес-процессы как набор взаимодействующих web-сервисов.
Web-сервисом, называется программная система, идентифицируемая строкой URI, чьи открытые интерфейсы и привязки определены и описаны посредством языка XML. Ее описание может быть найдено другими программными системами, которые могут взаимодействовать с ней посредством сообщений, описанных на XML и передаваемых через Интернет-протоколы. URI-строка (Uniform Resource Indicator) состоит из унифицированного указателя информационного ресурса - URL (Uniform Resource Locator) - и унифицированного имени ресурса - URN (Uniform Resource Name). URN - это имя, которое не ссылается на физический ресурс.
Вокруг web-сервисов существует большое количество стандартов, и в целом мировое сообщество здесь движется к созданию автоматизированных и интегрированных через Интернет бизнес-процессов, реализующих многочисленные B2B (Business to Business) связи. Однако в настоящий момент существует большое количество параллельных стандартов, крупные производители, пользуясь этой парадигмой, продвигают свои системы и платформы и т. д. Одним словом, реализация этой идеи - пока дело будущего.
Обзор BPMN
Далее будет рассмотрен известный язык визуального моделирования бизнес-процессов - BPMN (Business Process Management Notation). Исходно он был стандартизован международным комитетом BPMI (Business Process Modeling Initiative, http://www.bpmi.org), первая версия стандарта вышла в 2004 году. Позднее этот стандарт перешел под эгиду комитета OMG и в 2006 году была выпущена первая OMG-версия этого стандарта .
Процесс с точки зрения бизнеса - это отдельная деятельность (часть бизнес-процесса), выполняемая компанией или организацией. В терминологии BPMN процесс является сложным действием, которое, в свою очередь, состоит из действий, переходов между ними и т. д. Процесс можно вызывать, приостанавливать, прерывать, также он может завершаться сам, процессы могут выполняться параллельно и обмениваться сообщениями.
Итак, процесс в BPMN может состоять из следующих конструкций:
- сущности (flows objects):
- действие (activity);
- порт (gateway);
- событие (event);
- связи (connecting objects) - соединяют разные действия и данные в единый поток исполнения, могут быть следующих видов:
- поток исполнения (sequence flow) - переход от одного действия к другому;
- поток сообщений (message flow) - обмен сообщениями между разными участниками процесса;
- ассоциация (association) - опредяет переход между действиями в особенных ситуациях (например, при возникновении исключений); может использоваться для "прикрепления" комментариев, данных и пр.;
- участники (swimlanes) процесса:
- внешние (pools);
- внутренние (lanes);
- артефакты (artifacts) процесса: данные (data object), группы (groups), комментарии (annotations).
Рассмотрим эти конструкции подробнее.
Действия (activities)
Процесс состоит из цепочки действий. Действия бывают следующих видов:
- задача –рис.11.4, а и б ;
- свернутый подпроцесс –рис.11.4, в и г ;
- развернутый подпроцесс –рис.11.4, д.
Рис. 11.4. Виды действий
Задача (task) - это атомарное действие процесса, неделимое на более элементарные части. На диаграмме задача изображается, как показано на рис.11.4a. На рис.11.4б приводится три вида задач, которые могут быть заданы в BPMN - циклическая задача, множественная задача и откат.
Циклическая задача (loop) - это задача, которая выполняется в цикле. В параметрах этой задачи можно указать, какой цикл имеется в виду - с пред- или постусловием, определить это условие и указать некоторые дополнительные свойства цикла.
Множественная задача (multiple instance) - это циклическая задача, которая выполняет в цикле целый набор однотипных задач. Текстовыми параметрами можно задать условие цикла, количество однотипных задач, а также порядок их выполнения (последовательный или параллельный).
Откат (compensation) - задача, которая вызывается в случае отмены другой задачи, например, клиент отказался от забронированного отеля - тогда система должна освободить соответствующую бронь; пример приводится на рис.11.5.
Рис. 11.5. Пример задачи с откатом
Кроме того, у задачи есть атрибут, который может иметь одно из следующих значений:
- Service – задача является сторонним программным сервисом, вызываемым WE (это значение имеют по умолчанию все задачи); например, вызывается Web-сервис, вычисляющий погоду, курс валюты или еще что-нибудь;
- Receive – задача является ожиданием внешнего для данного бизнес-процесса события, часто является началом бизнес-процесса;
- Send – задача является посылкой сообщения во внешний для данного бизнес-процесса контекст;
- User – задача выполняется человеком или группой, при этом используется некоторая сторонняя IT-технология или сервис; в параметрах можно задать как исполнителей так и используемую ими ПО;
- Script – задача является скриптом, который WE выполняет полностью автоматически;
- Manual – задача, которая выполняется без помощи WE или другой IT- технологии или сервиса, например, посредством личного общения менеджера с заказчиком;
- Reference – задача является ссылкой на другую задачу;
- None – значение данного атрибута не задано.
Эти значения не имеют графического представления и могут быть отражены, например, в имени задачи. Список этих атрибутов может быть расширен.
Еще одним типом действия является подпроцесс (subprocess). Он позволяет разбить сложные процессы на более мелкие. Подпроцессы бывают свернутые (collapsed subprocesses) - см.рис.11.4 в и г - и развернутые (expanded subprocesses) - см. рис.11.4д. Так же как и задачи, подпроцессы могут быть циклическими, множественными и с откатом, но кроме того, могут иметь еще маркер произвольный (ad hoc) - см.рис.11.4г. Он означает, что задачи и другие подпроцессы, входящие в состав данного, исполняются в произвольном порядке.
Свернутый подпроцесс является ссылкой на другую диаграмму, где он определяется в виде задач и, возможно, других подпроцессов.
Развернутый подпроцесс позволяет задать на диаграмме второй этаж (а, возможно, третий и т. д. - все зависит от того, насколько модель "глубока"). Это означает, что прямо на родительской диаграмме один или несколько процессов детализированы, как показано на рис.11.6.
Рис. 11.6. Пример развернутого подпроцесса
Связи (connecting objects)
На рис.11.7 показаны связи разного вида, существующие в BPMN:
- поток исполнения (sequence flow) –рис.11.7а; это самый распространенный вид связи, с его помощью обозначается порядок выполнения действий процесса;
- поток сообщений (message flow) –рис.11.7б; с помощью этой связи определяются сообщения, которыми обмениваются действия; многие сущности бизнес-процесса могут обмениваться сообщениями - конструкции pools друг с другом, задачи, подпроцессы и т. д.; сообщения являются способом общения между собой параллельно работающих сущностей, поэтому сущности могут обмениваться сообщениями, лишь находясь в разных pools ;
- ассоциации (association) - это способ отобразить различные вспомогательные связи в модели бизнес-процессов; на рис.11.7в представлена ассоциация отката; на рис.11.7г показана ассоциация исключения; другие виды ассоциаций представлены на рис.11.1, рис.11.2: с их помощью данные (data objects) соединяются с задачами и связями, а комментарии - с произвольными элементами диаграммы.
Рис. 11.7. Виды связей