Джейн Фанг, разработчик программного обеспечения, IBM Toronto Lab
Оглавление
Введение
WebSphere Integration Developer представляет собой средство разработки, основанное на Eclipse. Используя его, компании могут создавать гибкие решения, основанные на архитектуре SOA (service-oriented architecture), путем объединения бизнес-служб. Бизнес-служба - это программная функция, представленная в виде компонента, который можно повторно использовать в других приложениях. В сущности, создание SOA-решения заключается в создании и компоновке бизнес-служб. WebSphere Integration Developer позволяет создавать бизнес-службы, реализованные с бизнес-правилами, пользовательскими заданиями, бизнес-машинами состояния (business state machine) и промежуточными потоками (mediation flow) в корпоративной служебной шине (enterprise service bus - WESB).
WebSphere Integration Developer предназначен для использования специалистами по интеграции. Работа специалиста по интеграции заключается в интеграции существующих служб для создания новых IT-решений, отвечающих постоянно меняющимся бизнес-требованиям. Эти пользователи не являются экспертами по платформе Java™, WSDL или XSD. Они занимаются интеграцией приложений, автоматизацией своих систем и предоставлением новых каналов для своих клиентов. На рисунке 1 показана взаимосвязь между навыками специалиста по интеграции и другими ролями.
Рис. 1. Взаимосвязь между навыками специалиста по интеграции и другими ролями
Специалист по интеграции берет на себя то, что остается за пределами компетенции бизнес-аналитика - разработку интегрированного приложения, его тестирование и отладку. Он использует бизнес-службы для компоновки решения в WebSphere Integration Developer. Примерами бизнес-служб являются Web-службы и SCA-службы (service component architecture). Если вы уже знакомы с Web-службами, то знаете, что они могут создаваться в виде Java-классов, EJB-компонентов (Enterprise JavaBean) или даже кода Microsoft™ .NET. SCA предоставляет модель для определения интерфейсов, реализаций и ссылок, являющихся независимыми от какой-либо конкретной технологии.
Для создания новых бизнес-служб в WebSphere Integration Developer вы можете использовать типы реализации служб . Существует много типов реализации служб, которые вы можете использовать для создания новых служб, включая бизнес-процессы, бизнес-правила, бизнес-машины состояния и пользовательские задания. Все типы реализации служб имеют одну общую характеристику: все они описываются при помощи открытого стандартного WSDL-интерфейса (Web Service Description Language).
Снимок экрана WebSphere Integration Developer, приведенный на рисунке 2, показывает WSDL-файл. В данном примере используется двунаправленная операция под названием operation1
. Двунаправленная операция всегда имеет входное и выходное сообщения. Оба сообщения используют бизнес-объект Employee
в качестве своего типа.
Рис. 2. Пример WSDL-интерфейса
Бизнес-объект - это объект, который используется для сбора бизнес-данных. В WebSphere Integration Developer бизнес-объекты используются для сбора и обмена данными между типами реализации служб. На рисунке 3 показан пример базнес-объекта Employee
. Он имеет четыре атрибута: empName
, empRating
, empBonus
и empStartDate
. Для каждого атрибута определен тип; в данном примере такими типами являются: string
, int
, double
и date
соответственно.
Рис. 3. Пример бизнес-объекта
Все артефакты, созданные в WebSphere Integration Developer, сохраняются в модулях . Модуль является, по существу, проектом, в котором вы храните все ваши артефакты. Вы можете также использовать для хранения артефактов библиотеку , которая может совместно использоваться несколькими модулями. Модуль, имеющий зависимость от библиотеки, может обращаться ко всем артефактам, хранящимся в этой библиотеке.
При создании модуля в WebSphere Integration Developer вы в действительности создаете J2EE-приложение (Java 2 Platform, Enterprise Edition). Модуль пакетируется и развертывается на WebSphere Process Server как EAR-файл (WebSphere Integration Developer поставляется со встроенным сервером WebSphere Process Server, который позволяет выполнять модульное тестирование прямо в рабочей области). При развертывании на сервере библиотека просто копируется во все модули, которые от нее зависят, в виде вспомогательных JAR-файлов.
Типы реализации служб
Перед началом работы давайте кратко рассмотрим различные типы реализации служб, которые вы создадите в данном руководстве.
Бизнес-процессы
Созданные в WebSphere Integration Developer бизнес-процессы основаны на открытом стандартном языке BPEL ( Business Process Execution Language for Web Services ). BPEL - это язык, предназначенный для автоматизации бизнес-процессов. IBM предоставляет расширение стандарта BPEL, обеспечивающее более расширенную функциональность.
Бизнес-правила
Бизнес-правила могут быть реализованы в двух форматах: как наборы правил или как таблицы решений . Набор правил обычно состоит из правил if-then. Таблица решений может выражать логику простых правил в табличном формате. Выбор того, какое бизнес-правило активизировать, основан на выборе даты в группе правил .
В SCA типы реализации служб отображают свои функции в виде служб через интерфейсы. Эти типы реализации служб известны как компоненты служб
. Компоненты служб могут быть соединены друг с другом в сборочной диаграмме
(assembly diagram). Каждый модуль содержит сборочную диаграмму, позволяющую отображать интерфейс компонента служб с использованием открытых стандартов, таких как Java-код или WSDL. Кроме того, сборочная диаграмма может использоваться для определения зависимостей между различными компонентами путем соединения компонентов служб вместе в сборочной диаграмме.
На рисунке 4 показана простая сборочная диаграмма, в которой компонент бизнес-процесс (NewBpelProcess) соединен с компонентом бизнес-правило (MyRG). Это означает, что бизнес-процесс вызывает бизнес-правило, и что компонент NewBpelProcess имеет ссылку на компонент MyRG. Вы будете иметь шанс создать такое приложение в Задании 3.
Рис. 4. Пример сборочной диаграммы
В действительности корпоративное приложение намного сложнее, чем то, которое вы видите на рисунке 4. Компонент может вызывать не только другой SCA-компонент, но и обычную Web-службу или даже EJB-компонент. Более того, он может отображать себя в виде Web-службы, которая может использоваться в других приложениях.
Как WebSphere Integration Developer вписывается в концепцию SOA?
Одной из сильных сторон программы WebSphere Integration Developer является ее способность компоновать бизнес-службы для создания интегрированных решений, основанных на SOA. В каждом интегрированном бизнес-решении будет присутствовать бизнес-постановка (business choreography) или корпоративная служебная шина, либо и то, и другое. Главным значимым предложением программы WebSphere Integration Developer является то, что она предоставляет как бизнес-постановку, так и корпоративную служебную шину для создания интегрированных бизнес-решений.
Как вы можете увидеть на рисунке 5, WebSphere Integration Developer принадлежит фазе компоновки SOA-цикла. Это позволяет легко и быстро создавать основанные на SOA интегрированные бизнес-решения с использованием графических интерфейсов. Кроме того, типы реализации служб могут быть отображены как SCA-компоненты, выступающие в качестве строительных блоков для других интегрированных приложений. WebSphere Integration Developer еще более увеличивает гибкость, отображая компоненты служб как Web-службы.
Рис. 5. Место WebSphere Integration Developer в SOA-цикле
Практические задания и начало работы с WebSphere Integration Developer
В данном руководстве вы выполните три практических задания.
Задание 1
- Создать простой бизнес-процесс, распечатывающий строку и присваивающий значение в выходное сообщение.
- Развернуть модуль на сервере WebSphere Process Server.
- Запустить и протестировать бизнес-процесс.
Задание 2
- Создать бизнес-правило, содержащее несколько правил if-then.
- Развернуть и протестировать бизнес-правило.
Задание 3
- Расширить правило, созданное в Задании 2, новым бизнес-процессом.
- Вызвать компонент бизнес-правила из бизнес-процесса.
- Развернуть и протестировать модуль.
Обратите внимание на то, что Задание 3 развивает Задание 2; поэтому мы рекомендуем выполнить задания 2 и 3 за один прием.
Перед началом выполнения конкретных заданий необходимо запустить WebSphere Integration Developer, если вы еще этого не сделали.
- В Windows выберите Start > Programs > IBM WebSphere > Integration Developer v6.0.1 > WebSphere Integration Developer v6.0.1; в Linux выполните команду
wid
в командной строке (в данном руководстве мы будем описывать Windows-версию команд; для Linux-платформы выполните, пожалуйста, все необходимее корректировки).
- Отображается окно, запрашивающее рабочий каталог. Нажмите кнопку OK для выбора значения по умолчанию.
- TПервой страницей, которую вы увидите, будет страница Welcome (Приветствие). Закройте ее. Отобразится перспектива Business Integration, и вы можете начинать работу!
Практическое задание 1: Создание бизнес-процесса
В данном практическом задании вы создадите и запустите простой бизнес-процесс. Как упоминалось ранее, BPEL-процессы, как и другие компоненты, описываются WSDL-интерфейсом. В данном задании используйте WSDL-интерфейс по умолчанию, который генерирует мастер создания BPEL. Интерфейс по умолчанию не содержит каких-либо бизнес-объектов; для ввода и вывода он будет использовать строку, а не бизнес-объект.
Прежде всего, создайте проект модуля под названием MyBpelModule.
- В рабочей области (workbench) выберите File > New > Project.
- Выберите Module > Next. Вы увидите окно New Module, показанное на рисунке 6.
- Введите
MyBpelModule
в качестве названия проекта. Нажмите кнопку Finish.
Рис. 6. Окно New module
Затем создайте бизнес-процесс с названием MyBpelProcess. Этот бизнес-процесс будет использовать интерфейс по умолчанию, который создается мастером.
- В перспективе Business Integration нажмите правой кнопкой мыши на MyBpelModule и выберите New > Business Process.
- Введите
MyBpelProcess
в качестве имени нового бизнес-процесса. Нажмите кнопку Next.
- Подтвердите значения по умолчанию и нажмите кнопку Next. Поскольку вы отметили флажок Generate a new Interface, мастер создаст новый интерфейс, использующий строку в качестве типа сообщения для ввода и вывода.
- Подтвердите значения по умолчанию, что оставит не отмеченным флажок Disabled IBM Extension, и нажмите кнопку Finish. Значение по умолчанию создает бизнес-процесс, используя расширение IBM BPEL.
Новый бизнес-процесс выглядит так, как изображено на рисунке 7. Давайте исследуем его. Если вы посмотрите на WSDL-интерфейс по умолчанию, сгенерированный мастером, то заметите, что интерфейс имеет одно входное сообщение и одно выходное. Для просмотра интерфейса разверните MyBpelModule в виде Business Integration, разверните Interfaces и выполните двойной щелчок кнопкой мыши на интерфейсе MyBpelProcess, чтобы открыть его в редакторе.
Для входного и выходного сообщения в интерфейсе бизнес-процесс содержит узлы receive и reply соответственно. Узел receive принимает входное сообщение, а узел reply отвечает выходным сообщением. В сгенерированном BPEL-процессе есть переменная Input1
. Не путайте эту переменную с входным сообщением в файле интерфейса; они оба случайно имеют название input1
. Одно название - это переменная в BPEL-процессе, а второе - это входное сообщение в WSDL-файле.
Переменная Input1
BPEL-процесса имеет строковый тип (string
). Строка используется как входное сообщение в узле receive, а также как выходное сообщение в узле reply. Это означает, что если кто-либо вызывает бизнес-процесс, он должен предоставить входное сообщение, имеющее тип string
. Это сообщение принимается узлом receive, и входное значение помещается в переменную Input1
. Более того, бизнес-процесс отвечает выходным сообщением, содержащим значение Input1
. Поскольку это простой BPEL-процесс, входное и выходное сообщения используют одну и ту же переменную; однако в большинстве BPEL-процессов входные и выходные сообщения имеют свои собственные значения. Вы увидите это в следующем практическом задании.
Рис. 7. Создание нового бизнес-процесса: MyBpelProcess
Если вам нужно реализовать в приложении некоторую специфичную логику, WebSphere Integration Developer предлагает несколько возможных вариантов. Одним из них является редактор визуальных компонентов (snippet), позволяющий создавать логику визуально без написания какого-либо кода.
В данном задании вы создадите визуальный компонент, который будет выполнять два логических действия. Первое - вывод строки на консоль. Второе - присвоение жестко закодированного значения переменной Input1
. Как упоминалось ранее, входное сообщение сохраняется в Input1
. На данном шаге создайте первое логическое действие, использующее визуальный компонент для вывода значения Input1
.
- В BPEL-редакторе MyBpelProcess нажмите правой кнопкой мыши на узле Reply и выберите Insert Before > Snippet.
В BPEL-редакторе можно добавить в бизнес-процесс много различных узлов. Вы можете использовать либо палитру в левой части канвы, либо пункт меню Insert Before, как показано на рисунке 8. В целях упрощения в данном руководстве используется последний метод.
Рис. 8. Вы можете использовать палитру канвы, либо меню Insert Before для вставки узла в BPEL-процесс
- Выберите только что созданный узел Snippet. В виде Properties перейдите в закладку Details. Если вид Properties не открыт, перейдите в Window > Show Views > Other. Разверните Basics, выберите Properties и нажмите кнопку OK.
- В закладке Details узла Snippet проверьте, что выбран вариант Visual. Если бы вы выбрали Java, то должны были бы ввести Java-код вручную. Выбирая Visual, вы можете сформировать Java-код в графическом режиме.
- Выберите пиктограмму Expression () в палитре и перенесите ее на панель редактора визуальных компонентов. Обратите внимание на то, что вы не должны выполнять действие "перетяни и отпусти" (drag and drop). Просто нажмите на пиктограмме Expression, а затем нажмите опять на канве для перемещения пиктограммы. Для представления такого значения, как жестко закодированная строка или переменная, используется выражение.
- Нажмите кнопкой мыши внутри только что добавленного выражения и выберите Input1, как показано на рисунке 9.
Рис. 9. Выбор Input1 в выражении
- Выберите пиктограмму Standard () в палитре. Откроется окно Add a Standard Visual Snippet.
- Разверните папку utility и выберите print to log, как показано на рисунке 10. Нажмите кнопку OK.
Рис. 10. Выбор стандартного визуального компонента print to log
- Поместите действие print to log utility на панель редактора визуальных компонентов.
- Соедините узел переменной Input1 с узлом print to log. Это делается путем выбора правой соединительной точки узла выражения Input1 и присоединения ее к левой соединительной точке узла print to log.
Рис. 11. Присоединение Input1 к узлу print to log
Вы подсоединили узел переменной Input1
к узлу print to log. Этот компонент выводит значение Input1 на Console в журнал работы сервера. На следующем шаге к выходному значению добавляется текст Modified Output
.
Как упоминалось ранее, выходное сообщение использует переменную Input1
. Следовательно, для изменения значения выходного сообщения вы просто должны изменить значение Input1.
- В том же редакторе визуальных компонентов, который вы использовали на шаге 3, добавьте узел Expression на панель редактора. Новый узел должен появиться после существующих узлов Input1 и print to log.
- Нажмите левой кнопкой мыши внутри только что добавленного узла Expression и введите
Modified Output
(включая кавычки) непосредственно в узел.
- Добавьте еще один узел Expression на панель редактора и выберите Input1.
- Подсоедините узел "Modified Output" к узлу Input1. Это эквивалентно установке значения переменной
Input1
в "Modified Output".
- Сохраните файл.
В результате визуальный компонент должен выглядеть так, как показано на рисунке 12.
Рис. 12. Законченный визуальный компонент
Вы создали бизнес-процесс. Однако есть еще один последний шаг, который нужно сделать для получения возможности запуска бизнес-процесса: вы должны указать процесс в сборочной диаграмме. У вас имеется только один компонент в данном модуле; следовательно, добавьте только BPEL бизнес-процесс в редактор сборочной диаграммы.
- В виде Business Integration разверните папку MyBpelModule. Выполните двойной щелчок мыши на MyBpelModule, как показано на рисунке 13. Откроется редактор сборочных диаграмм. В данный момент редактор полностью пуст; добавьте в него компонент MyBpelProcess.
Рис. 13. Выполнение двойного щелчка мыши на MyBpelModule для открытия редактора сборочной диаграммы
- В виде Business Integration разверните Business Logic > Processes. Выберите MyBpelProcess и поместите его в редактор сборочной диаграммы.
- Сохраните файл. Полученная сборочная диаграмма показана на рисунке 14.
Рис. 14. Добавьте MyBpelProcess в редактор сборочных диаграмм
На данном шаге вы запустите бизнес-процесс на встроенном сервере WebSphere Process Server. По умолчанию WebSphere Process Server уже добавлен в вид Servers. Вы должны добавить проект на сервер перед тем, как сможете запустить его.
- Перейдите в вид Servers. Нажмите правой кнопкой мыши на WebSphere Process Server v6.0 и выберите Start.
- Дождитесь начала работы сервера. Если с запуском сервера имеются какие-то проблемы, попробуйте запустить его из командной строки. Найдите каталог <WID_INSTALL>/pf/wps/logs/server1. Посмотрите, существует ли файл server1.pid. Если да, это означает, что ваш сервер запустился, и вы должны остановить и перезапустить его для тестирования вашего процесса. Для остановки сервера откройте командную строку и перейдите в каталог <WID_INSTALL>/runtimes/bi_v6/bin. Выполните команду
stopserver server1
. Сервер остановится. После этого запустите его снова при помощи команды startserver server1
. Сервер автоматически перейдет в состояние Started в виде Servers.
- Нажмите правой кнопкой мыши на WebSphere Process Server v6.0 и выберите Add and remove projects, как показано на рисунке 15.
Рис. 15. Добавление и удаление проектов из WebSphere Process Server v6.0
- Добавьте MyBpelModuleApp из Available projects в Configured projects. Нажмите кнопку Finish.
- Внизу справа вы должны увидеть индикатор процесса выполнения, указывающий на то, что процесс публикации выполняется. Подождите до тех пор, пока этот процесс не завершится.
После добавления проекта на сервер вы можете выполнить BPEL бизнес-процесс, используя BPC Explorer или тестовую интегрированную среду компонентов. В данном практическом задании вы выполните BPEL-процесс, используя BPC Explorer; в следующем задании вы увидите, как использовать тестовую интегрированную среду компонентов. Обратите внимание на главное отличие между BPC Explorer и тестовой интегрированной средой компонентов - BPC Explorer может выполнять только BPEL-процессы. В отличие от него тестовая интегрированная среда компонентов может выполнять любые компоненты SCA-служб.
- Запустите BPC Explorer. Нажмите правой кнопкой мыши на WebSphere Process Server v6.0 и выберите Launch > BPC Explorer, как показано на рисунке 16.
Рис. 16. Запуск BPC Explorer
BPC Explorer загружается во внутреннем браузере WebSphere Integration Developer. URL по умолчанию для BPC Explorer - http://localhost:9080/bpc. Вы можете также открыть BPC Explorer во внешнем браузере, используя этот URL. Вы можете использовать как внутренний, так и внешний браузер для запуска экземпляра бизнес-процесса. Обратите внимание на то, что если у вас установлено более одного WebSphere Server, ваш номер порта не должен быть равен 9080.
- Выберите ссылку My Process Templates в левом навигационном меню. При этом отобразятся все развернутые бизнес-процессы, которые вы можете запустить.
- Отметьте флажок возле MyBpelProcess и нажмите кнопку Start Instance. При этом отобразится входная страница, на которой вы можете ввести входное значение для запущенного экземпляра BPEL, как показано на рисунке 17.
Рис. 17. Запуск экземпляра MyBpelProcess
- Введите
a
в текстовое окно input1 и нажмите кнопку Submit. При этом запустится экземпляр BPEL-процесса с входным сообщением, имеющим строковое значение "a".
Рис. 18. Запуск экземпляра MyBpelProcess с входным значением, равным a
BPEL-процесс завершается, и вы должны увидеть экран с выходным сообщением, показанный на рисунке 19. Если вы помните, исходный код, помещенный вами в визуальный компонент, сначала отображает входное значение на консоли, а затем изменяет выходное значение на "Modified Output". На этой странице вы можете увидеть, что выходное значение изменилось так, как и ожидалось. Более того, если вы перейдете в вид Console, то также увидите, что входное значение "a" распечаталось в консоли.
Рис. 19. Законченный MyBpelProcess
Отличная работа! Вы закончили первое практическое задание. Возможно, сейчас подходящее время для перерыва, поскольку вы должны будете выполнить второе и третье задания за один прием.
Практическое задание 2: Создание бизнес-правила
Как упоминалось ранее, существует два типа бизнес-правил: набор правил и таблицы решений . Набор бизнес-правил обеспечивает большую гибкость при реализации сложной бизнес-логики. С другой стороны, таблицы решений предназначены для обработки логики базовых бизнес-правил. Таблица решений не обладает такой гибкостью, как набор правил; однако предлагает более простой подход к реализации логики простого правила в табличном формате. В данном практическом задании вы создадите набор правил в новом модуле под названием MyBRModule. Обратите внимание на то, что третье практическое задание будет повторно использовать этот модуль и набор правил.
Прежде всего, создайте новый модуль MyBRModule.
- В рабочей области выберите File > New > Project.
- Выберите Module > Next.
- Введите
MyBRModule
в качестве имени проекта. Нажмите кнопку Finish.
Затем создайте бизнес-объект под названием Employee. В предыдущем практическом задании вы использовали только простую строку в качестве типа входного и выходного сообщений в файле интерфейса. В данном задании вы будете использовать в качестве типа входного и выходного сообщений бизнес-объект.
- Разверните проект MyBRModule и нажмите правой кнопкой мыши на Data Types. Выберите New > Business Object.
- Введите
Employee
в качестве имени. Нажмите кнопку Finish. Откроется редактор бизнес-объектов.
- В редакторе бизнес-объекта Employee нажмите пиктограмму add an attribute to a business object. К бизнес-объекту добавляется атрибут attribute1, имеющий тип
string
.
- Измените имя attribute1 на empName и оставьте его тип как
string
.
- Повторите Шаг 4 для добавления еще трех атрибутов: empRating, тип
int
; empBonus, тип double
; и empStartDate, тип date
.
- Сохраните файл.
Законченный бизнес-объект должен выглядеть так, как показано на рисунке 20.
Рис. 20. Завершенный бизнес-объект Employee
В отличие от мастера создания бизнес-процесса мастер создания бизнес-правила не генерирует интерфейсы по умолчанию. Вы должны предоставить WSDL-интерфейс. Создаваемый вами интерфейс содержит операцию request and response, которая имеет один вход и один выход.
- Разверните MyBRModule. Нажмите правой кнопкой мыши на Interfaces и выберите New > Interface.
- Введите
MyBRInterface
в качестве имени нового интерфейса и нажмите Finish.
- Нажмите пиктограмму Add request and response operation для добавления операции. Добавляется новая операция
operation1
. Вы можете изменить имя операции по вашему усмотрению, однако в данном руководстве оставьте имя по умолчанию.
- Нажмите на пиктограмму Add Input для добавления входа.
- Используйте ниспадающее меню для изменения типа со
string
на Employee
. Это бизнес-объект, который мы создали на Шаге 2 в данном задании.
- Нажмите на пиктограмму Add Output для добавления выхода.
- Снова используйте ниспадающее меню для изменения типа со
string
на Employee
.
- Сохраните файл.
Созданный вами интерфейс должен выглядеть так, как показано на рисунке 21.
Рис. 21. Законченный MyBRInterface
Теперь создайте группу правил . Группа правил представляет собой логическую группу наборов правил и таблиц решений. Основываясь на выборе даты, группа правил будет выбирать набор правил или таблицу решений для выполнения. Группа правил имеет несколько частей: несколько записей выбора даты, критерий выбора и назначение по умолчанию. При вызове группы правил назначение выбирается на основе выбора даты. Назначением может быть либо набор правил, либо таблица решений, которые реализуют реальную логику бизнес-правила.
- Разверните MyBRModule > Business Logic. Нажмите правой кнопкой мыши на Rule Groups и выберите New > Rule Group.
- Введите
MyRG
в качестве имени и нажмите кнопку Next.
- Из ниспадающего меню выберите MyBRInterface, который является интерфейсом, созданным вами на Шаге 3 данного задания. Нажмите кнопку Finish; откроется редактор группы правил.
- В редакторе выберите operation1 в левой панели.
- Нажмите пиктограмму Add Date Selection Entry в правой панели, чтобы добавить запись выбора даты для operation1. Добавляется запись выбора даты, которая состоит из даты начала, даты конца и назначения.
- Измените поле Start Date на 1-Jan-2006.
- Измените поле End Date на 1-Jan-2007.
- Нажмите кнопку Enter Destination и выберите New Ruleset, как показано на рисунке 22. Появляется мастер создания набора правил.
Рис. 22. Создание нового набора правил
- Введите
MyRuleSet
в качестве имени и нажмите кнопку Finish.
- Появится редактор набора правил. Перейдите обратно в редактор MyRG и сохраните файл.
Ваша группа правил должна выглядеть так, как показано на рисунке 23.
Рис. 23. Законченный MyRG
Поскольку критерием выбора является current date , группа правил использует текущую дату для выбора назначения, являющегося набором правил, который вы создадите на следующем шаге. Если текущая дата попадает в промежуток между 1 января 2006 и 1 января 2007, для выполнения выбирается MyRuleSet. Вы можете добавить дополнительные записи выбора даты с различными критериями выбора и назначениями. Например, вместо текущей даты вы можете использовать дату из бизнес-объекта. Просто выберите параметр XPath в критерии выбора, и вам будет разрешено выбирать дату из бизнес-объекта. Кроме того, вы можете также написать Java-код для возврата любой java.util.Date
в качестве критерия выбора даты.
Набор правил содержит реальную логику бизнес-правила. Создайте несколько следующих правил if-then:
- Если рейтинг сотрудника ( empRating ) равен 1, тогда его бонус ( empBonus ) равен 10 процентам.
- Если рейтинг сотрудника ( empRating ) равен 2, тогда его бонус ( empBonus ) равен 5 процентам.
- Если рейтинг сотрудника ( empRating ) равен 3, тогда его бонус ( empBonus ) равен 1 проценту.
- В редакторе MyRuleSet нажмите пиктограмму Add If-Then Rule в разделе Rules; создается Rule1.
- Нажмите ссылку Condition. Разверните input1 и выберите empRating, как показано на рисунке 24.
Рис. 24. Разверните empRating
- Выберите == (два знака равенства) из ниспадающего списка. Выберите Number и введите
1
, затем нажмите Enter.
- Нажмите ссылку Action. Разверните output1 и выберите empBonus. Примечание: Будьте внимательны: выберите output1, а не input1.
- Выберите = из ниспадающего списка, а затем - Number. Введите
10
и нажмите Enter.
Окончательное правило Rule1 должно выглядеть так, как показано на рисунке 25.
Рис. 25. Законченное правило Rule1
Все три правила имеют, в основном, один и тот же формат, за исключением значений; следовательно, вы можете использовать одну из замечательных функциональных возможностей, имеющихся в редакторе - шаблоны правил . Шаблон правил позволяет повторно использовать правила. Вы преобразуете Rule1 в шаблон правил, а затем создадите другие ваши правила на основе этого шаблона.
- Нажмите правой кнопкой мыши на Rule1 и выберите Convert Rule to Template. В нижней части редактора добавится шаблон Template_Rule1. Это шаблон, который вы будете использовать в качестве основы при создании оставшихся правил.
- Нажмите пиктограмму Add Template Rule в разделе Rules и выберите Template_Rule1, как показано на рисунке 26. Добавится новое правило под названием Rule2, основанное на шаблоне Template_Rule1.
Рис. 26. Добавление Template_Rule1
- Нажмите на первую ссылку Enter Value и введите
2
.
- Нажмите вторую ссылку Enter Value и введите
5
. Это эквивалентно созданию правила, указывающего "Если рейтинг сотрудника равен 2, его бонус равен 5 процентов".
- Повторите шаги с 2 до 4. Введите
3
для empRating и 1
для empBonus.
- Сохраните файл. В виде Problems не должно быть ошибок.
Законченный набор правил должен выглядеть так, как показано на рисунке 27.
Рис. 27. Законченный MyRuleSet
Аналогично BPEL бизнес-процессу, группа правил представляет собой компонент, который нужно добавить в сборочную диаграмму перед тем, как его можно будет выполнить.
- В виде Business Integration разверните папку MyBRModule и выполните двойной щелчок мыши на MyBRModule для открытия сборочной диаграммы.
- В виде Business Integration разверните Business Logic > Rule Groups. Выберите MyRG и поместите его в редактор сборочной диаграммы.
- Сохраните файл.
На данном шаге вы опубликуете ваш новый модуль на сервере.
- Запустите сервер, если он еще не запущен.
- Нажмите правой кнопкой мыши на WebSphere Process Server v6.0 и выберите Add and remove projects.
- Добавьте MyBRModuleApp из Available projects в Configured projects. Нажмите кнопку Finish. Дождитесь завершения процесса публикации.
На данном шаге вы будете использовать интегрированную среду компонентов для тестирования группы правил. Вы не можете использовать BPC Explorer, который использовали в первом практическом задании, поскольку он может вызывать только BPEL бизнес-процессы.
- Нажмите правой кнопкой мыши на панели сборочной диаграммы MyBRModule и выберите Test Module.
- Введите
1
в столбце значений empRating, как показано на рисунке 28, и нажмите кнопку Continue. Отобразится запрос места развертывания; просто нажмите кнопку Finish для использования значений по умолчанию.
Рис. 28. Тестирование модуля в MyRG
- Вы увидите результаты в той же таблице. Попробуйте другой рейтинг сотрудника и посмотрите, какое значение бонуса вы получите. Нажмите кнопку Invoke в верхней правой части редактора для повторного запуска группы правил. После завершения тестирования закройте редактор MyBRModule_Test. При запросе не выполняйте сохранение.
Группа правил должна выглядеть так, как показано на рисунке 29.
Рис. 29. Тестирование модуля в MyRG
В практическом задании 3 вы будете повторно использовать модуль из задания 2.
Практическое задание 3: Вызов другого компонента
Одной из ключевых возможностей программы WebSphere Integration Developer является ее способность создавать новые решения путем компоновки существующих компонентов. BPEL бизнес-процесс и группа бизнес-правил являются одними из многих компонентов, которые вы можете вызывать.
В данном практическом задании вы узнаете, как вызывать другой компонент из бизнес-процесса. Вы добавите новый бизнес-процесс к существующему проекту MyBRModule и будете использовать этот новый процесс для вызова группы правил, созданных в практическом задании 2.
Прежде всего, создайте бизнес-процесс под названием NewBpelProcess.
- В перспективе Business Integration нажмите правой кнопкой мыши на MyBRModule и выберите New > Business Process.
- Введите
NewBpelProcess
в качестве имени. Нажмите кнопку Next.
- Используйте значения по умолчанию и нажмите кнопку Finish.
На данном шаге вы измените бизнес-процесс для вызова группы правил MyRG. Для этого вы сначала должны создать ссылающегося участника, который ссылается на файл интерфейса группы правил. Затем вы будете использовать узел invoke для вызова ссылающегося участника.
- В BPEL-редакторе нажмите пиктограмму Add Reference Partner.
- Измените имя участника на
RuleGroupPartner
, как показано на рисунке 30.
Рис. 30. Добавление ссылающегося участника RuleGroupPartner
- Выберите RuleGroupPartner, а затем вид Properties. Перейдите в закладку Details.
- Нажмите Browse, как показано на рисунке 31, для выбора MyBRInterface. Нажмите кнопку OK.
Рис. 31. RuleGroupPartner в виде Properties
Теперь добавим переменную. Переменная имеет тип данных Employee
; это бизнес-объект, созданный вами в последнем практическом задании.
- Нажмите пиктограмму Add Variable для добавления новой переменной.
- Измените имя переменной на
employee
, как показано на рисунке 32.
Рис. 32. Добавление новой переменной под названием employee
- Перейдите в вид Properties. Перейдите в закладку Details.
- Нажмите кнопку Browse. Выберите Employee и нажмите кнопку OK.
На данный момент времени все должно выглядеть так, как показано на рисунке 33.
Рис. 33. Вид Properties переменной employee
Теперь добавьте узел invoke для вызова RuleGroupPartner. При использовании узла invoke предоставьте ссылающегося участника, которого вы будете вызывать. Более того, вам также необходимо предоставить входную и выходную переменные. При вызове вашей группы правил ожидается входное сообщение, имеющее тип Employee
, и возвращается выходное сообщение того же типа.
- Нажмите правой кнопкой мыши на узле Reply и выберите Insert Before > Invoke. Узел Invoke добавится между узлами Receive и Reply.
- Выберите узел Invoke и перейдите в вид Properties.
- Перейдите в закладку Details.
- Нажмите кнопку Browse для выбора RuleGroupPartner.
- Отметьте флажок Use Data Type Variables.
- Для переменной
input1
выберите пиктограмму ... и выберите employee.
- Выберите employee для переменной
output1
.
- Сохраните файл.
После выполнения этих шагов ваш экран должен выглядеть так, как показано на рисунке 34.
Рис. 34. Добавление узла invoke к BPEL-процессу
Сейчас переменная employee
пуста. Давайте добавим фрагмент для вызова переменной employee
и присвоения ей некоторых значений. Переменная employee
будет передана в RuleGroupPartner в узле invoke для использования.
- Нажмите правой кнопкой мыши на узле Invoke и выберите Insert Before > Snippet.
- Выберите узел Snippet и перейдите в закладку Details в виде Properties. Вы добавите визуальный компонент, который присваивает значение переменной
Input1
переменной empRating
сотрудника.
- Выберите пиктограмму Standard из палитры, разверните SCA services и выберите Create specific BO. Нажмите кнопку OK.
- Выберите Employee и нажмите кнопку OK.
- Поместите узел Employee на панель визуального редактора.
- Добавьте узел create Expression на панель редактора и выберите employee.
- Подсоедините правую соединительную точку узла create Employee к левой соединительной точке узла employee. Это присвоит переменной
employee
бизнес-объект Employee. Редактор должен выглядеть так, как показано на рисунке 35.
Рис. 35. Создание бизнес-объекта Employee с визуальным компонентом
- Затем поместите некоторые значения во вновь присвоенный бизнес-объект Employee. Добавьте узел Expression на панель редактора и выберите Input1.
- Выберите пиктограмму Java из палитры; появится окно Select a Java Visual Snippet.
- Введите
Integer
в поле Specify a type.
- Выберите parseInt (String) из панели Select a Visual Snippet, как показано на рисунке 36.
Рис. 36. Добавление визуального компонента Java Integer.parseInt(String)
Нажмите кнопку OK и поместите ее в визуальный редактор. Поскольку Input1
является строкой, вы должны преобразовать ее в целое перед тем, как сможете присвоить ее переменной empRating
сотрудника.
- Добавьте узел Expression на панель редактора. Нажмите левой кнопкой мыши внутри узла, разверните employee и выберите empRating, как показано на рисунке 37.
Рис. 37. Добавление переменной employee.empRating
- Подсоедините правую соединительную точку узла Input1 к левой соединительной точке узла
Integer.parseInt (String)
.
- Подсоедините правую соединительную точку узла
Integer.parseInt (String)
к левой соединительной точке узла employee.empRating.
Ваш компонент должен выглядеть так, как показано на рисунке 38.
Рис. 38. Присоединение узлов в компоненте
Давайте рассмотрим, что может делать узел snippet. Переменная Input1
имеет тип string
. empRating
имеет тип integer
. Следовательно, вы не можете просто подсоединить узел Input1 напрямую к узлу empRating. Вы должны преобразовать string
в integer
. Для этого используйте метод parseInt()
из класса Integer
.
На данном шаге вы добавите еще один узел snippet, который обрабатывает выходную информацию узла invoke. После вызова группы правил результат помещается обратно в переменную employee
. Мы скопируем результат, которым является empBonus , в переменную Input1 .
- Нажмите правой кнопкой мыши на узел Reply и выберите Insert Before > Snippet.
- Выберите узел Snippet1 и перейдите в закладку Details в виде Properties. Вы добавите визуальный компонент, который присваивает переменную empBonus переменной Input1 .
- Добавьте узел Expression на панель редактора. Нажмите левой кнопкой мыши внутри узла для развертывания employee, затем выберите empBonus.
- Нажмите пиктограмму Standard в палитре. Откроется окно Add a Standard Visual Snippet.
- Разверните папку utility и выберите to text. Нажмите кнопку OK и поместите узел text на канву.
- Добавьте узел Expression на панель редактора и выберите Input1.
- Подсоедините правую соединительную точку узла employee.empBonus к левой соединительной точке узла text.
- Подсоедините правую соединительную точку узла text к левой соединительной точке узла Input1.
- Сохраните файл.
Поскольку empBonus
имеет тип double
, а Input1
имеет тип string
, используйте узел text для преобразования типа double
в тип string
. Редактор должен выглядеть так, как показано на рисунке 39.
Рис. 39. Подсоединение узлов в Snippet1
Добавьте компонент NewBpelProcess к сборочной диаграмме и затем подсоедините бизнес-процесс к компоненту MyRG. Сделайте это, потому что бизнес-процесс NewBpelProcess ссылается на группу правил MyRG.
- В виде Business Integration разверните папку MyBRModule и выполните двойной щелчок на MyBRModule, чтобы открыть сборочную диаграмму.
- В виде Business Integration разверните Business Logic > Processes и выберите NewBpelProcess, затем поместите его в редактор сборочной диаграммы. Обратите внимание на то, что компонент NewBpelProcess имеет WSDL-ссылку справа от узла. Здесь вы подсоедините его к компоненту MyRG.
- Присоедините компонент NewBpelProcess к компоненту MyRG. Поместите курсор мыши над правой соединительной точкой NewBpelProcess и присоедините ее к MyRG.
- Сохраните файл.
После выполнения этих шагов ваш экран должен выглядеть так, как показано на рисунке 40.
Рис. 40. Сборочная диаграмма MyBRModule
Поскольку модуль был добавлен на сервер в практическом задании 2, все, что вам нужно - опубликовать его.
- Запустите сервер, если он еще не запущен.
- Нажмите правой кнопкой мыши на WebSphere Process Server v6.0 и выберите Publish.
На данном шаге используйте тестовую интегрированную среду компонентов для тестирования модуля.
- Подождите завершения процесса публикации.
- Нажмите правой кнопкой мыши в панели MyBRModule Assembly Diagram и выберите Test Module.
- Выберите NewBpelProcess в качестве Component. Запустите бизнес-процесс NewBpelProcess, который, в свою очередь, запустит группу правил MyRG.
- Введите
1
в качестве значения input1, как показано на рисунке 41, и нажмите кнопку Continue.
Рис. 41. Выполнение MyBRModule
- Нажмите кнопку Finish при запросе выбора сервера, на котором запускается модуль.
После нажатия кнопки Continue вы увидите результаты в разделе Return parameters. Давайте рассмотрим, что произошло. Посмотрите на события в разделе Events. Сначала вы вызываете бизнес-процесс NewBpelProcess со значением input1, равным 1. Затем узел invoke бизнес-процесса вызывает MyRG. Группа правил передается с бизнес-объектом типа Employee, содержащим empRating, равным 1. Для рейтинга 1 группа правил будет возвращать значение empBonus, равное 10. Группа правил присваивает 10 выходному объекту Employee и возвращает его в бизнес-процесс. Бизнес-процесс затем копирует результат обратно в переменную output1
. Результат должен выглядеть так, как показано на рисунке 42.
Рис. 42. Результат выполнения MyBRModule
Резюме
Данное руководство является введением в WebSphere Integration Developer. Вы создали BPEL бизнес-процесс и несколько бизнес-правил.
Хотя выполненные вами в данном руководстве задания были простыми, будем надеяться, что они помогли вам понять, как можно использовать WebSphere Integration Developer в ваших SOA-проектах. Вы можете легко создать службы и логику, которая может быть ключевой частью вашей ориентированной на использование служб архитектуры (service-oriented architecture), не написав самостоятельно ни единой строчки кода.