Проектирование сервисов для сервис-ориентированной архитектуры – сервисы online обработки заказа товаров с учетом кредитоспособности поку

Автор работы: Пользователь скрыл имя, 29 Марта 2012 в 19:56, курсовая работа

Краткое описание

Тенденции, которые можно наблюдать на сегодняшний день, свидетельствуют к переходу на новый уровень проектирования систем – систем с сервис-ориентированной архитектурой (Service-Oriented Architecture, SOA). И наиболее перспективной технологией, на сегодняшний день, на которой реализуется SOA, является технология web-сервисов. В этой работе будут рассмотрены способы создания web-сервисов с использованием нескольких технологий – JAX-RPC, позволяющая создавать и обращаться к web-службам на платформе Java и BPEL – язык описания бизнес-процессов, построенных на взаимодействии web-служб.

Содержание

СОДЕРЖАНИЕ 2
1 ВВЕДЕНИЕ 4
2 ПОСТАНОВКА ЗАДАЧИ 4
3 РАЗРАБОТКА ПО МЕТОДИКЕ RUP 5
4 ФУНКЦИОНАЛЬНАЯ ДЕКОМПОЗИЦИЯ СИСТЕМЫ 6
4.1 ВАРИАНТ ИСПОЛЬЗОВАНИЯ: ОБРАБОТАТЬ ЗАКАЗ 7
4.2 ВАРИАНТ ИСПОЛЬЗОВАНИЯ: ПОДТВЕРДИТЬ ЗАКАЗ 7
4.3 ВАРИАНТ ИСПОЛЬЗОВАНИЯ: ОТМЕНИТЬ ЗАКАЗ 8
4.4 ВАРИАНТ ИСПОЛЬЗОВАНИЯ: ПОЛУЧИТЬ ДОКУМЕНТЫ ЗАКАЗА КЛИЕНТА 8
5 СТРУКТУРНАЯ ОРГАНИЗАЦИЯ СИСТЕМЫ 8
5.1 ОПИСАНИЕ РАЗРАБОТАННЫХ СЕРВИСОВ 9
5.1.1 Сервис хранения документов заказов (WebSellerDB) 9
5.1.2 Сервис обработки заказов (WebSeller) 9
5.2 СХЕМА ДАННЫХ 10
6 КРАТКОЕ ОПИСАНИЕ И РОЛЬ ИСПОЛЬЗУЕМЫХ ТЕХНОЛОГИЙ 11
6.1 XML-ТЕХНОЛОГИИ 11
6.2 ТЕХНОЛОГИИ WEB-СЛУЖБ 12
6.2.1 WSDL 12
6.2.2 JAX-RPC 12
6.2.3 SOAP Handlers 15
6.3 КОРОТКО ОБ ИСПОЛЬЗУЕМЫХ ТЕХНОЛОГИЯХ APACHE 16
6.3.1 Apache Software Foundation 16
6.3.2 Jakarta Tomcat 17
6.3.3 Apache Axis 18
6.3.4 Apache Xindice 18
6.3.5 Другие инструменты Apache 19
6.4 ЯЗЫК BPEL 20
6.5 BPEL ENGINE, ACTIVEBPEL, ACTIVEWEBFLOW PROFESSIONAL 21
7 ОБОСНОВАНИЕ ТЕХНИЧЕСКИХ РЕШЕНИЙ 21
7.1 РАЗРАБОТКА XML-СХЕМЫ ДОКУМЕНТА ЗАКАЗА 21
7.2 РАЗРАБОТКА WSDL-ОПИСАНИЙ 23
7.3 ОРГАНИЗАЦИЯ ДОСТУПА К БД 23
7.3.1 Класс XindiceHelper 24
7.3.2 Класс WebSellerDBHandler 24
7.4 BPEL-ПРОЦЕСС ДЛЯ СЕРВИСА WEBSELLER 27
7.4.1 Инициализация 28
7.4.2 Процедура проверки кредитоспособности 28
7.4.3 Управление состоянием заказа 29
7.4.4 Обработка ошибок 31
8 РАЗВЕРТЫВАНИЕ (DEPLOYMENT) WEB-СЛУЖБ 32
9 ТЕСТОВЫЕ ПРИМЕРЫ 33
9.1 КРАТКОЕ ОПИСАНИЕ ТЕСТОВ И РЕЗУЛЬТАТОВ ИХ РАБОТЫ 33
9.1.1 Пример выполнения теста с таймаутом 34
10 ЗАКЛЮЧЕНИЕ 35
11 ИСПОЛЬЗОВАННЫЕ ТЕХНОЛОГИИ И ИСТОЧНИКИ ИНФОРМАЦИИ 36
ПРИЛОЖЕНИЕ А. СТРУКТУРА КАТАЛОГОВ ДИСКА 38
ПРИЛОЖЕНИЕ Б. ГЛОССАРИЙ 39

Прикрепленные файлы: 1 файл

Курсовая работа (WebSeller).doc

— 921.00 Кб (Скачать документ)

Ссылка на объявленное свойство из BPEL-процесса:

<!-- Объявление набора -->

<correlationSets>

   <correlationSet name="corellateOverOrderID" properties="cor:orderID"/>

</correlationSets>

 

<!-- Коррелирование событий по этому набору на примере события подтверждения заказа -->

              <onMessage operation="confirmOrder" partnerLink="OrderProcessingLink"

                            portType="order-processing:WebSeller" variable="confirmOrderMessage">

                            <correlations>

                                          <correlation initiate="yes" set="corellateOverOrderID"/>

                            </correlations>

                            <invoke inputVariable="deleteOrderMessage" name="DeleteOrder"

                                          operation="deleteOrder" outputVariable="processVoidReply"

                                          partnerLink="OrderStorageLink" portType="data:WebSellerDB"/>

              </onMessage>

7.4.4        Обработка ошибок

В разработанном BPEL-процессе присутствуют два обработчика ошибок уровня процесса:

Рисунок 7 Глобальные обработчики ошибок BPEL-процесса WebSeller

В случае возникновения ошибки с типом orderProcessingFault, необходимо удалить из БД ранее сохраненный заказ. Для этого в BPEL предусмотрена активность compensate, которая должна выполнить активность compensationHandler региона (Scope), переданного ей в качестве параметра. Такой обработчик объявлен в регионе ScopeOrder (см. Рисунок 4 Инициализация бизнес-процесса). Обработанные исключения выбрасываются на следующий уровень – клиенту, вызвавшему службу WebSeller.

8          Развертывание (deployment) Web-служб

Для того чтобы развернуть (установить) сервисы можно воспользоваться разработанными заданиями ant (см. Приложение Г. Задания Ant (Ant Targets)). Условно можно определить три типа заданий Ant, разработанных для данного проекта:

  1. Для компилирования и сборки проекта;
  2. Для развертывания проекта (установки web-служб и BPEL-процессов);

3.      Для запуска тестов.

На этапе сборки проекта создается файл архива, который можно устанавливать в ActiveBPEL Engine: webseller/wsr/webseller.wsr – web-служба WebSellerDB. Архив BPEL-процесса WebSeller – webseller/bpr/webseller.bpr – создается при помощи ActiveWebflow Professional.

Для сборки проекта необходимо выполнить команду (webseller/ant/ – рабочий каталог):

ant build

Все, что нужно для развертывания – это скопировать файлы архивов служб в каталог %CATALINA_HOME%/bpr. Сделать это можно командой:

ant deploy

Для запуска тестов можно воспользоваться командами:

ant deploy-junit

ant test

9          Тестовые примеры

Для созданного BPEL-процесса в качестве эмуляции системы, в которую интегрирован этот сервис, разработан набор JUnit-тестов (класс net.sf.dmitrygusev.webseller.test.TestWebSeller).

9.1         Краткое описание тестов и результатов их работы

В классе TestWebSeller эмулируются три исхода вызова службы:

1.      Нормальное завершение обработки заказа подтверждением от клиента (метод testOrderProcessingConfirm());

2.      Отмена сделанного заказа (метод testOrderProcessingCancel());

3.      Таймаут (метод testOrderProcessingTimeout()).

9.1.1        Пример выполнения теста с таймаутом

Рисунок 8 Пример выполнения BPEL-процесса в тесте с таймаутом

Рисунок 9 Глобальные обработчики исключительных ситуаций

10     Заключение

Сервис-ориентированные архитектуры (Service-Oriented Architectures, SOA) сегодня очень популярны. Хотя SOA не предполагает использование web-служб в качестве сервисов, на сегодняшний день преимущественно именно web-службы используются для построения SOA. В связи с этим на ряду с поддержкой разработки web-служб в языках ООП (JAX-RPC/SAAJ/JAXM, если рассматривать в контексте языка Java) появляются также специфические языки, которые позволяют создавать новые сервисы на основе уже существующих. Примером такого языка является рассмотренный в данной работе язык BPEL, который позволяет специалистам с квалификацией ниже, чем разработчики языков ООП, например, бизнес аналитикам, с легкостью описывать бизнес-процессы, работающие в реальных SOA, пользуясь графическими нотациями, предоставляющие более высокий уровень абстракции для описания сервиса. Используя BPEL, новые сервисы могут разрабатываться за считанные дни и недели, против месяцев и годов, которые пришлось бы потратить на их реализацию, используя технологии более низкого уровня, таких как JAX-RPC/SAAJ/JAXM.


11     Использованные технологии и источники информации

[AEBPEL]              ActiveBPEL, LLC – это софтверная организация, работающая в open source, которая лицензирует и распространяет технологию ActiveBPEL™ engine. ActiveBPEL engine – это runtime environment, которая способна исполнять процессы, созданные согласно спецификации Business Process Execution Language for Web Services[4] (BPEL4WS, или просто BPEL) версии 1.1. (http://activebpel.org/)

[AEWEBFLOW]              Основанный на стандартах набор продуктов управления процессами, которые позволяют информационным аналитикам создавать, устанавливать и управлять составлением процессов, которые имеют 100% совместимость с BPEL 1.1. ActiveWebflow состоит из интегрированных визуальных средств разработки (ActiveWebflow Professional) и окружением исполнения BPEL уровня предприятия (ActiveWebflow Enterprise). В двух словах, аналитики процессов и разработчики приложений могут использовать ActiveWebflow Professional чтобы создавать и тестировать BPEL-процессы, для дальнейшего развертывания этих процессов в ActiveWebflow Enterprise. (http://www.active-endpoints.com/products/index.html)

[ANT]              Apache Ant – это Java-based build tool. (http://ant.apache.org/)

[AXIS]              Apache Axis – это реализация SOAP ("Simple Object Access Protocol"), рекомендованного W3C[5]. (http://ws.apache.org/axis/)

[JAVA]              Технология Java (http://java.sun.com/)

[TOMCAT]              Официальная эталонная реализация технологий Servlet 2.4 и JavaServer Pages 2.0. (http://jakarta.apache.org/tomcat/index.html)

[XINDICE]              Реализация с открытым кодом XML-«базы данных». (http://xml.apache.org/xindice/)

[XUPDATE]              Язык для изменения XML-документов. (http://xmldb-org.sourceforge.net/xupdate/)

[APACHE]              Официальный сайт Apache Software Foundation, (www.apache.org)

[LOG4J]              Log4j – набор API для ведения логов для языка Java (http://logging.apache.org/log4j/docs/index.html).

[TOMCATBOOK]              Бакор А., Бхаттачарьи Д., и др., Apache Tomcat для профессионалов. Пер. с англ. – М.: КУДИЦ-ОБРАЗ, 2005

[WSBOOK]              Бекет Г., Куннумпурат М., Роди Ш. и др., Java: основы Web-служб. Пер. с англ. – М.: КУДИЦ-ОБРАЗ, 2004, 463 стр.

27

 



Приложение А. Структура каталогов диска

Рисунок 10 Структура каталогов диска

      "Другие проекты" – установочные дистрибутивы используемых технологий (см. раздел «Используемые инструменты»).

      "Курсовой проект (WebSeller)" – разработанный курсовой проект, включая:

o        "Пояснительная записка" – эта пояснительная записка;

o        "Плакаты" – разработанные чертежи и плакаты;

o        "Артефакты RUP" – разработанные артефакты RUP;

o        "Проект WebSeller для Eclipse 3.1.1" – архив проекта WebSeller.

      "Настроенный Tomcat" – сконфигурированный Tomcat, с установленными сервисами проекта WebSeller.


Приложение Б. Глоссарий

Артефакт Глоссарий также представлен на прилагаемом диске, см. Glossary в каталоге "Артефакты RUP", Приложение А. Структура каталогов диска

Список терминов

      BPEL – Business Process Execution Language

      Внешняя система – система, которая использует наш бизнес-процесс через своих клиентов – продавцов и покупателей.

o        Так как данная система является учебной, в ней не рассматривается вопрос разделения ролей актантов, таких как продавец или покупатель. Они все представлены одним актантом – внешняя система.

      Документ заказа – структура данных (XML-документ), который содержит информацию о заказе, а именно: статус документа заказа, идентификатор заказа, выдаваемый нашей системой при сохранении документа заказа в БД, информация о покупателе, его контактную информацию и его идентификатор во внешней системе; информация о корзине покупателя, в которой содержится информация о магазине, в котором совершается покупка, товарах и их количестве, которые собирается купить покупатель.

      Статус документа заказа – может принимать значения STATE_PENDING, STATE_CREDIT_STATUS, STATE_WAITING.

o        STATE_PENDING – документ заказа поступил в систему;

o        STATE_CREDIT_STATUS – документ заказа проходит проверку на кредитоспособность покупателя;

o        STATE_WAITING – документ заказа находится в режиме ожидания подтверждения или отмены заказа.

      Сумма заказа N – сумма, установленная для данного магазина, ниже которой магазин может самостоятельно предъявить кредит покупателю. В случае если сумма заказа больше N, наша система обращается к сторонней службе проверки кредитоспособности покупателя.

      Продавец магазина – подтверждает факт явки покупателя в магазин за получением товара.

      Время – специальный актант, который по прошествии определенного времени T извлекает заказ из системы, если покупатель не подтвердил заказ (т.е. продавец не зафиксировал факт явки покупателя).


Приложение В. Создание рабочего окружения

Используемые инструменты

Для развертывания понадобятся:

  1. Java 1.5.0 (см. [JAVA])

2.      Tomcat 5.5.12 (см. [TOMCAT])

3.      Apache Xindice 1.1b4 (см. [XINDICE])

4.      ActiveBPEL engine v1.2 (см. [AEBPEL])

  1. Apache Axis 1.2.1[6] (см. [AXIS])
  2. Apache Ant 1.6.5[7] (см. [ANT])

Тестирование системы на совместимость с другими версиями не проводилось.

Установка исполняемой среды

Для детальной информации по установке см. оригинальные инструкции по установки конкретного ПО. Ниже будут рассмотрены вопросы, касаемо интеграции ПО, перечисленного в разделе «Используемые инструменты».

Будем считать, что установка производится на «чистую» систему, так что вопросы совместимости с уже установленным ПО здесь рассматриваться не будут.

Переменные окружения

Для продолжения работы необходимо определить следующие переменные окружения:

Таблица 2 Переменные окружения

Название переменной

Описание

CATALINA_HOME

Должна указывать на корневой каталог, куда будет установлен Tomcat

ANT_HOME

Должна указывать на корневой каталог, куда будет установлен Ant

PATH

Переменную окружения %PATH% необходимо изменить, включив в нее каталог %ANT_HOME%/bin для запуска тестов и других заданий нашего Ant-скрипта (см. Приложение Г. Задания Ant (Ant Targets))

Процесс установки

1.      Распаковать Tomcat (apache-tomcat-5.5.12.tar.gz) в %CATALINA_HOME%;

2.      Распаковать Tomcat Compatibility Pack (apache-tomcat-5.5.12-compat.tar.gz) для поддержки Java 1.4.x;

3.      Распаковать Ant (apache-ant-1.6.5-bin.tar.bz2) в %ANT_HOME%;

  1. Собрать xindice.war (или скачать готовый архив [XINDICE]) и скопировать его в %CATALINA_HOME%\webapps\;

5.      xindice.jar в %CATALINA_HOME%\shared\lib\;

6.      Установить activebpel-1.2;

      activebpel-1.2\install.bat

7.      Из %CATALINA_HOME%\webapps\xindice\WEB-INF\lib\ в %CATALINA_HOME%\shared\lib файлы:

      xalan-2.5.2.jar

      xmldb-api-20030701.jar

      xmldb-api-sdk-20030701.jar

      xmldb-common-20030701.jar

      xmldb-xupdate-20040205.jar

      xmlrpc-1.1.jar

  1. Установить параметры ActiveBPEL Engine (http://localhost:8080/BpelAdmin/config.jsp)

       Auto create target path for Copy/To: Да

       Validate Input/Output messages against schema: Нет

Настройка среды разработки

В качестве среды разработки используется Eclipse (версия 3.1.1). Для разработки BPEL процессов используется ActiveWebflow Professional[8].

Интегрирование сред разработки BPEL, WS и Java

Как было отмечено ранее (см. сноску №8), дизайнер ActiveWebflow Professional распространяется как отдельная IDE на базе Eclipse и поддержка программирования на Java в этом Eclipse отсутствует. Также текущая версия основана на базе Eclipse 3.0.1, в котором отсутствует поддержка для Java 5.

По этому проще всего на данный момент использовать две копии Eclipse: первую (дизайнер ActiveWebflow Professional) использовать только для дизайна BPEL-процессов, а другую (Eclipse 3.1.1) для всего остального. Каждая копия Eclipse работает со своим рабочим пространством (workspace), которое не разделяется между инстанциями. Workspace содержит набор проектов, с которыми на данный момент идет работа. Eclipse позволяет в разных проектах создавать папки-ссылки на другие папки. В качестве рекомендации предлагается создать полную структуру каталогов в проекте в рабочей области Eclipse 3.1.1 и из проекта в ActiveWebflow Professional сделать ссылки на папки bpel, bpr и wsdl – это все, что понадобится для дизайна BPEL-процесса (см. рис. ниже).

Рисунок 11 Рабочая область (Workspace)

Eclipse 3.1.1

Рисунок 12 Рабочая область (Workspace)

ActiveWebflow Professional

Axis ([AXIS]) предлагает вспомогательные средства для разработки web-служб – утилиты WSDL2Java и Java2WSDL (см. сноску №6). Для автоматизации разработки в поставку Axis также входит набор задач (taskdef) для Apache Ant ([ANT]), которые позволяют работать с этими и некоторыми другими утилитами (например, AdminClient). Напомним, что Ant интегрирован в среду разработки Eclipse, что позволяет наладить процесс автоматизации разработки web-служб (см. Приложение Г. Задания Ant (Ant Targets)).

Информация о работе Проектирование сервисов для сервис-ориентированной архитектуры – сервисы online обработки заказа товаров с учетом кредитоспособности поку