Из Технического журнала разработчика IBM WebSphere.
Вы возможно думаете: "О нет, только не новая модель программирования. Как насчет Web-сервисов? Что случилось с Enterprise JavaBeans?" Компонентная Архитектура Сервисов (SCA) не собирается замещать ни одну из существующих моделей программирования. Взамен, SCA предоставляет вам модель для определения интерфейсов, реализаций и ссылок, позволяя вам в дальнейшем связать их в любой выбранной вами технологической реализации, такой как Java или Web-сервисы.
Например, мы можем определить наш интерфейс в Java, а наша реализация может прилагаться как процесс BPEL, или мы можем определить наш интерфейс как документ WSDL, а наша реализация может быть класса Java™. Рисунок 1 показывает, как SCA используется в IBM WebSphere Process Server.
Рисунок 1. SCA в WebSphere Process Server
Новенький WebSphere Process Server позволяет разработчикам иметь множество различных технологий реализации и позволяет вам показывать интерфейсы, используя открытые стандарты, например, Java или WSDL. Вдобавок, SCA предоставляет пользовательскую модель программирования, с помощью которой пользователи получат доступ к компонентам сервиса. Это поощряет разработчиков продолжать разработку, используя различные известные им технологии, такие как Enterprise JavaBeans™ (EJBs), и использовать SCA, чтобы склеивать элементы.
Еще одним важным элементом SCA является то, что она определяет стандартную модель для определения зависимостей между компонентами. Как таковые, зависимости определяются связыванием элементов SCA при помощи ссылок.
Рисунок 2. Определение связей между элементами
Наконец, SCA определяет стандартную модель развертывания для упаковки компонентов в сервисный модуль. Компоненты SCA вместе со связанными с ними зависимостями могут быть упакованы в развертываемые блоки.
Рисунок 3. Элементы, упакованные вместе с зависимостями
Модуль SCA - это не просто еще один тип упаковки. В WebSphere Process Server сервисный модуль - эквивалентен EAR-файлу J2EE и некоторым другим подмодулям J2EE. Элементы J2EE, такие как файл WAR, могут быть упакованы вместе с модулем SCA. Артефакты, не относящиеся к SCA, (JSPs и другие) также могут быть упакованы вместе с сервисным модулем SCA, что позволит им запускать сервисы SCA через пользовательскую модель программирования SCA, используя особый тип ссылки, который называется автономная ссылка.
Рисунок 4. Автономная ссылка для не-SCA артефактов
SCA тесно связана с интеграцией. Выше мы описывали ссылки как способ определения зависимостей между компонентами SCA. Например, мы можем определить ссылку на другой компонент SCA внутри того же модуля. При синхронном запуске сервисных элементов внутри модуля с использованием ссылок, данные передаются вне ссылок. SCA определяет способ, которым компоненты запускаются или запускают другие сервисы SCA, находящиеся в других SCA модулях.
Механизмы, которые используются для вызова от модуля к внешнему сервису или от модуля к модулю, называются импортом и экспортом.
Импорт и экспорт называются так с точки зрения модуля. Модуль - это независимый пакет элементов, который выполняет определенную бизнес-функцию.
Если модуль желает предоставить возможность другому объекту (внешнему сервису или другому модулю) запускать бизнес-функцию, он экспортирует эту возможность. Экспорт также предоставляет возможность сделать этот сервис доступным по некоторому количеству различных транспортных протоколов. Экспорт ассоциируется с отдельным компонентом в модуле.
Если модуль желает усилить возможность другого объекта (внешнего сервиса или другого модуля), модуль импортирует эту функцию. Импорт также предоставляет возможность взаимодействовать с поставщиком услуг через множество транспортных протоколов.
Рисунок 5 иллюстрирует эти идеи.
Рисунок 5. Импорт и экспорт SCA
Экспорт и импорт это абстрактные понятия. Им требуется привязка к конкретной технологии. В WebSphere Process Server V6.0 представлены следующие типы привязок:
- SCA (от одного SCA модуля к другому)
- Web сервис
- JMS
- Компонент, не имеющий состояния (Stateless session bean).
При запуске компонентов SCA через импорт и экспорт, параметры передаются без значений.
Рисунок 6. Импорт и экспорт SCA
Связки, которые склеивают компоненты SCA, обобщают большую часть кода на уровне инфраструктуры. Например, мы можем определить, что сети должны быть синхронными либо асинхронными, операции протекать в одном направлении, либо по типу запрос-ответ, либо мы можем определить поведение при взаимодействии между компонентами. SCA контролирует детали инфраструктуры для вас. Мы еще поговорим об этих деталях подробнее в данном цикле статей.
Импорт и экспорт также могут быть привязаны к другим технологиям, таким как JMS, Enterprise JavaBeans или Web сервисы. Это позволяет пользователю Web сервиса обратиться к SCA модулю, или позволяет модулю SCA обратиться к существующему Enterprise JavaBean, используя модель программирования SCA.
Рисунок 7. Импорт и экспорт с другими технологиями
Мы обсудим импорт и экспорт в следующей статье в этом цикле.
SCA дает нам универсальную модель для определения бизнес-сервисов. Объект Данных Сервиса (SDO) предоставляет технологию для представления универсальной модели данных. Элементы SCA могут компоноваться и обмениваться данными друг с другом нейтральным образом, пересылая SDO. Фундаментальной идеей архитектуры SDO является объект данных (data object) - структура данных, включающая в себя примитивную информацию и/или другие информационные объекты. Объект данных также включает в себя ссылки к метаданным, которые предоставляют информацию о данных, включенных в объект данных.
В модели программирования SDO объекты данных представлены в Java интрефейсе commonj.sdo.DataObject. Этот интерфейс включает определения метода, которые позволяют пользователям получать и устанавливать свойства, связанные с DataObject. Другой важной идеей архитектуры SDO является граф данных (data graph) - труктура, которая инкапсулирует набор объектов данных (информационных объектов). Начиная с информационного объекта высшего уровня, содержащегося в графе, все дочерние информационные объекты могут быть достигнуты через ссылки от корневого информационного объекта. Еще одной важной функцией, включенной в граф данных, является отчет об изменениях (change summary) , который используется для регистрации информации о том, какие информационные объекты и свойства изменились в графе за время обработки. (См. Ресурсы для дополнительной информации по SDO.)
WebSphere Process Server выполняет спецификацию SDO в виде бизнес-объектов. Элементы SCA могут обмениваться данными, передавая друг другу бизнес-объекты, как показано на рисунке 8.
Рисунок 8. Бизнес-объекты WebSphere Process Server
Аналогично тому, как SDO "завернут" в DataGraph (граф данных), бизнес-граф используется для "заворачивания" бизнес-объектов высшего уровня и предоставления дополнительной информации, чтобы дополнить данные, включенные в граф. Бизнес-граф использует отчет об изменениях данных в бизнес-графе. Вдобавок, бизнес-граф поддерживает отчет о событиях и несет командную информацию о данных (используется для синхронизации данных между EIS-системами).
Теперь, взглянув на SCA с высоты птичьего полета, мы начнем обсуждать некоторые детали, с помощью примера. Во время построения примера, мы дадим вам общее представление об IBM WebSphere Integration Developer - инструменте, который вы будете использовать для визуального построения и интеграции компонентов SCA.
Чтобы продемонстрировать аспекты SCA и бизнес-объектов, мы обсудим три концепции, относящиеся к бизнесу. Как и при любой попытке развития, цикл должен начинаться с требований. Требования этого сценария включают в себя создание сервиса утверждения кредитов, который получает информацию о кандидате (CreditApplication) и соотносит ее с кредитным рейтингом (CreditRating).
Простейшим элементом SCA является компонент сервиса (service component). Как было упомянуто ранее, компонент сервиса состоит из интерфейса и реализации. Технология, используемая для написания кода для этих артефактов, может варьироваться. В WebSphere Process Server интерфейс может быть Java или WSDL. Java интерфейс может быть Plain Old Java Interface (POJI), как показано ниже:
Листинг 1
public interface CreditRequest
{
public DataObject calulateCreditScore(DataObject creditApp)
throws ServiceBusinessException;
} |
Если вы используете реализацию Java, вы можете создать простой POJO. Ниже представлен пример POJO, выступающего в роли реализации Java:
Листинг 2
public class CreditApprovalImpl implements CreditRequest {
public DataObject calulateCreditScore(DataObject creditApp) {
ServiceManager serviceManager = new ServiceManager();
BOFactory bof = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory");
DataObject creditRating = bof.create("http://CreditApproval", "CreditRating");
creditRating.setString("customerId", creditApp.getString("customerId"));
creditRating.setInt("creditScore", 750);
creditRating.setDouble("creditLimit", 10000d);
return creditRating;
}} |
В этом классе реализаций мы используем ввод CreditApplication для создания простого бизнес-объекта CreditRating, который мы затем возвращаем посетителю.
Компонент сервиса определяется в файле SCDL (Service Component Definition Language - Язык Определения Компонента Сервиса). Файл компонента, созданный при помощи SCDL, приблизительно похож на дескриптор развертывания EJB тем, что он определяет интерфейс, реализацию и некоторые качества сервисных требований компонента SCA. SCDL файл для описанных выше классов Java может выглядеть следующим образом:
Листинг 3
<?xml version="1.0" encoding="UTF-8"?>
<scdl:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0"
xmlns:ns1="http://CreditApproval/CreditRequest"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0"
xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0"
displayName="CreditApproval" name="CreditApproval">
<interfaces>
<interface xsi:type="java:JavaInterface" interface="CreditRequest " >
<method name="calulateCreditScore"/>
</interface>
</interfaces>
<implementation xsi:type="java:JavaImplementation" class=" CreditApprovalImpl"/>
</scdl:component> |
Аналогично, мы могли бы использовать WSDL, чтобы изобразить интерфейс как показано ниже:
Листинг 4
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:bons1="http://CreditApproval"
xmlns:tns="http://CreditApproval/CreditRequest"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreditRequest"
targetNamespace="http://CreditApproval/CreditRequest">
<wsdl:types>
<xsd:schema targetNamespace="http://CreditApproval/CreditRequest"
xmlns:bons1="http://CreditApproval"
xmlns:tns="http://CreditApproval/CreditRequest"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://CreditApproval"
schemaLocation="xsd-includes/http.CreditApproval.xsd"/>
<xsd:element name="calulateCreditScore">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreditApp" nillable="true"
type="bons1:CreditApp"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="calulateCreditScoreResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CreditRating" nillable="true"
type="bons1:CreditRating"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="calulateCreditScoreRequestMsg">
<wsdl:part element="tns:calulateCreditScore"
name="calulateCreditScoreParameters"/>
</wsdl:message>
<wsdl:message name="calulateCreditScoreResponseMsg">
<wsdl:part element="tns:calulateCreditScoreResponse"
name="calulateCreditScoreResult"/>
</wsdl:message>
<wsdl:portType name="CreditRequest">
<wsdl:operation name="calulateCreditScore">
<wsdl:input message="tns:calulateCreditScoreRequestMsg"
name="calulateCreditScoreRequest"/>
<wsdl:output message="tns:calulateCreditScoreResponseMsg"
name="calulateCreditScoreResponse"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions> |
Класс реализации мог бы выглядеть так же (за исключением того, что он естественно не должен выполнять никакой Java интерфейс, будучи определен как WSDL).
Наш SCDL файл может привязать интерфейс к WSDL документу:
Листинг 5
<?xml version="1.0" encoding="UTF-8"?>
<scdl:component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0"
xmlns:ns1="http://CreditApproval/CreditRequest"
xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0"
xmlns:wsdl="http://www.ibm.com/xmlns/prod/websphere/scdl/wsdl/6.0.0"
displayName="CreditApproval" name="CreditApproval">
<interfaces>
<interface xsi:type="wsdl:WSDLPortType" portType="ns1:CreditRequest">
<method name="calulateCreditScore"/>
</interface>
</interfaces>
<implementation xsi:type="java:JavaImplementation" class="CreditApprovalImpl"/>
</scdl:component> |
SCDL используется для описания таких элементов SCA как модули, ссылки, импорт и экспорт. В цикле вы увидите примеры этих элементов. Определения SCDL организованы в нескольких файлах. Например, мы храним SCDL для интерфейса и реализации в файле, названном CreditApproval.component. Ссылки могут быть либо включены в файл CreditApproval.component (совмещено), либо в отдельный файл sca.references, расположенный в корне Модуля. Как показано ниже, любая автономная ссылка будет размещена в файле sca.references. Как мы упоминали, автономные ссылки могут использоваться не-SCA артефактами (JSP) в том же самом SCA модуле для доступа к элементам SCA.
Листинг 6
<?xml version="1.0" encoding="UTF-8"?> <scdl:references xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://www.ibm.com/xmlns/prod/websphere/scdl/java/6.0.0" xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0"> <reference name="CreditRequestPartner"> <interface xsi:type="java:JavaInterface" interface="approval.credit.credit.request. CreditRequest"> <method name="calulateCreditScore"/> </interface> <wire target="CreditApproval"/> </reference> </scdl:references> |
В нашем примере третий файл, который мы определим, это sca.module. Этот SCDL файл будет содержать определение для модуля:
Листинг 7
<?xml version="1.0" encoding="UTF-8"?> <scdl:module xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" name="CreditApproval"/> |
Хотя мы определили WSDL интерфейс для нашего компонента, обратите внимание, что мы можем добавить другой Java интерфейс к автономной ссылке и привязать его к нашему целевому элементу. Таким образом, пользователи Java могут запускать элементы SCA, используя простой POJI. WebSphere Integration Developer обеспечит возможность переводить вызов между Java и WSDL интерфейсами. Сокращенный пример этого вы увидите, когда создадите свой первый SCA элемент.
В этом цикле статей мы увидим примеры того, как SCDL определяет другие артефакты SCA, такие как ссылки, импорт и экспорт. Вышеприведенные традиции именования SCDL файлов используются в WebSphere Integration Developer. В нашем примере, Вы будете использовать WebSphere Integration Developer при построении своего первого элемента SCA. Однако, приложения SCA также могут быть построены с использованием блокнота (notepad).
WebSphere Integration Developer и WebSphere Process Server
В этом параграфе мы будем использовать WebSphere Integration Developer и WebSphere Process Server для построения и запуска собственных элементов SCA.
WebSphere Integration Developer используется для разработки приложений, которые выполняются на WebSphere Process Server V6. WebSphere Integration Developer, основанный на платформе Eclipse 3.0, предоставляет ролевой принцип разработки интеграционных проектов. Вы можете использовать WebSphere Integration Developer и IBM WebSphere Business Modeler V6 вместе с IBM Rational® Application Developer V6 или IBM Rational Software Architect V6 в качестве платформы для проектирования интеграции. Разработчики J2EE, бизнес-аналитики или разработчики интеграции могут использовать набор инструментов, основанный на их специфических ролях, таким образом, чтобы каждый разработчик мог сфокусироваться на редакторах и инструментах, необходимых для этих ролей, что позволит максимизировать производительность.
WebSphere Process Server - это всеобъемлющая интеграционная платформа, основанная на WebSphere Application Server V6. WebSphere Process Server используется для выполнения бизнес-интеграционных приложений с компонентной структурой в сервис-ориентированной архитектуре. Он основан на инфраструктуре J2EE 1.4 и сервисах платформы, предоставленных WebSphere Application Server. Кроме того, WebSphere Application Server может автоматизировать бизнес-процессы.
Для дополнительной информации по WebSphere Integration Developer и WebSphere Process Server см. Ресурсы.
Построение Вашего первого SCA проекта
Теперь вы готовы для создания своего первого SCA проекта. В данном примере ыы построите простой компонент подтверждения кредита. Компонент будет принимать объект данных с ID и именем, а затем возвращать другой объект данных, содержащий кредитный балл и лимит кредитования. Загрузите архив, включенный в эту статью, и разархивируйте его на своем жестком диске. В инструкции предполагается, что вы разархивируете его на диск С:.
WebSphere Integration Developer V6.0 - это гибкая среда разработки, предоставляющая инструменты и мастера для разработки SCA приложений снизу вверх или сверху вниз.
Для создания сервиса подтверждения кредитов, мы исследуем аспекты разработки сверху вниз. В общем, шаги высокого уровня в нашем процессе разработки сверху вниз таковы:
- Создание SCA модуля.
- Создание бизнес-объектов.
- Определение сервисного интерфейса.
- Формирование компонентов и обеспечение реализации.
- Поэлементное тестирование элементов SCA.
- Предоставление автономной ссылки.
- Тестирование сервиса с использованием простого JSP клиента.
Во-первых, вам нужно создать SCA модуль. Как указано ранее, SCA модуль это конструктивное оформление элементов SCA.
-
Откройте WebSphere Integration Developer с пустой рабочей областью. (Рисунок 9)
Рисунок 9. Откройте пустую рабочую область в WebSphere Integration Developer
-
Закройте окно приветствия.
-
Затем создайте новый модуль.
-
Ваше рабочее место в WebSphere Integration Developer должно быть открыто в проекции Бизнес-Интеграции (Business Integration). Найдите вид Business Integration (Бизнес-Интеграция).
-
Щелкните правой кнопкой на Business Integration и выберите New => Module. (Рисунок10)
Рисунок 10. Создание нового модуля
-
Должен появиться мастер создания нового модуля (Рисунок 11). Дайте модулю название CreditApprovalSCAModule.
CreditApprovalSCAModule.
Рисунок 11. Создание нового модуля
-
Теперь у вас в виде Business Integration должен отражаться новый проект. Модули SCA описываются как SCDL файл. Вид Business Integration показывает вам логическую структуру вашего SCA модуля. Вы можете открыть вид Physical Resource (Физические Ресурсы), чтобы посмотреть физические ресурсы, содержащиеся в модуле, как обсуждалось ранее. SCDL для SCA модуля содержится в файле, называемом sca.module. Если Вы откроете файл с помощью текстового редактора, то увидите нечто подобное:
-
Листинг 8
<?xml version="1.0" encoding="UTF-8"?> <scdl:module xmlns:scdl="http://www.ibm.com/xmlns/prod/websphere/scdl/6.0.0" name="CreditApprovalSCAModule"/> |
Не существует предписанной последовательности задач для создания интерфейсов или бизнес-объектов; вы вполне могли бы создавать бизнес-объекты, создавая интерфейс. Здесь мы выбрали создать бизнес-объекты в режиме Business Integration.
Создавая бизнес-объект, вы фактически создаете схему XML. Бизнес-объекты хранятся как стандартная схема XML. Приложения могут получать доступ к данным, используя модель программирования SDO и XPath.
Редактор Бизнес-Объектов позволяет нам создавать определения бизнес-объектов, которые будут использоваться сервисом подтверждения кредитов. Вот два бизнес-объекта, необходимые для нашего сервиса.
CreditApplication:Содержит информацию о заявителе на получение кредита, необходимую для вычисления кредитного рейтинга. Бизнес-объект для заявки на кредит (CreditApplication) состоит из трех атрибутов:
- ID клиента: уникальный идентификатор клиента
- Имя клиента: имя клиента
- Фамилия клиента: фамилия клиента
CreditRating: Содержит информацию о кредитном рейтинге, такую как кредитный балл и лимит кредитования. Бизнес-объект кредитного рейтинга (CreditRating) состоит из следующих атрибутов:
- Кредитный балл: кредитный балл клиента, основанный на предшествующей истории
- Лимит кредитования: общая сумма, которую может задолжать клиент.
-
Мы начинаем с создания нашего бизнес-объекта Запрос, который будет использоваться как параметр ввода в наш элемент SCA.
-
Убедитесь, что модуль CreditApprovalSCAModule развернут. Щелкните правой кнопкой наData Types и выберитеNew => Business Object. (Рисунок 12)
Рисунок 12. Создание нового бизнес-объекта
-
Назовите ваш бизнес-объект
CreditApplication, как показано на рисунке 13.
Рисунок 13. Определение бизнес-объекта
-
Бизнес-объект должен открыться в Редакторе Бизнес-Объектов. Теперь у Вас должен быть CreditApplication в меню Data Types. (Рисунок 14)
Рисунок 14. Меню бизнес-интеграции
-
-
Теперь мы определим атрибуты для бизнес-объекта CreditApplication.
-
Вы можете добавить атрибут, выбрав иконкуAdd Attribute , как показано на рисунке 15.
Рисунок 15. Иконка Добавление Атрибута
-
Введите
customerIdв качестве названия атрибута и примите установленный по умолчанию тип String. (Чтобы изменить тип, вы можете просто выбрать поле типа и выбрать его из ниспадающего окна. Проделайте это для объекта ответа.)
Рисунок 16. Определение атрибута
-
Добавьте еще два атрибута типа String и назовите их
firstNameиlastName. Оба они должны быть строчного типа, как показано ниже.
Рисунок 17. Определение атрибутов
-
Бизнес-объект определяется с использованием стандартного типа схемы XML. Вы можете открыть бизнес-объект при помощи XML, чтобы просмотреть его. (Вы можете открыть бизнес-объект в текстовом редакторе, щелкнув на нем правой кнопкой и выбрав Открыть с помощью=> и текстовый редактор на ваш выбор.)
-
Сохраните и закройте Редактор Бизнес-Объектов.
Рисунок 18. Определенный бизнес-объект
-
Схема XML должна выглядеть приблизительно как приведенный ниже пример программы.
Листинг 9<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://CreditApprovalSCAModule"> <xsd:complexType name="CreditApplication"> <xsd:sequence> <xsd:element minOccurs="0" name="customerId" type="xsd:string"/> <xsd:element minOccurs="0" name="firstName" type="xsd:string"/> <xsd:element minOccurs="0" name="lastName" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
-
-
Теперь мы создадим второй бизнес-объект для представления ответа.
-
Создайте еще один бизнес-объект, следуя вышеописанным шагам. Этот бизнес-объект будет иметь три поля:
- customerId типа string
- creditScore типа int
- creditLimit типа double
-
Как упомянуто ранее, вы можете изменить тип, выбрав колонку типов, как показано на рисунке 19.
Рисунок 19. Изменение типа атрибута
-
Сохраните и закройте Редактор Бизнес-Объектов.
-
Теперь у вас есть два созданных бизнес-объекта.
Определение сервисного интерфейса
Теперь мы готовы создать SCA интерфейс. Кроме того, сервис подтверждения кредита - это сервис типа запрос-ответ, который получает заявку на кредит и одновременно возвращает кредитный рейтинг. Сервисный интерфейс определяет взаимодействие между клиентом сервиса и поставщиком сервиса.
Существует несколько способов создания интерфейса. Если вы выбираете Java интерфейс, то можете использовать для этого инструменты Java Eclipse в WebSphere Integration Developer. В нашем примере, мы создадим WSDL интерфейс из перспективы Business Integration. Вы можете сделать это, используя Assembly Editor (Редактор сборки) или используя вид Business Integration. Мы используем второе. (Мы используем Assembly Editor позже для реализации).
-
Во-первых, мы создадим интерфейс, используя меню вида Business Integration.
-
Щелкните правой кнопкой на иконке меню Interfaces и выберите New => Interfaces, как показано на Рисунке 20.
Рисунок 20. Создание нового интерфейса
-
В меню Новый интерфейс введите имя
CreditApproval. (Помните, что мы используем стандартный пакет и папки в нашем примере в целях иллюстрации. Вы можете выбрать папку для легкой группировки разных интерфейсов по их функциональности.)
Рисунок 21. Создание нового интерфейса
-
-
Интерфейс CreditApproval - это простой WSDL файл. WebSphere Integration Developer поставляется с простым WSDL редактором, который вы можете использовать для построения вашего интерфейса.
-
Когда вы создали Интерфейс, должен был открыться Редактор Интерфейсов. Если он еще не открыт, вы можете дважды щелкнуть на интерфейс в проекции бизнес-интеграция, чтобы открыть его.
-
Во-первых, мы создадим простую операцию запрос-ответ. (Вы также можете создавать односторонние операции для асинхронных запусков, но сейчас мы просто создаем простой синхронный запрос). Нажмите иконку Добавить Операцию Запрос-Ответ (Add Request Response Operation), как показано на рисунке 22.
Рисунок 22. Иконка Добавления Операции Запрос-Ответ
-
В редакторе будет создана операция. Назовите операцию
calculateCreditRating. (Figure 23)
Рисунок 23. Определение операции
-
Теперь нам необходимо определить параметры. Помните, что мы создали два бизнес-объекта: один для ввода, а другой для вывода. После создания операции, выберите иконку Add Input, как показано на рисунке 24.
Рисунок 24. Иконка Add Input
-
Назовите ввод
CreditApplication. -
Выберите колонку Type и найдите бизнес-объект CreditApplicaiton. Как вы можете видеть, теперь бизнес-объект - это допустимый тип, который можно использовать для построения интерфейса, как показано на рисунке 25. (Опционально, вы можете выбрать создание бизнес-объекта здесь.)
Рисунок 25. Новый бизнес-объект теперь допустимый тип
-
Далее, выберите иконку Add Output, как показано на рисунке 26.
Рисунок 26. Иконка Add Output
-
Выберите CreditRating в качестве типа, аналогично тому, как мы сделали с вводом.
Рисунок 27. Определение вывода
-
Сохраните и закройте Редактор Интерфейсов.
-
Если желаете проверить WSDL файл, вы можете щелкнуть правой кнопкой на файле CreditApproval.wsdl в закладке Physical Resources и открыть его в текстовом редакторе. (Рисунок 28)
Рисунок 28. Просмотр WSDL файла
WSDL файл должен выглядеть наподобие приведенного ниже примера.
Листинг 10<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:bons1="http://CreditApprovalSCAModule" xmlns:tns="http://CreditApprovalSCAModule/CreditApproval" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CreditApproval" targetNamespace="http://CreditApprovalSCAModule/CreditApproval"> <wsdl:types> <xsd:schema targetNamespace="http://CreditApprovalSCAModule/CreditApproval" xmlns:bons1="http://CreditApprovalSCAModule" xmlns:tns="http://CreditApprovalSCAModule/CreditApproval" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://CreditApprovalSCAModule" schemaLocation="xsd-includes/http.CreditApprovalSCAModule.xsd"/> <xsd:element name="calculateCreditRating"> <xsd:complexType> <xsd:sequence> <xsd:element name="CreditApplication" nillable="true" type="bons1:CreditApplication"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="calculateCreditRatingResponse">
Листинг 10.1<xsd:complexType> <xsd:sequence> <xsd:element name="CreditRating" nillable="true" type="bons1:CreditRating"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="calculateCreditRatingRequestMsg"> <wsdl:part element="tns:calculateCreditRating" name="calculateCreditRatingParameters"/> </wsdl:message> <wsdl:message name="calculateCreditRatingResponseMsg"> <wsdl:part element="tns:calculateCreditRatingResponse" name="calculateCreditRatingResult"/> </wsdl:message> <wsdl:portType name="CreditApproval"> <wsdl:operation name="calculateCreditRating"> <wsdl:input message="tns:calculateCreditRatingRequestMsg" name="calculateCreditRatingRequest"/> <wsdl:output message="tns:calculateCreditRatingResponseMsg" name="calculateCreditRatingResponse"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
-
Формирование компонентов и обеспечение реализации
Теперь мы готовы создать нашу SCA реализацию. На этой стадии мы создавали стандартные интерфейсы и бизнес-объекты. Теперь мы определим наш SCA компонент. Для этого вы будете использовать Редактор Сборки SCA (SCA Assembly Editor).
-
Во-первых, мы определим SCA компонент.
-
Откройте Редактор Сборки SCA, дважды щелкнув на пункте меню CreditApprovalSCAModule, как показано на рисунке 29.
Рисунок 29. Открытие Редактора Сборки SCA
-
В Редакторе Сборки SCA имеется палитра, которую можно использовать для создания SCA артефактов. Вы также можете перетаскивать определенные артефакты из различных отображений. Просто перетащите интерфейс CreditApproval в Редактор Сборки, как показано на рисунке 30. (В качестве альтернативы, вы также могли бы перетащить компонент Java из палитры и в дальнейшем сопоставить интерфейс.)
Рисунок 30. Перетащите интерфейс в Редактор Сборки
-
Появится текстовое окно. Выберите Component with No Implementation Type (компонент без типа реализации), как показано на рисунке 31.
Рисунок 31. Текстовое окно Создания Компонента
-
Теперь вы должны видеть компонент SCA в Редакторе сборки, названный Component1. (Рисунок 32)
Рисунок 32. Иконка SCA компонента
-
Вы можете поменять имя, выбрав компонент и напечатав имя, или вы можете изменить его, используя Редактор Свойств, как показано на рисунке 33. Измените Отображаемое Имя на
CreditApproval. Поле Имя должно измениться автоматически.
Рисунок 33. Изменение имени компонента
-
-
Теперь у нас есть компонент с интерфейсом, но без реализации. Сейчас мы используем Редактор Сборки для формирования реализации.
-
Сформируйте скелет реализации, щелкнув правой кнопкой на компоненте в Редакторе Сборки и выбрав Generate Implementation => Java. (Рисунок 34)
Рисунок 34. Создание скелета исполнения
-
Новая Java реализация должна открыться в Редакторе Java; вы увидите calculateCreditRating. В файле для загрузки представлен отрывок простой программы, в C:\SCA_ArticleSeries\Part1\CodeSnippet1.txt. Ниже показана методика.
Листинг 11public DataObject calculateCreditRating(DataObject creditApplication) { // создайте и запустите объект credit rating. System.out.println("********* credit approval service invoked ******"); ServiceManager serviceManager = new ServiceManager(); BOFactory bof = (BOFactory)serviceManager.locateService ("com/ibm/websphere/bo/BOFactory"); System.out.println("********* BOFactory created ******"); DataObject creditRating = bof.create("http://CreditApproval", "CreditRating"); System.out.println("********* credit rating object created ******"); creditRating.setString("customerId", creditApplication.getString("customerId")); creditRating.setInt("creditScore", 750); creditRating.setDouble("creditLimit", 10000d); System.out.println("********* returning credit rating object ******"); return creditRating; }
-
-
Программа использует сервис-менеджер SCA, чтобы обнаружить Фабрику Бизнес-Объектов (Business Object Factory), которая используется для создания бизнес-объектов из схем XML. В целях демонстрации, мы создаем Объект Ответных Данных и возвращаем жестко запрограммированные данные.
-
Если вы скопировали эту программу, у вас должны возникнуть некоторые ошибки компиляции. Вы можете решить это, щелкнув правой кнопкой в редакторе и выбрав Source => Organize Imports, как показано на рисунке 35.
Рисунок 35. Решение ошибок
-
Сохраните и закройте Java файл, но оставьте Редактор Сборки открытым.
Поэлементное тестирование элементов SCA
WebSphere Integration Developer предоставляет возможность тестирования элементов с использованием инструмента блочного тестирования. В зависимости от типа SCA реализации вы можете тестировать компоненты в среде J2SE, которая позволяет тестировать компоненты без полного сервера приложений; естественно, это сильно зависит от типа имеющихся у вас компонентов. Реализация Java легко может быть протестирована в среде J2SE, но компоненту SCA, реализованному при помощи потока BPEL, потребуется механизм BPEL, такой как WebSphere Process Server. В нашем примере, мы будем использовать функцию Тестирование Компонентов, чтобы протестировать наш SCA компонент.
Чтобы запустить функцию Тестирование Компонентов:
-
Щелкните правой кнопкой компонент CreditApproval в Редакторе Сборки SCA и выберите Test Component. (Рисунок 36)
Рисунок 36. Запуск функции Тестирование Компонентов
-
Это запустит Редактор Тестирования Компонентов. С правой стороны введите данные для теста, как показано на рисунке 37, затем нажмите Continue (продолжить).
Рисунок 37. Ввод данных для теста
-
Отобразится список доступного времени выполнения (run-times). Выберите Eclipse 1.4 JVM, затем нижмите Finish (закончить). (Рисунок 38)
Рисунок 38. Развертывание выполнения
-
Чтобы начать тест, выберите иконку Return (вернуться), как показано на рисунке 39. Следите за окном Событий, чтобы наблюдать процесс.
Рисунок 39. Окно Событий
-
С правой стороны вы увидите результат. (Рисунок 40)
Рисунок 40. Результаты тестирования элементов
-
Чтобы сделать возможным запуск компонента SCA не-SCA компонентом, упакованном в том же SCA размещении, нам нужно создать автономную ссылку:
-
В Редакторе Сборки SCA выберите стрелку рядом с иконкой Импорта на палитре. Это откроет маленькое подменю. Выберите иконку Standalone references (автономные ссылки) и перетащите ее куда-нибудь в Редактор сборки, как показано на рисунке 41.
Рисунок 41. Создание автономной ссылки
-
Щелкните внутри окна Автономных Ссылок (не на тексте) и перетащите ее на компонент Credit Approval, как показано на рисунке 42.
Рисунок 42. Создание согласованной ссылки
-
Нажмите OK , чтобы создать согласованную ссылку. (Рисунок 43)
Рисунок 43. Создание согласованной ссылки
-
Следующее окно позволит создать Java интерфейс. Помните, что вы создали WSDL интерфейс. Однако, WSDL формирует эквивалентный Java интерфейс, чтобы пользователи Java могли взаимодействовать с реализацией SCA API. Выберите Yes. (Рисунок 44) Помните, что эта модель обычно используется для локальных не-SCA пользователей, которые хотят использовать модель программирования Java, чтобы запускать компоненты для эффективности.
Рисунок 44. Проверка преобразования интерфейса
-
-
Теперь с автономной ссылкой мы можем запускать SCA компоненты из не-SCA компонентов в том же модуле. Помните, SCA модуль реализуется посредством EAR файла, поэтому вы можете добавлять дополнительные J2EE компоненты к SCA модулю. В нашем примере, мы собираемся импортировать существующий WAR файл, в котором содержится JSP файл. WAR файл будет частью базового EAR файла.
-
Выберите File => Import, чтобы открыть мастер импорта. Выберите WAR файл и нажмите Next (далее). (Рисунок 45)
Рисунок 45. Запуск SCA компонентов из не-SCA компонентов
-
Выберите C:\SCA_ArticleSeries\Part1\CreditApprovalClient.war. Отмените выбор Add module to an EAR Project (добавить модуль к Проекту EAR).
Рисунок 46. Импортирование WAR файла
-
Выберите Yes, чтобы переключиться в перспективу Web. (Рисунок 47)
Рисунок 47. Переключение в перспективу Web
-
Откройте JSP файл, чтобы проверить программу. Вы найдете его в директории Dynamic Web Projects, как показано на рисунке 48. JSP файл называется creditApprovalClient.jsp..
Рисунок 48. Директория Dynamic Web Projects
-
Мы используем простой JSP файл, чтобы получить ввод, и SCA API, чтобы запустить SCA компонент. (Помните, что этот JSP следует лучшим традициям, для использования MVC).
-
-
В SCA имеется Редактор Зависимостей, который позволяет добавлять различные пакеты в SCA модуль:
-
Откройте Редактор Зависимостей, щелкнув правой кнопкой на CreditApprovalSCAModule и выбравOpen Dependency Editor. (Рисунок 49)
Рисунок 49. Открытие Редактора Зависимостей
-
Расширьте секцию J2EE, затем нажмите кнопку Add (добавить). (Рисунок 50)
Рисунок 50. Конфигурирование зависимостей
-
Выберите Web-проект CreditApprovalClient, как показано на рисунке 51.
Рисунок 51. Выбор Web проекта
-
Убедитесь, что On Build Path не отмечен. (Построение Пути добавляет этот компонент к classpath SCA модуля. В нашем случае, нам нужно сделать WAR файл зависящим от SCA модуля). Сохраните Редактор Зависимостей. Это сделает WAR файл частью EAR файла.
Рисунок 52. Установление зависимости
-
Чтобы Web проект "увидел" SCA Java интерфейс, щелкните правой кнопкой на Web проекте и выберите Properties (свойства).
-
Перейдите к Java JAR Dependencies и выберите CreditApprovalSCAModuleEJBClient.jar - полученный JAR файл EJB пользователя, который генерируется в зависимости от него. (Рисунок 53)
Рисунок 53. Установление зависимости
-
Закройте редактор. На этой стадии вы можете выбрать создание полного построения (full build). Это может быть не обязательно, но мы всегда предпочитаем провести полное построение перед инсталляцией. Если у dас автоматическое построение, можете воспользоваться функцией Clean (очистить), как показано на рисунке 54.
Рисунок 54. Чистка для автоматических построений
-
-
Теперь мы готовы инсталлировать и тестировать наш SCA компоенет и Web клиент WebSphere Process Server. Помните, наш SCA модуль реализован приложением J2EE. Вы можете переключиться на перспективу J2EE, чтобы просмотреть артефакты. Не забывайте, что это сгенерированные артефакты. (Мы расскажем об этом позже в данном цикле статей.)
Рисунок 55. Перспектива J2EE
-
Переключитесь на вид Серверы в нижней части перспективы Business Integration. Щелкните правой кнопкой на WebSphere Process Server и выберите Start (начало), как показано на рисунке 56.
Рисунок 56. Запуск WebSphere Process Server
-
Подождите, пока сервер стартует. Проверьте консоль и дождитесь сообщений, показанных на рисунке 57.
Рисунок 57. сообщения запуска WebSphere Process Server
-
Снова щелкните правой кнопкой на сервере и выберите Add and remove projects (добавление и удаление проектов). (Рисунок 58)
Рисунок 58. Добавление и удаление проектов
-
Выберите CreditApprovalSCAModuleAdd и выберите Add (добавить), как показано на рисунке 59. Это выделит окно Сконфигурированных проектов справа.
Рисунок 59. Конфигурирование проектов на сервере
-
Следите за прогрессом в нижнем правом углу, и дождитесь, пока приложение не инсталлируется. (Рисунок 60)
Рисунок 60. Датчик инсталляции проекта
-
Проверьте на консоли, что CreditApporvalSCAModuleApp стартовал. (Рисунок 61)
Рисунок 61. Сообщения административной консоли
-
Переключитесь на Web перспективу. Щелкните правой кнопкой на JSP и выберите Run => Run on Server, как показано на рисунке 62.
Рисунок 62. Запуск приложения
-
Выберите существующий WebSphere Process Server и выберите Set server as project default (установить сервер, как проект по умолчанию), затем Finish. (закончить). (Рисунок 63)
Рисунок 63. Установка сервера
-
Когда приложение выполнится, введите данные теста приложения, показанные на рисунке 64.
Рисунок 64. Ввод данных теста SCA приложения
-
У вас должны получиться результаты, показанные на рисунке 65.
Рисунок 65. Результаты теста SCA приложения
-
Закройте браузер и остановите сервер.
-
Поздравляем, вы только что создали и протестировали свой первый SCA компонент!
Компонентная Архитектура Сервисов (SCA) - это большой сдвиг в сервис-ориентированных архитектурах (SOA). SCA дает нам модель программирования для SOA и будет служить основой для интеграции многие годы. Будьте в курсе предстоящих статей этой серии, которые опишут детали отдельных функций SCA, и преимущества, которые они могут дать для ваших приложений.
- Часть 2: Сборка компонентов SCA
- Часть3: Интеграция модулей SCA с помощью импорта и экспорта
- Часть4: Интеграция JMS с Web сервисами
| Имя | Размер | Метод загрузки |
|---|---|---|
| SCA_ArticleSeries.zip | 4 KB | FTP |
- Оригинал статьи
IBM WebSphere Developer Technical Journal: Building SOA solutions with the Service Component Architecture -- Part 1.
-
WebSphere Process Server: Новый базис IBM для SOA
-
Введение в Сервисный Объект Данных (SDO)
-
Простой доступ к данным (SDA) с помощью SDO
Джефф Брент (Jeff Brent) - инженер-консультант по программному обеспечению для команды Сервис-Ориентированной Архитектуры и технический лидер для WebSphere Process Server SWAT из West Palm Beach, Флорида. В свободное время он любит проводить время с семьей и играть в баскетбол.
Роланд Барсиа (Roland Barcia) - дипломированный специалист по информационным технологиям для IBM Software Services for WebSphere в области New York/New Jersey Metro. Он является соавтором IBM WebSphere: Развертка и дополнительные конфигурации.