corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

Создание составного приложения для обработки займов

В этом руководстве приведен обзор несложного составного приложения и иллюстрируется развертывание, выполнение и тестирование составного приложения.

Исходная ситуация

Составное приложение для обработки займов предназначено для следующей исходной ситуации, также проиллюстрированной на Рис. 1:

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

Рис. 1: Исходная ситуация обработки займов

Рис. 1: Схема обработки займа

Предполагаемая продолжительность: 45 минут

Требования для работы с руководством

Перед началом работы рекомендуется ознакомиться с требованиями в этом разделе.

Предварительные условия

Предполагается, что читатель обладает базовыми знаниями языка и платформы Java и IDE NetBeans или опытом программирования с их использованием:

Программное обеспечение для работы с руководством

Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans вариант установки "All" версии 6.0 или 6.1
Комплект для разработчика на языке Java (JDK) версия 6 или
версия 5
Веб-сервер или сервер приложений, совместимый с Java EE GlassFish V2 UR2 для NetBeans 6.1
GlassFish V2 UR1 для NetBeans 6.0

В вариант загрузки "All" входит пакет SOA и сервер приложений GlassFish V2, необходимые для работы с этим руководством.

наверх

Настройка и запуск сервера приложений GlassFish

Перед развертыванием приложения необходимо правильно настроить и запустить сервер приложений GlassFish.
В полный пакет загрузки "All" среды NetBeans 6.1 входит сервер приложений GlassFish V2. При установке среды NetBeans 6.1 также устанавливается и GlassFish V2.

Запуск сервера приложений GlassFish:

  1. Если окно "Services" не открыто, выберите "Window > Services".
  2. В диалоговом окне "Services" разверните узел Servers.
    В узле Servers должен содержаться подузел GlassFish V2. Если узел сервера приложений GlassFish Application Server отсутствует, перейдите к разделу Настройка сервера приложений GlassFish.

    На рисунке показано окно "Service"; развернут узел "GlassFish V2"


  3. Щелкните правой кнопкой мыши узел "GlassFish V2" и выберите "Start".

    В окне "Output" выводится информация протокола по настройке приложения. Если окно "Output" не отображается, выберите "Window > Output > Output".
    При появлении в окне "Output" сообщения Application server startup complete сервер приложений можно считать запущенным.

    Примечание: Если рядом с узлом сервера приложений GlassFish выводится значок с зеленой стрелкой, сервер запущен.

    Это интересно: При развертывании приложения на сервере приложений GlassFish сервер запускается автоматически. Таким образом, запускать сервер приложений вручную не требуется.

Выбор альтернативного сервера приложений:

Ниже приведена процедура настройки IDE NetBeans 6.1 для использования альтернативной версии сервера приложений GlassFish V2. Предполагается, что альтернативная версия сервера приложений загружена и установлена.

  1. В окне "Services" щелкните правой кнопкой мыши узел "Servers" и выберите "Add Server" в контекстном меню.
    Откроется диалоговое окно "Add Server Instance".
  2. Выберите из раскрывающегося списка на странице "Choose Server" пункт "GlassFish V2".
  3. Нажмите кнопку "Next".
    Откроется страница "Platform Folder Location".
  4. Нажмите кнопку "Browse" в поле "Platform Location", затем перейдите к установочному каталогу сервера приложений и выберите его.

    Если сервер приложений GlassFish установлен в каталог по умолчанию, место установки можно определить по таблице 1. В противном случае перейдите к местоположению установки сервера приложений GlassFish V2.

    Таблица 1: Папка установки сервера приложений по умолчанию

    Платформа Установка от имени... Установка SOA Установка пакета средств
    ОС Solaris
    Linux
    root /opt/SUNWappserver /opt/SDK
    ОС Solaris
    Linux
    user ~/SUNWappserver ~/SDK
    Mac OS X - ~/SUNWappserver ~/SDK
    Windows - C:\Sun\AppServer C:\Sun\SDK
  5. Выберите переключатель "Register Local Default Domain" и нажмите кнопку "Next".
  6. Введите имя пользователя и пароль администратора домена.
    Если при установке были приняты стандартные значения, имени пользователя соответствует admin, а паролю – adminadmin.
  7. Нажмите кнопку "Finish".

Создание проекта модуля BPEL

Этот раздел посвящен созданию проекта модуля BPEL под названием LoanRequestor.

Для создания проекта LoanRequestor:

  1. Щелкните File > New Project на панели инструментов NetBeans.
    Откроется мастер создания проекта.
  2. Выберите узел SOA в списке "Categories", а затем выберите узел BPEL Module в списке "Projects".
  3. Нажмите кнопку "Next".
  4. Введите LoanRequestor в поле "Project Name".
  5. (Дополнительно) Кнопка "Browse" в поле "Project Location" позволяет выбрать другой каталог сохранения файлов проекта.
  6. Нажмите кнопку "Finish".
    В окне "Projects" теперь содержится узел проекта модуля BPEL с названием LoanRequestor.

наверх

Создание схемы XML

В этом разделе к проекту модуля BPEL добавляется новый файл схемы XML, а затем к схеме добавляются элементы.

Создание LoanRequestor.xsd:

  1. В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите New > Other.
    Откроется мастер создания файла.
  2. Выполните следующие действия в мастере создания файла:
    1. В диалоговом окне "Choose File Type" установите в поле "Category" значение XML, а в поле "File Type" – XML Schema. Нажмите кнопку Next.
    2. Введите LoanRequestor в поле "File Name".
    3. Нажмите кнопку Finish.
    В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.xsd. В редакторе исходного кода содержится вкладка для файла схемы XML LoanRequestor.xsd с открытым режимом просмотра схемы.

  3. Нажмите кнопку "Design" в режиме просмотра схемы для перехода в режим проектирования редактора схемы XML.

    На рисунке показан созданный файл схемы в режиме проектирования в редакторе схем XML

Добавление составных типов к схеме XML:

  1. Разверните раздел "XML Schema Components" в палитре режима проектирования и выберите значок составного типа.
    Если окно "Palette" не открыто, выберите в главном меню "Window > Palette".
  2. Перетащите выбранный вариант в область проектирования схемы, в узел Complex Types.
    При этом добавляется узел Complex Type, а имя составного типа (newComplexType) выделяется и теперь может быть изменено.
  3. Введите processApplicType в новом узле и нажмите клавишу Enter.
    Теперь в области проектирования выводится новый составной тип с именем processApplicType.
  4. Повторите действия 1–3 и создайте составной тип с именем processApplicRespType.

    На рисунке показаны составные типы, добавленные в схему XML в области "Schema Design" редактора исходного кода

Добавление локальных элементов к processApplicType:

  1. В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел processApplicType в области проектирования схемы.
    При этом добавляется узел элемента newElement.
  2. Если окно "Properties" не открыто, выберите "Window > Properties".
  3. Выберите узел newElement в области проектирования схемы.
  4. Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите socialSecurityNumber.
  5. В окне "Properties" установите для свойства Nillable значение True.
  6. В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
    Откроется диалоговое окно "Definition".
  7. Разверните узел списка Built-in Types, выберите узел string и нажмите кнопку "OK".
  8. Повторите действия 1–7 и добавьте следующие элементы:

    Name Nillable Definition
    applicantName True string
    applicantAddress True string
    applicantEmailAddress True string
    applicantAge True int
    applicantGender True string
    annualSalary True double
    amountRequested True double

Добавление локального элемента к processApplicRespType:

  1. В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел processApplicRespType в области проектирования схемы.
    При этом добавляется узел элемента newElement.
  2. Выберите узел newElement в области проектирования схемы.
  3. Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите return.
  4. В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
    Откроется диалоговое окно "Definition".
  5. Разверните узел списка Built-in Types и выберите узел string.
  6. Нажмите кнопку "OK".
    После добавления к составным типам всех локальных элементов окно режима проектирования должно выглядеть следующим образом.

    На рисунке показано добавление локальных элементов к составным типам в области проектирования схемы редактора исходного кода

Добавление глобальных элементов:

  1. В разделе палитры "XML Components" выберите значок элемента и перетащите его в узел "Elements" в области "Design".
    При этом в область проектирования схемы добавляется элемент newElement под узлами Elements.
  2. Выберите узел newElement в области проектирования схемы в режиме проектирования.
  3. Выберите значение для поля Name в окне "Properties" для получения возможности изменения и введите processApplicElement.
  4. В окне "Properties" нажмите кнопку с многоточием рядом со свойством Definition.
    Открывается диалоговое окно определения элемента "Definition".
  5. Разверните узел Complex Types в списке типов и выберите узел составного типа processApplicType.
  6. Нажмите кнопку "OK".
  7. Повторите действия 1–6 и добавьте другой глобальный элемент с именем processApplicRespElement; выберите в качестве определения составной тип processApplicRespType.

    На рисунке показано добавление глобальных элементов к схеме XML в редакторе исходного кода.

  8. Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.

наверх

Создание документа WSDL

В этом разделе к проекту модуля BPEL добавляется новый файл WSDL, а затем выполняется настройка элементов документа WSDL.

Создание LoanRequestor.wsdl:

  1. В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите "New > WSDL Document".
    Откроется мастер "New WSDL Document".
  2. Выполните следующие действия на странице "Name and Location":
    1. Введите LoanRequestor в поле "File Name".
    2. Установите флажок "Import XML Schema File(s)".
    3. Нажмите кнопку "Browse" в поле "XML Schema(s)".
      Откроется диалоговое окно "Add Import". В этом диалоговом окне предлагается выбрать импортируемые схемы XML.
    4. Разверните узел By File > LoanRequestor > Process Files и выберите LoanRequestor.xsd.
      Убедитесь в том, что для строки LoanRequestor.xsd установлен флажок в столбце "Import".

      На рисунке показан мастер "New WSDL Document", для импорта выбран файл "LoanRequestor.xsd".

    5. Нажмите кнопку "OK".
    6. В мастере "New WSDL Document" нажмите кнопку "Next".
    Откроется страница "Abstract Configuration".
  3. Выполните следующие действия в области "Input" страницы "Abstract Configuration":
    1. Дважды щелкните значение по умолчанию в столбце "Message Part Name" для получения возможности изменения значения поля.
    2. Введите requestLoanMessage и нажмите клавишу Enter.
    3. Нажмите кнопку с многоточием в столбце "Element Or Type".
      Откроется диалоговое окно "Select Element Or Type".
    4. Разверните By File > LoanRequestor > src/LoanRequestor.xsd > Elements.

      Примечание: Для работы с узлом By File в диалоговом окне "Select Element Or Type" может потребоваться прокрутка до начала списка.
    5. Выберите в узле Elements пункт processApplicElement и нажмите кнопку "OK".
  4. Выполните следующие действия в области "Output" страницы "Abstract Configuration":
    1. Дважды щелкните значение по умолчанию в столбце "Message Part Name" для получения возможности изменения значения поля.
    2. Введите responsePart и нажмите клавишу Enter.
    3. Нажмите кнопку с многоточием в столбце "Element Or Type".
      Откроется диалоговое окно "Select Element Or Type".
    4. Разверните By File > LoanRequestor > src/LoanRequestor.xsd > Elements.

      Примечание: Для работы с узлом By File в диалоговом окне "Select Element Or Type" может потребоваться прокрутка до начала списка.
    5. Выберите processApplicRespElement в узле Elements и нажмите кнопку "OK".
    Заполненная страница "Abstract Configuration" должна выглядеть подобно примеру ниже.

    На рисунке показан мастер "New WSDL Document", заполненная страница "Abstract Configuration". Щелкните для увеличения

  5. Нажмите кнопку "Finish".
    В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.wsdl. В редакторе исходного кода содержится вкладка для файла WSDL LoanRequestor.wsdl с открытым режимом WSDL.

    Показан документ WSDL "LoanRequestor" в среде IDE. Щелкните для увеличения

наверх

Открытие и развертывание партнерской веб-службы

Приложение для обработки займов взаимодействует со своими партнерскими службами через их общедоступные интерфейсы. Эти интерфейсы определены в файлах WSDL отдельных партнерских служб.

Данное руководство посвящено использованию проекта J2EE под названием LoanProcessor. Проект можно создать с нуля, выполнив указания в разделе Создание проект модуля EJB; также можно загрузить сжатые файлы проекта по адресу loanprocessing-loanprocessor.zip. В проект LoanRequestor входит базовая реализация EJB партнерской службы.
Перед тестовым запуском приложения LoanRequestorCompositeApp рассматриваемая партнерская веб-служба должна быть развернута на встроенном сервере приложений GlassFish.

Эта реализация предназначена только для тестирования процесса службы обработки займов "Loan Service".

Открытие проекта LoanProcessor:

  1. Загрузите файл loanprocessing-loanprocessor.zip и извлеките его содержимое в рабочий каталог среды IDE.
    При этом создается каталог проекта LoanProcessor.
  2. Выберите в главном меню "File > Open Project".
    Откроется мастер открытия проекта.
  3. Перейдите к каталогу, куда был извлечен проект, выберите проект LoanProcessor и щелкните "Open Project Folder".
    Откроется диалоговое окно хода выполнения, после чего проект откроется в окне "Projects".

Развертывание проекта LoanProcessor project:

  1. Щелкните правой кнопкой мыши узел проекта LoanProcessor и выберите "Undeploy and Deploy".
  2. Дождитесь появления сообщения BUILD SUCCESSFUL в окне "Output".
  3. Перейдите к окну "Services" для проверки правильности развертывания приложения уровня предприятия LoanProcessor.
  4. В окне "Services" разверните узел Servers > GlassFish V2 > Applications > EJB Modules.
    Добавился узел LoanProcessor. Если этот узел не выводится, развертывание завершилось сбоем.

наверх

Создание процесса BPEL

Создание LoanRequestor.bpel:

  1. В окне "Projects" разверните узел проекта LoanRequestor, а затем щелкните правой кнопкой мыши узел Process Files и выберите "New > BPEL Process".
    Откроется мастер "New BPEL Process".
  2. Введите LoanRequestor в поле "File Name".
  3. Нажмите кнопку "Finish".
    В окне "Projects" узел Process Files теперь имеет подузел LoanRequestor.bpel.
    В редакторе исходного кода имеется вкладка для процесса BPEL LoanRequestor.bpel с открытым режимом проектирования в BPEL Designer.

    На рисунке показан новый файл процесса BPEL в среде IDE. Щелкните для увеличения

Добавление партнерских связей:

  1. В окне "Projects" разверните узел проекта LoanRequestor, а затем разверните узел Process Files и выберите узел LoanRequestor.wsdl.
  2. Перетащите выбранный элемент (LoanRequestor.wsdl) из окна "Projects" в левую часть окна режима проектирования. Возможное место перетаскивания указывается в IDE визуальными подсказками.
  3. В окне "LoanRequestor Properties" измените значение поля "Name" на BpelImplementation.
  4. В остальных полях примите значения по умолчанию ("WSDL File" = /LoanRequestor.wsdl, установлен переключатель "Use Existing Partner Link Type") и нажмите кнопку "OK".
  5. В окне "Projects" разверните узел проекта модуля EJB LoanProcessor, а затем разверните узел Web Services и выберите узел LoanProcessor.
  6. Перетащите выбранный элемент (узел веб-службы LoanProcessor) из окна "Projects" в окно режима проектирования. Возможное место перетаскивания указывается в IDE визуальными подсказками.
    Откроется диалоговое окно "Create New Partner Link".
  7. Измените значение в поле "Name" на EjbImplementation.
  8. В остальных полях примите значения по умолчанию ("WSDL File" = /Partners/LoanProcessor/LoanProcessor.wsdl, установлен переключатель "Use a Newly Created Partner Link Type") и нажмите кнопку "OK".
    Обратите внимание на то, что в LoanRequestor > Process Files добавлена папка Partners.
  9. Разверните узел Partners.
    Обратите внимание на то, что в этой папке содержится узел LoanProcessor, имеющий в своем составе LoanProcessor.wsdl, LoanProcessorWrapper.wsdl и LoanProcessor_xsd_1.xsd.

    На рисунке показаны партнерские связи, добавленные в редактор BPEL. Щелкните для увеличения

Добавление действия получения:

  1. В разделе "Web Service" окна "Palette" выберите значок "Receive" и перетащите его в область проектирования между действиями "Process Start" и "Process End".
    Возможное место перетаскивания указывается в IDE визуальными подсказками.
    В результате в режиме проектирования размещается действие получения с именем Receive1.
  2. Щелкните действие Edit button for the Receive1 .
    Откроется редактор свойств "Receive1 [Receive] Property Editor".
  3. Измените значение в поле "Name" на ReceiveFromCustomer.
  4. Выберите "BpelImplementation" из раскрывающегося списка "Partner Link".
    В поле "Operation" заносится значение LoanRequestorOperation.
  5. Нажмите кнопку "Create" рядом с полем "Input Variable", примите значения по умолчанию в диалоговом окне "New Input Variable" и нажмите кнопку "OK".
    При этом создается новая входная переменная с именем LoanRequestorOperationIn.
  6. Для закрытия окна "Receive1 [Receive] – Property Editor" нажмите кнопку "OK".
    Действие получения теперь обозначается в режиме проектирования как ReceiveFromCustomer, а между партнерской связью BpelImplementation и действием получения в процессе LoanRequestor имеется соединительная линия.

    На рисунке показано добавление действия получения в редакторе BPEL. Щелкните для увеличения

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

  1. В разделе "Web Service" окна "Palette" выберите значок "Invoke" и перетащите его в область "Design" под действие ReceiveFromCustomer.
    Возможное место перетаскивания указывается в IDE визуальными подсказками.
    В результате в режиме проектирования размещается действие вызова с именем Invoke1.
  2. Щелкните действие Edit button for the<Invoke1.
    Откроется редактор свойств "Invoke1 [Invoke] – Property Editor".
  3. Измените значение в поле "Name" на InvokeLoanProcessorEJB.
  4. Выберите "EjbImplementation" из раскрывающегося списка "Partner Link".
    В поле "Operation" заносится значение processApplicOperation.
  5. Нажмите кнопку "Create" рядом с полем "Input Variable", примите значения по умолчанию в диалоговом окне "New Input Variable" и нажмите кнопку "OK".
    При этом создается новая входная переменная с именем ProcessApplicOperationIn.
  6. Нажмите кнопку "Create" рядом с полем "Output Variable", примите значения по умолчанию в диалоговом окне "New Output Variable" и нажмите кнопку "OK".
    При этом создается новая входная переменная с именем ProcessApplicOperationOut.
  7. Закройте окно "Invoke1 [Invoke] – Property Editor" путем нажатия кнопки "OK".
    Действие вызова в режиме проектирования теперь называется InvokeLoanProcessorEJB, и между действием вызова в процессе LoanRequestor и партнерской связью EjbImplementation имеется соединительная линия.

    На рисунке показано добавление действия вызова в редакторе BPEL.

Добавление действия ответа:

  1. В разделе "Web Service" окна "Palette" выберите значок "Reply" и перетащите его в область проектирования под действие InvokeLoanProcessorEJB.
    Возможное место перетаскивания указывается в IDE визуальными подсказками.
    В результате в режиме проектирования размещается действие ответа с именем Reply1.
  2. Щелкните действие Edit button for the Reply1.
    Открывается редактор свойств "Reply1 [Reply] - Property Editor".
  3. Измените значение в поле "Name" на ReplyToCustomer.
  4. Выберите "BpelImplementation" из раскрывающегося списка "Partner Link".
    В поле "Operation" заносится значение LoanRequestorOperation.
  5. Убедитесь в том, что выбран переключатель "Normal Response".
  6. Нажмите кнопку "Create" рядом с полем "Output Variable", примите значения по умолчанию в диалоговом окне "New Output Variable" и нажмите кнопку "OK".
    При этом создается новая выходная переменная с именем LoanRequestorOperationOut.
  7. Нажмите кнопку "OK" для закрытия окна "Reply1 [Reply] - Property Editor".
    Действие ответа в режиме проектирования теперь называется ReplyToCustomer.

    На рисунке показано добавление действия ответа в редакторе BPEL.

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

  1. В разделе "Basic Activities" окна "Palette" выберите значок "Assign" и перетащите его в область проектирования между действиями ReceiveFromCustomer и InvokeLoanProcessorEJB.
    Возможное место перетаскивания указывается в IDE визуальными подсказками.
    В результате в режиме проектирования размещается действие присвоения с именем Assign1.
  2. Если окно "Properties" не открыто, выберите в главном меню "Window > Properties".
  3. В режиме проектирования щелкните действие Assign1.
  4. В окне "Properties" измените значение свойства Name на CopyCustomerInfo.
  5. Нажмите кнопку "Mapper" в редакторе BPEL для открытия окна BPEL Mapper. Убедитесь в том, что выбрана вкладка "LoanRequestor.bpel".
  6. Разверните узлы Variables > LoanRequestorOperationIn > requestLoanMessage на (левой) исходной панели окна BPEL Mapper.
    Для каждого локального элемента составного типа processApplicType в схеме, созданной ранее, отображается узел.

    На рисунке показаны локальные элементы схемы на исходной панели окна BPEL Mapper.

  7. Разверните узлы ProcessApplicOperationIn и parameters в узле Variables на (правой) панели назначения окна BPEL Mapper.
    Те же элементы схемы выводятся в виде узлов под узлом parameters.

    На рисунке показаны локальные элементы схемы в окне BPEL Mapper.

  8. Перетащите socialSecurityNumber из исходной панели в узел socialSecurityNumber на целевой панели.
  9. Повторите действие 8 для следующих переменных:
    applicantName, applicantAddress, applicantEmailAddress, applicantAge, applicantGender, annualSalary и amountRequested.

    На рисунке показано выполненное присвоение в BPEL Mapper. Щелкните для увеличения

  10. Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.

Добавление активного присвоения CopyLoanStatus:

  1. На панели инструментов редактора BPEL выберите Design для перехода к режиму проектирования.
  2. В разделе "Basic Activities" окна "Palette" выберите значок "Assign" и перетащите его в область "Design" между действиями InvokeLoanProcessorEJB и ReplyToCustomer.
    В результате в режиме проектирования размещается действие присвоения с именем Assign1.
  3. Выберите действие Assign1.
  4. В окне "Properties" установите для свойства Name значение CopyLoanStatus.
  5. На панели инструментов редактора BPEL выберите Mapper для перехода к окну BPEL Mapper.
  6. На исходной панели BPEL Mapper разверните узлы Variables > ProcessApplicOperationOut > parameters.
    Под узлом parameters появляется узел return.
  7. Разверните узлы Variables > LoanRequestorOperationOut > responsePart на целевой панели окна BPEL Mapper.
    Под узлом responsePart появляется узел return.
  8. Перетащите return из исходной панели в узел return на целевой панели окна BPEL Mapper.

    На рисунке показано выполненное присвоение в BPEL Mapper. Щелкните для увеличения

  9. Для сохранения изменений выберите узел проекта LoanRequestor в окне "Projects" и выберите "File > Save All" в главном меню.

наверх

Сборка проекта модуля BPEL

Для сборки проекта LoanRequestor:

  • В окне "Projects" щелкните правой кнопкой мыши проект LoanRequestor и выберите "Clean and Build Project".
    Если в окне "Output" появляется сообщение BUILD SUCCESSFUL, то развертывание прошло успешно.

наверх

Создание проекта составного приложения

Перед развертыванием проекта модуля BPEL необходимо создать составное приложение. При развертывании проекта сборка служб становится доступной серверу приложений, в результате чего становится возможным запуск служебных модулей.

Создание проекта составного приложения:

  1. Выберите в главном меню "File > New Project".
    Откроется мастер создания проекта.
  2. В списке "Categories" выберите узел SOA.
  3. В списке "Projects" выберите узел Composite Application.
  4. Нажмите кнопку "Next".
  5. Введите LoanRequestorCompositeApp в поле "Project Name".
  6. Нажмите кнопку "Finish".
    В окне "Projects" теперь содержится узел проекта для проекта составного приложения с именем LoanRequestorCompositeApp.

    На рисунке показан добавленный проект составного приложения "LoanRequestorCompositeApplication" в окне "Projects"

наверх

Использование редактора составного приложения (сборки служб)

В этом разделе выполняется изменение настроек проекта и сборка проекта модуля BPEL с помощью редактора составного приложения (сборки служб). Добавляется конечная точка WSDL и соединение, а затем проверяются и изменяются свойства автоматически созданных конечных точек WSDL.

Изменение настроек проекта и сборка проекта модуля BPEL с помощью редактора составного приложения (сборки служб):

  1. В окне "Projects" разверните узел проекта LoanRequestorCompositeApp. Щелкните правой кнопкой мыши узел "Service Assembly" и выберите в раскрывающемся меню "Edit".
    В редакторе CASA откроется файл .casa. Область "Design" режима проектирования в редакторе состоит из трех частей: "WSDL Ports", "JBI Modules" и "External Modules".

    Примечание: Для вызова редактора CASA в среде NetBeans 6.0 необходимо щелкнуть правой кнопкой мыши составное приложение в окне "Projects" и выбрать Edit Application Configuration.

    На рисунке показан редактор CASA, область проектирования в режиме проектирования

  2. В окне "Projects" выберите узел проекта LoanRequestor и перетащите его в область "JBI Modules" в режиме проектирования файла LoanRequestorCompositeApp.casa.

    На рисунке показано добавление модуля JBI с помощью редактора составного приложения. Щелкните для увеличения

  3. Для сборки проекта модуля BPEL LoanRequestor нажмите кнопку "Build Project" на панели инструментов редактора.
    После этого выполните следующие действия:
    • В окне "Output" содержится отчет "BUILD SUCCESSFUL".
    • Окно режима проектирования для файла LoanRequestorCompositeApp.casa должно выглядеть следующим образом:

      На рисунке показан вид редактора CASA после сборки проекта модуля BPEL.

Создание конечной точки WSDL:

  1. Выберите значок "soap" в разделе палитры "WSDL Bindings".
  2. Перетащите выбранный элемент в область "WSDL Ports" в режиме проектирования для файла LoanRequestorCompositeApp.casa.
    При этом добавляется порт WSDL casaPort1.

    На рисунке показан вид редактора CASA после добавления конечной точки WSDL "casaport1".

Создание соединения:

  1. Щелкните значок потребляющей конечной точки в порте casaPort1 в режиме проектирования.
  2. Перетащите выбранный элемент в LoanRequestorPortTypeRole_myRole в рамку (BPEL)LoanRequestor в области "JBI Modules".
    В результате создается новое соединение.

    На рисунке показан вид редактора CASA после добавления соединения.

наверх

Развертывание и тестирование составного приложения

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

Развертывание составного приложения:

  • Щелкните правой кнопкой мыши узел проекта LoanRequestorCompositeApp и выберите "Deploy Project".
    Если в окне "Output" появляется сообщение BUILD SUCCESSFUL, то развертывание прошло успешно.

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

  1. В окне "Projects" разверните узел проекта LoanRequestorCompositeApp, а затем щелкните правой кнопкой мыши узел Test и выберите в контекстном меню "New Test Case".
    Откроется мастер "New Test Case".
  2. В поле "Test Case Name" введите ApprovedTestCase и нажмите кнопку "Next".
  3. Разверните узел LoanRequestorCompositeApp - Process Files на странице "Select the WSDL Document", выберите LoanRequestorCompositeApp.wsdl и нажмите кнопку "Next".
  4. Выберите LoanRequestorOperation на странице "Select the Operation to Test" и нажмите кнопку "Finish".
    В окне "Projects" добавлен новый узел под узлом TestApprovedTestCase. В узле имеются два подузла: Input и Output. В редакторе исходного кода содержится вкладка для входного файла Input.xml.

    На рисунке показан файл "Input.xml" для "ApprovedTestCase". Щелкните для увеличения

    Примечание: Если в редакторе исходного кода отсутствует вкладка для Input.xml, откройте файл двойным щелчком по узлу Input в окне "Projects".
  5. Определите значения переменных на вкладке редактора исходного кода для файла Input.xml путем ввода следующих значений в местах, отмеченных вопросительными знаками:
          <loan:socialSecurityNumber>111-11-1111</loan:socialSecurityNumber>
          <loan:applicantName>May JavaOne</loan:applicantName>
          <loan:applicantAddress>1601 Willow Road, Menlo Park, CA 94025</loan:applicantAddress>
          <loan:applicantEmailAddress></loan:applicantEmailAddress>
          <loan:applicantAge>36</loan:applicantAge>
          <loan:applicantGender>female</loan:applicantGender>
          <loan:annualSalary>100000</loan:annualSalary>
          <loan:amountRequested>1000000</loan:amountRequested>
    
  6. Выберите в главном меню "File > Save All".
  7. Перейдите к вкладке редактора исходного кода для Input.xml.

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

  1. В окне "Projects" разверните узел проекта LoanRequestorCompositeApp, а затем щелкните правой кнопкой мыши узел Test и выберите в контекстном меню "New Test Case".
    Откроется мастер "New Test Case".
  2. В поле "Test Case Name" введите RejectedTestCase и нажмите кнопку "Next".
  3. Разверните узел LoanRequestorCompositeApp - Process Files на странице "Select the WSDL Document", выберите LoanRequestorCompositeApp.wsdl и нажмите кнопку "Next".
  4. Выберите LoanRequestorOperation на странице "Select the Operation to Test" и нажмите кнопку "Finish".
    В окне "Projects" добавлен новый узел под узлом TestRejectedTestCase. В узле имеются два подузла: Input и Output. В редакторе исходного кода содержится вкладка для входного файла Input.xml.

    На рисунке показан файл "Input.xml" для "RejectedTestCase". Щелкните для увеличения

    Примечание: Если в редакторе исходного кода отсутствует вкладка для Input.xml, откройте файл двойным щелчком по узлу Input в окне "Projects".
  5. Определите значения переменных на вкладке редактора исходного кода для файла Input.xml путем ввода следующих значений в местах, отмеченных вопросительными знаками:
          <loan:socialSecurityNumber>222-22-2222</loan:socialSecurityNumber>
          <loan:applicantName>John Smith</loan:applicantName>
          <loan:applicantAddress>8888 Willow Road, Fremont, CA 94538</loan:applicantAddress>
          <loan:applicantEmailAddress></loan:applicantEmailAddress>
          <loan:applicantAge>15</loan:applicantAge>
          <loan:applicantGender>male</loan:applicantGender>
          <loan:annualSalary>100000</loan:annualSalary>
          <loan:amountRequested>1000000</loan:amountRequested>
  6. Выберите в главном меню "File > Save All".
  7. Перейдите к вкладке редактора исходного кода для Input.xml.

Заполнение тестового файла базовыми данными для ApprovedTestCase:

  1. В окне "Projects" дважды щелкните узел Output в ApprovedTestCase и ознакомьтесь с содержимым файла.
    Следует отметить, что изначально файл Output.xml пуст.

    На рисунке показан пустой выходной файл для ApprovedTestCase

  2. В окне "Projects" щелкните правой кнопкой мыши узел ApprovedTestCase и выберите "Run" в контекстном меню.

    Примечание: Первое выполнение – особый случай, поскольку файл Output.xml пуст, и сравнение результатов тестирования с содержимым файла Output.xml невозможно. Обратите внимание на сообщение о сбое в окне "Output".
    Открывается диалоговое окно "Overwrite Empty Output?".

    На рисунке показано неуспешное первое выполнение теста в соответствии с результатами в окне "JUnit Test Results". Щелкните для увеличения

  3. Нажмите кнопку "Yes".
    Файл Output.xml заполняется стандартной информацией. В этой версии файла теперь содержатся базовые данные, которые будут использоваться в последующих тестах. Эта версия файла также называется "золотым" файлом.

    На рисунке показан базовый выходной файл, созданный для ApprovedTestCase. Щелкните для увеличения

Заполнение тестового файла базовыми данными для RejectedTestCase:

  1. В окне "Projects" дважды щелкните узел Output в RejectedTestCase и ознакомьтесь с содержимым файла.
    Следует отметить, что изначально файл Output.xml пуст.
  2. В окне "Projects" щелкните правой кнопкой мыши узел RejectedTestCase и выберите "Run" в контекстном меню.

    Примечание: Первый прогон – особый случай, поскольку файл Output.xml пуст, и сравнение результатов тестирования с содержимым файла Output.xml невозможно. Обратите внимание на сообщение о сбое в окне "Output".
    Открывается диалоговое окно "Overwrite Empty Output?".
  3. Нажмите кнопку "Yes".
    Файл Output.xml заполняется стандартной информацией. В этой версии файла теперь содержатся базовые данные, которые будут использоваться в последующих тестах.

    На рисунке показан базовый выходной файл, созданный для RejectedTestCase. Щелкните для увеличения

Выполнение тестов:

  1. В окне "Projects" щелкните правой кнопкой мыши узел ApprovedTestCase и выберите "Run" в контекстном меню.
    Следует отметить, что содержимое файла Output.xml сохраняется и не перезаписывается новым результатом. Для просмотра результатов дважды щелкните узел, соответствующий пройденному тесту (непосредственно под узлом Output).

    На рисунке показаны результаты пройденных тестов. Щелкните для увеличения
  2. В окне "Projects" щелкните правой кнопкой мыши узел RejectedTestCase и выберите "Run" в контекстном меню.
    Для просмотра результатов дважды щелкните узел, соответствующий пройденному тесту.
  3. Закройте все документы в редакторе исходного кода.

наверх

(Дополнительно) Создание проекта модуля EJB

Данное руководство посвящено использованию проекта J2EE под названием LoanProcessor. Проект можно создать с нуля, выполнив указания в этом разделе; также можно загрузить сжатые файлы проекта по адресу loanprocessing-loanprocessor.zip.

Создание проекта модуля EJB:

  1. Выберите в главном меню "File > New Project".
  2. Выберите узел Enterprise в списке "Categories", а затем выберите узел EJB Module в списке "Projects".
  3. Нажмите кнопку "Next".
  4. Введите LoanProcessor в поле "Project Name".
  5. (Дополнительно) Кнопка "Browse" в поле "Project Location" позволяет выбрать другой каталог сохранения файлов проекта EJB.
  6. Нажмите кнопку Next.
  7. Убедитесь в том, что на странице "Server and Settings" выбран сервер "GlassFish V2", и нажмите кнопку Finish.
    В окне "Projects" теперь содержится узел проекта модуля EJB с названием LoanProcessor.

Создание веб-службы:

  1. В окне "Projects" щелкните правой кнопкой мыши узел проекта LoanProcessor и выберите "New > Web Service" в контекстном меню.
    Откроется мастер "New Web Service".
  2. Выполните следующие действия в мастере "New Web Service":
    1. На панели "Name and Location" введите LoanProcessor в поле "Web Service Name".
    2. Введите com.sun.loanprocessor в поле "Package".

      На рисунке показан мастер "New Web Service", заполненная страница "Name and Location".

    3. Нажмите кнопку "Finish".
    В результате создается веб-служба, и LoanProcessor открывается в редакторе исходного кода.
  3. В окне "Projects" разверните узел проекта LoanProcessor, а затем разверните узел Web Services.
  4. Щелкните правой кнопкой мыши узел LoanProcessor (веб-служба) и выберите "Add Operation".
    Откроется диалоговое окно "Add Operation".
  5. В поле "Name" введите processApplicOperation.
  6. На вкладке "Parameters" добавьте следующие семь параметров путем нажатия кнопки "Add" и заполнения строки, добавляемой средой IDE для каждого параметра.

    Name Type
    socialSecurityNumber java.lang.String
    applicantName java.lang.String
    applicantAddress java.lang.String
    applicantEmailAddress java.lang.String
    applicantAge java.lang.Integer
    applicantGender java.lang.String
    annualSalary java.lang.Double
    amountRequested java.lang.Double

    На рисунке показано заполненное диалоговое окно "Add Operation".

  7. Нажмите кнопку OK.
  8. Нажмите кнопку "Source" в редакторе исходного кода для перехода в режим "Source" для файла LoanProcessor.java.
    Следует отметить, что документ LoanProcessor.java обновлен, и в него добавлен скелет метода processApplicOperation.
  9. Замените в редакторе исходного кода
    	//TODO write your implementation code here:
    
    	return null;
      
    на следующий код:
            int MINIMUM_AGE_LIMIT = 18;
            int MAXIMUM_AGE_LIMIT = 65;
            double MINIMUM_SALARY = 20000;
            int AVERAGE_LIFE_EXPECTANCY = 70;
            String result = "Loan Application APPROVED.";
    
            // Проверка возраста подающего заявку
            // Если возраст меньше минимального, заявка отклоняется
            if(applicantAge < MINIMUM_AGE_LIMIT) {
                result = "Loan Application REJECTED - Reason: Under-aged " +
                        applicantAge +
                        ". Age needs to be over " +
                        MINIMUM_AGE_LIMIT +
                        " years to qualify.";
                System.out.println(result);
                return result;
            }
    
            // Проверка возраста подающего заявку
            // Если возраст превышает максимальный, заявка отклоняется
            if(applicantAge > MAXIMUM_AGE_LIMIT) {
                result = "Loan Application REJECTED - Reason: Over-aged " +
                        applicantAge +
                        ". Age needs to be under " +
                        MAXIMUM_AGE_LIMIT +
                        " years to qualify.";
                System.out.println(result);
                return result;
            }
    
            // Проверка годовой зарплаты
            // Если зарплата меньше минимальной, заявка отклоняется
            if(annualSalary < MINIMUM_SALARY) {
                result = "Loan Application REJECTED - Reason: Annual Salary $" +
                        annualSalary +
                        " too low. Annual Salary needs to be over $" +
                        MINIMUM_SALARY +
                        " to qualify.";
                System.out.println(result);
                return result;
            }
    
            // Расчет срока выплаты займа из значения параметра "applicantAge"
            int yearsToRepay = AVERAGE_LIFE_EXPECTANCY - applicantAge;
    
            // Расчет максимальной суммы займа на основании периода выплаты займа
            double limit = annualSalary * yearsToRepay * 0.5;
    
            // Проверка запрашиваемой суммы; если превышен лимит, заявка отклоняется
            if(amountRequested > limit) {
                result = "Loan Application REJECTED - Reason: You are asking for too much $" +
                        amountRequested +
                        ". Annual Salary $" +
                        annualSalary +
                        ", Age " +
                        applicantAge +
                        " years. Your limit is $" +
                        limit;
                System.out.println(result);
                return result;
            }
            System.out.println(result);
            return result;
    
    
  10. Для сохранения изменений выберите "File > Save" в главном меню.
  11. (Дополнительно) Закройте вкладку LoanProcessor в редакторе исходного кода.
  12. Перейдите обратно к разделу Открытие и развертывание партнерской веб-службы.

наверх

Что дальше?

  • Оставить комментарии и предложения, обратиться за поддержкой и получить информацию о последних достижениях в области функциональных возможностей разработки для J2EE с помощью IDE NetBeans можно через рассылку .



Дополнительная информация


наверх

Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems