
- •Конспект лекций модуля № 4 "Целевой курс" дисциплины "Распределенные программные системы и технологии" Тема 11. Системы параллельных вычислений
- •11.1.1. Общие понятия
- •11.1.2. Функции управления задачами
- •11.1.3. Взаимодействие задач
- •11.1.3.1 Типы взаимодействия
- •11.1.3.2 Выполнение взаимодействия
- •11.1.4. Синхронизация работы задач
- •11.2.1. Общие сведения
- •11.2.2. Основные понятия
- •11.2.3. Функции mpi
- •11.2.4. Функции управления процессами
- •11.2.3. Взаимодействие процессов
- •11.2.3.1 Прием/передача сообщений с блокировкой
- •11.2.3.2 Прием/передача сообщений без блокировки
- •11.2.3.3 Объединение запросов на взаимодействие
- •11.2.3.4 Совмещенные прием/передача сообщений
- •11.2.3.5 Коллективные взаимодействия процессов
- •12.1.2. Уровень заглушки и скелета
- •12.1.3. Уровень удаленных ссылок
- •12.1.4. Транспортный уровень
- •12.1.2. Взаимодействие
- •2.1.3 Идентификация объектов
- •2.1.4. Синхронизация вызовов методов
- •2.1.5. Безопасность
- •Тема 13. Сервисно-ориетированные архитектуры
- •13.1.1. Стандарт Web - сервисов
- •13.1.2. Взаимодействие Web-служб
- •13.1.3. Идентификация служб
- •13.1.5. Отказоустойчивость Web-служб
- •13.1.6. Безопасность Web-служб
- •13.2. Сервисно-ориентированная архитектура
- •13.2.1. Концепция soa
- •13.2.2. Характеристики соа
- •13.2.3. Компоненты соа
- •13.3. Оркестровка Web - сервисов
- •13.3.1. Основные понятия
- •13.3.2. Организация основанная на потоках работ
- •13.3.3. Язык bpel
- •Тема 14. Многоагентные системы
- •14.1. Определение агента
- •14.2. Применение агентов
- •14.2. Стандарты технологии мобильных агентов
- •14.2.1. Стандарт masif
- •14.2.2. Стандарт fipa
- •14.3. Языки взаимодействия агентов.
- •Тема 15. Распределенные базы данных
- •15.1. Определение Дэйта.
- •15.2. Свойства распределенных бд
- •15.2.1 Целостность данных
- •15.2.2 Прозрачность расположения
- •15.2.3 Обработка распределенных запросов
- •15.2.4 Межоперабельность
- •15.2.5 Технология тиражирования данных
- •15.2.6 Архитектура "клиент-сервер"
- •15.3.1 Концепция ejb
- •15.3.2. Компоненты ejb
- •15.3.3 Этапы создания ejb-проектов
- •Тема 16. Аппаратное обеспечение распределенных встроенных систем
- •16.1. Перспективы развития и области применения распределенных встроенных систем
- •16.2. Функциональная классификация микропроцессоров
- •16.2.1. Процессоры общего назначения и специализированные процессоры
- •16.2.2. Микроконтроллеры
- •16.2.3. Процессоры цифровой обработки сигналов
- •16.2.4. Конфигурируемые процессоры и перепрограммируемы системы на кристалле
- •16.2.5. Эволюция микропроцессоров
13.3.3. Язык bpel
В самом общем виде BPEL можно определить как язык, предназначенный для определения поведения бизнес-процессов с помощью Web-сервисов.
Действительно, с помощью языка WSDL можно осуществлять интеграцию в рамках лишь двух моделей - синхронного взаимодействия без сохранения состояния обмена и асинхронных взаимодействий с обменом некоррелированными сообщениями. Язык BPEL позволяет использовать Web-сервисы при последовательном одноранговом (peer-to-peer) обмене сообщениями - как синхронных, так и асинхронных, причем с сохранением состояния процесса, который может иметь большую продолжительность по времени и затрагивать более двух участников. В результате, эта спецификация значительно расширяет возможности использования Web-сервисов для интеграции систем, приложений, систем B2B.
Язык BPEL объединяет возможности языка:
WSFL (Web services flow language, Язык организации потоков Web-сервисов), разработанного компанией IBM,
XLANG, используемого в Microsoft BizTalk Server 2002.
BPEL включает WSFL для поддержки графоориентированных процессов, а XLANG - для поддержки структурных конструкций для процессов. Таким образом, BPEL предназначен для поддержки реализации бизнес-процессов любой сложности, а также для описания интерфейсов бизнес-процессов. Надо отметить, что язык BPEL "неразрывно связан" со спецификациями WS-Coordination ("Координация Web-сервисов") и WS-Transaction ("Транзакции Web-сервисов"), которые были определены для совместного использования с BPEL и разработаны для координации транзакций и процессов. Так, в спецификации WS-Coordination описываются стандартные механизмы создания и регистрации протоколов транзакций, которые координируют выполнение распределенных операций в среде Web-сервисов. С помощью спецификации WS-Transaction можно отслеживать успех или неудачу каждого отдельного скоординированного действия в бизнес-процессе, задавать гибкую модель транзакций, которая обеспечивает целостность и надежность операций в распределенной среде Web-сервисов и позволяет бизнес-процессам обрабатывать сбои в ходе выполнения.
Процесс, определенный в BPEL, как правило, состоит из двух больших секций:
секции деклараций
секции процессных действий, окруженных внешним элементом, который называется <process> и идентифицирует имя/название процесса.
Глобальные декларации. Как правило, первая секция процесса содержит глобальные декларации, в том числе те, которые определяют используемые Web-сервисы и называются <partnerLinks>, а также те, которые определяют используемые переменные и называются <variables>.
Также в этой секции объявляются другие высокоуровневые конструкции, такие, как обработчики глобальных ошибок (global error handlers), называемые <faultHandlers>, обработчики ошибок глобальных транзакций (global transaction failure handlers), называемые <compensationHandlers>.
Определение процесса. Вторая часть BPEL-процесса содержит логику процесса — шаги, которые будут предприняты, и Web-сервисы, которые будут использованы для выполнения полезной работы. Попросту говоря, есть два типа действий:
действия-примитивы процессов и данных (Primitive process and data activities) для вызовов и получения вызовов от Web-сервисов, такие как:
Вызов операции с помощью Web-сервиса (<invoke>).
Ожидание внешнего сообщения (<receive>).
Генерация ответа для входных/выходных данных (<reply>).
действия для управления процессом, такие как:
Ожидание в течение некоторого времени (<wait>).
Остановка реализации всего сервиса (<terminate)
действия для манипулирования данными, такие как:
Копирование данных между позициями (<assign>).
Структурированные действия для простого программного контроля над тем, какие шаги будут выполняться в бизнес-процессе, включая:
Индикация ошибки или сбойной ситуации (<throw>).
Отсутствие действий (<empty>).
Определение последовательности выполнения действий (<sequence>).
Ветвление с помощью оператора выбора (<switch>).
Определение цикла (<while>).
Выполнение одного из нескольких альтернативных маршрутов (<pick>).
Индикация того, что шаг должен быть выполнен параллельно (<flow>).
Индикация обработки ошибочной логики с помощью <throw> и <catch>.
Пример. На простеньком бизнес-процессе показжем как определяется процентная ставка (interest rate) возможного заемщика (loan customer), когда услуги по заемам нескольких банков запрашиваются в соответствии с требованиями его заема.
На рисунке 1 представлены первые шаги, необходимые для составления процесса получения заема (loan process). Я сначала проведу вас по схеме процесса (process flow), особо обращая внимание на некоторые ключевые конструкции языка BPEL, а затем рассмотрим фрагменты кода реального процессного языка. (Рассматриваемый пример скачан с OTN.) При изучении течения процесса акцент будет сделан на синтаксисе процессного языка, взаимодействию процесса с конечным пользователем будет уделено меньше внимания.
Рисунок 1: Начальные шаги для получения заема
Скрипт BPEL - это документ XML, который соответствует схеме BPEL. Он интерпретируется во время исполнения процессором BPEL, который выявляет ключевые слова и выполняет соответствующую обработку.
Приведенные выше команды BPEL также известны как процессы (activity). Возможны две разновидности описания процессов:
Исполняемые бизнес-процессы - процессы, которые моделируют фактическое поведение участника бизнес-взаимодействия.
Бизнес-протоколы, которые, наоборот, используют описания процесса для указания поведения каждой стороны, задействованной в протоколе при обмене сообщениями, без раскрытия внутреннего поведения. Описания процесса для бизнес-протокола называются абстрактными процессами.
BPEL можно использовать для моделирования и абстрактного, и исполняемого процессов, т.е. либо для описания бизнес-процесса с целью моделирования или представления (абстрактный процесс), либо для создания исполняемого бизнес-процесса.
Первое, запрос для оценки заявки на заем (loan assessment) – это вызов Web-сервиса, полученый через действие <receive>. Далее, данные о клиенте выбираются и приводятся к формату, совместимому с сервисом каждого банка, через действие.<assign> Сервисы The United Loan Service и the American Loan Service вызываются параллельно из действия <flow>, содержащего два действия <invoke>. По завершению оценки, сервис каждого банка возвращает управление бизнес-процессу получения заема со своей оценкой. Этот входящий (inbound) запрос представлен действием <receive>.
Далее, эти результаты сравниваются друг с другом, чтобы определить наилучшую ставку, благодаря использованию действий <case> и <switch>, аналогичных конструкции if-then-else в языках программирования. В рамках действия <case> выбирается наилучшая ставка и ее значение присваивается переменной для возврата <variable>, благодаря использованию действия <assign>. Наконец, результат обоих этих вызовов посылается обратно источнику вызова, благодаря другому действию <invoke>.