Подготовлено: по материалам зарубежных сайтов
Мы уже писали о языке реализации бизнес-процессов для Web-сервисов (Бизнес-процессы и XML). Предлагаемая вниманию читателей статья посвящена другому языку - языку моделирования бизнес-процессов.
В 2000 г. в Калифорнии была основана некоммерческая организация Business Process Management Initiative (Инициатива по управлению бизнес-процессами, сокр. BPMI). Она поставила своей целью разработку и продвижение открытых, полных и бесплатных стандартов на основе языка XML для поддержки и развития систем BPM в бизнесе (Business Process Management - управление бизнес-процессами).
В марте 2001 г. эта организация опубликовала язык моделирования бизнес-процессов (Business Process Modeling Language, сокр. BPML), в ноябре 2002 г. - спецификацию для графического представления моделирования бизнес-процессов (Business Process Modeling Notation, сокр. BPMN). Последняя версия BPMN-спецификации была выпущена в мае 2004 г. Все это доступно для загрузки на сайте BPMI (http://www.bpmi.org/). Вскоре ожидается появление еще одного продукта - языка запросов для бизнес-процессов (Business Process Query Language, сокр. BPQL).
Что такое язык BPML
Язык BPML дополняет язык реализации бизнес-процессов (Business Process Execution Language, сокр. BPEL). BPML может использоваться для определения детальных бизнес-процессов, исполняемых при вызове каждого web-сервиса. BPML преобразует ("мэппирует") бизнес-операции в обменные сообщения. Этот язык может использоваться для определения корпоративных бизнес-процессов, комплексных web-сервисов и многостороннего сотрудничества. В разработке BPML-спецификаций участвует целый ряд организаций: CSC, Intalio, SAP, Sun, SeeBeyond, Versata и др.
Как следует из BPML-спецификаций, назначение BPML заключается в следующем: "BPML - это язык XML, предназначенный для определения формальной модели, выражающей выполнимые процессы, которые описывают все аспекты корпоративных бизнес-процессов. BPML определяет операции разного уровня сложности, транзакции и компенсации, управление данными, параллелизм, обработку исключений и операционную семантику. Грамматика BPML оформляется в виде XML-схемы, что обеспечивает постоянство определений и их обмен между гетерогенными системами и инструментами моделирования".
BPML - это богатый и зрелый язык, с помощью которого можно описывать как простые, так и сложные бизнес-процессы. Поскольку BPML и BPEL - это языки с блочной структурой, то у них одинаковый набор выражений и похожий синтаксис. По сравнению с операциями, которые поддерживает BPEL, возможности BPML шире. Синтаксис BPML поддерживает операции и их типы, процессы, свойства, сигналы, расписания и нестандартные ситуации.
Простые типы операций BPML
Action: выполняет или вызывает выполнение операции, включающей обмен входящими и исходящими сообщениями.
Assign: присваивает новое значение показателю.
Call: запускает процесс и ждет его завершения.
Compensate: инициирует компенсацию для указанных процессов.
Delay: выражает промежуток времени.
Empty: ничего не делает.
Fault: выдает сообщение об ошибке в текущем контексте.
Raise: активизирует сигнал.
Spawn: запускает процесс без ожидания его завершения.
Synch: синхронизирует по сигналу.
Сложные типы операций BPML
All: выполняет операции параллельно.
Choice: выполняет операции из одного из составных комплектов, выбранного в ответ на событие.
Foreach: однократно выполняет операции для каждого пункта из списка.
Sequence: выполняет операции в последовательном порядке.
Switch: выполняет операции из одного из составных комплектов, выбранного на основе истинного значения условия.
Until: выполняет операции один или более раз на основе истинного значения условия.
While: не выполняет операции или выполняет их один или более раз на основе истинного значения условия.
Сложная операция - это операция, включающая в себя одну или более дочерних операций. Она устанавливает контекст для выполнения действий и направляет это выполнение. Сложные операции определяют иерархическую организацию. Она может быть простой - например, повторяющееся выполнение одной и той же операции, или более сложной - например, установление вложенного контекста для выполнения множественных операций. BPML также поддерживает и другие формы организации, в том числе циклические графы и рекурсивные операции. Сложные операции используются в тех случаях, когда требуется иерархическая организация, в частности, для установления нового контекста, необходимого при выполнении дочерних операций.
Простые операции - это операции, которые могут привести к выполнению множественных операций, в частности такие, как action, call, compensate и spawn. Но сама простая операция не определяет контекст для выполнения других операций. Приведенный ниже краткий обзор языка дает более детальный анализ разницы между сложными и простыми операциями и показывает, что BPML включает все логические конструкции строгого языка программирования.
Сложная операция, включающая комплекты множественных операций, должна выбирать, какой из них использовать. Для этого применяется несколько стандартных логических конструкций. Операция choice ждет события, которое должно быть инициировано, а затем выбирает комплект операций, связанный с обработчиком этого события. Операция switch оценивает условия и выбирает комплект операций, связанный с тем условием, значение которого является истинным. Все остальные сложные операции, определенные в спецификации BPML, включают только один комплект операций, поэтому им не приходится принимать подобные решения.
Сложная операция также определяет, сколько раз должны быть выполнены операции из общего набора операций. Для этого используются следующие стандартные логические конструкции: операция until - повторяет выполнение операций, пока значение условия не станет истинным; операция while - повторяет выполнение операций, пока значение условия остается истинным; и операция foreach - выполняет операции однократно для каждого пункта списка. Все остальные названные выше сложные операции выполняют действия из комплекта операций однократно.
Помимо этого, сложная операция определяет порядок выполнения других операций. Операция sequence обеспечивает выполнение всех действий из комплекта операций в последовательном порядке. Операция all обеспечивает выполнение всех действий из комплекта операций одновременно. Остальные сложные операции языка BPML обеспечивают выполнение операций в последовательном порядке.
Сложная операция считается завершенной, когда закончено выполнение всех действий из комплекта операций. Это включает все действия, перечисленные в списке операций, и все процессы, запускаемые из определения, сделанного в контексте комплекта операций. Вложенные процессы и процессы обработки нестандартных ситуаций рассматриваются как действия из комплекта операций.
Простые операции прерывают выполнение (abort) или выдают сообщение об ошибке (fault), если их завершению препятствует неожиданная ошибка. Сложные операции прерываются и разрываются, если одно из действий, входящих в их состав, разрывается таким образом, что его восстановление невозможно.
Обладая средствами дополнительной поддержки вложенных процессов и другого синтаксиса, BPML может считаться расширенным вариантом языка BPEL. В тех случаях, когда эти языки используются совместно, сквозной обзор показывает роль каждого бизнес-процесса в общей картине и то, какие бизнес-операции он выполняет.
BPEL и BPML - это похожие подходы к решению одной и той же проблемы: определение логики процессов в языке XML таким образом, чтобы результат мог использоваться как исполняемый код программными продуктами на основе BPM. Это развивающиеся языки. Все эти продукты являются решениями одной и той же проблемы, их спецификации и языки концептуально похожи, поэтому со временем они, возможно, будут объединены в единую спецификацию.
Список литературы
Клайв Финкелстайн (Clive Finkelstein). "Корпорация: языки управления бизнес-процессами. BPML" (The Enterprise: Business Process Management Languages Part 2: BPML).
Сайт организации Business Process Management Initiative: http://www.bpmi.org/.