 | Уровень сложности: средний Джин Джи Вэн, программист,
IBM
Пинг Шенг Ванг, программист, Shanghai Jiao Tong University
10.07.2007 Научитесь использовать WebSphere® Business Modeler – это позволит вам создавать лучшие бизнес-модели, которые в дальнейшем упростят разработку модулей бизнес-интеграции в среде WebSphere Integration Developer.
Вступление
Существует два способа создания модулей бизнес-интеграции (business integration): первый заключается в создании модулей бизнес-интеграции непосредственно в WebSphere Integration Developer. Другой же состоит в создании нового проекта бизнес-моделирования в WebSphere Business Modeler с дальнейшим экспортом файлов в WebSphere Integration Developer в формате, который поддерживает WebSphere Process Server. Мы рекомендуем последний способ, т.к. он позволяет следовать методологии управления бизнес-процессами и обеспечивает сокращение объема работ при разработке модулей бизнес-интеграции.
В четырех частях данной статьи мы приведем пять примеров, в которых постараемся показать, как моделировать бизнес-процессы при помощи различных базовых компонентов WebSphere Business Modeler. Чтобы помочь вам изучить соответствие между WebSphere Business Modeler и WebSphere Integration Developer, мы предоставляем для загрузки все примеры кода. Бизнес-процесс, выбранный нами для примера – приложение, которое автоматизирует обеспечение супермаркета продуктами от оптового торговца. Супермаркет получает ценовые предложения от разных оптовых компаний и затем принимает решение, с какой из них заключить соглашение о поставке.
Сопоставление бизнес-составляющих и типов данных
В этом разделе мы рассмотрим сопоставление бизнес-элементов в WebSphere Business Modeler соответствующим типам данных в WebSphere Integration Developer. В таблице 1 показано это сопоставление. Мы показываем, как для каждого элемента создать начальный бизнес-элемент в WebSphere Business Modeler и итоговый тип в WebSphere Integration Developer.
Таблица 1. Сопоставление бизнес-элементов типам данных.
|
Элементы в WebSphere Business Modeler
|
Элементы в WebSphere Integration Developer
| | Бизнес-элементы | Тип данных | | Массив бизнес-элементов как входные/выходные параметры | Новый тип данных с полем, содержащим массив | | Иерархия папок | Пространство имён (Namespace) |
Сопоставление одиночного бизнес-элемента типу данных
Первым делом вам необходимо описать бизнес-элемент Quotation (Предложение), который содержит три поля. Чтобы описать бизнес-элемент в WebSphere Business Modeler, выберите пункт Business items в проектном дереве. Следующие шаги показывают, как описать бизнес-элементы (также см. рисунок 1).
- Создайте в WebSphere Business Modeler новый проект бизнес моделирования с именем
FirstProject.
- Выберите в меню Business items - New - Business item. В поле Name of new business item введите
Quotation.
- Задайте бизнес-элементу три атрибута:
ProviderName, ProductName и Price. Дополнительно можете задать описания для каждого из них.
Рисунок 1. Описание бизнес-элемента Quotation в WebSphere Business Modeler
Следующим шагом станет экспорт проекта бизнес-моделирования путём выделения текущей записи в дереве проекта. Для этого следуйте инструкциям:
- Нажмите правую кнопку мыши на текущем проекте FirstProject и выберите Export.
- Выберите WebSphere Process Server в качестве типа экспорта.
- Задайте целевую директорию и нажмите Finish.
Теперь импортируем итоговый файл в WebSphere Integration Developer, используя опции файловой системы.
- Создайте новый Module-проект с именем
FirstProject.
- Импортируйте файл, который вы экспортировали из Modeler, нажав правой кнопкой мыши на FirstProject и выбрав Import - File System. Выберите директорию импорта и щелкните Finish. Этот шаг импортирует бизнес-объект, показанный на рисунке 2:
Рисунок 2. Бизнес-объект Quotation в WebSphere Integration Developer
Сопоставление массива бизнес-элементов и контейнера
Business Item Editor упрощает описание атрибута в качестве массива. Например, вы можете описать бизнес-объект Employee (Служащий), который соответствует следующему Java™-описанию:
Листинг 1. Описание объекта Employee на языке Java
public class Employee {
public String name;
public String sex;
public int Age;
public Staff[] staff;
}
|
Для описания атрибутов в качестве массива вы должны всего лишь изменить используемое по умолчанию значение атрибута Maximum с 1 на n, как показано на рисунке 3:
Рисунок 3. Описание бизнес-элемента при помощи полей-массивов в WebSphere Business Modeler
После того как вы импортируете бизнес-элементы в WebSphere Integration Developer, вы увидите два типа данных: Employee и Staff, созданные, как показано на рисунке 4:
Рисунок 4. Бизнес-объекты с полем-массивом в WebSphere Integration Developer
Мы хотим, чтобы метод возвращал массив, например Quotation[] getQuotations(){...}. WebSphere Business Modeler может самостоятельно генерировать бизнес-элементы. Выполните шаги, показанные на рисунке 5:
- Нажмите на Task, выберите вкладку Attribute, на ней выберите подвкладку Outputs и добавьте Output
- Выберите Quotation в качестве Associated data, измените значение атрибута Maximum с 1 (выставленное по умолчанию) на n. Таким образом, массив указан в качестве результата выполнения задачи (Task) в WebSphere Business Modeler
Рисунок 5. Указание массива, как типа вывода в Business Modeler
При импорте бизнес-элементов и процессов в WebSphere Integration Developer вы можете видеть два типа данных: Quotation и ListOf1ToUnboundedQuotations, созданные, как показано на рисунке 6. Бизнес-элемент ListOf1ToUnboundedQuotations, который является контейнером бизнес-объекта Quotation, создан автоматически.
Рисунок 6. ListOf1ToUnboundedQuotations в WebSphere Integration Developer
Преобразование иерархии папок в пространство имён
WebSphere Business Modeler не позволяет работать с двумя и более одинаковыми именами бизнес-элементов в одном каталоге данных. Также, во избежание повторных имен типов данных в WebSphere Process Server, каждый бизнес-объект имеет своё пространство имён, соответствующее его каталогу данных в WebSphere Business Modeler.
Например, в нашем базовом проекте, с тех пор, как Quotation находится в каталоге supermarket\price, при экспорте его пространство имён будет http://supermarket/price. Экспортированный файл будет находиться в supermarket\price\price.xsd.
Выполните следующие шаги, чтобы смоделировать бизнес-элемент Quotation, который автоматически преобразуется в тип данных Quotation с пространством имен http://supermarket/price.
- Нажмите на Project tree filters, убедитесь, что выбраны опции Main catalogs и Element categories within a catalog, как показано на рисунке 7:
Рисунок 7. Конфигурирование фильтров дерева проекта
-
Выберите установленный по умолчанию каталог данных Business items и переименуйте его в
supermarket, как показано на рисунке 8:
Рисунок 8. Переименование каталога данных бизнес-элементов
-
Нажмите правую кнопку мыши на supermarket и выберите New - Data Catalog, как показано на рисунке 9:
Рисунок 9. Создание нового подкаталога данных
-
В поле Name of new data catalog введите
price и нажмите кнопку Finish.
Рисунок 10. Описание имени нового каталога данных
-
Нажмите правую кнопку мыши на price и выберите New - Business Item, как показано на рисунке 11:
Рисунок 11. Создание нового бизенес-элемента Quotation
- В поле Name of new business item введите
Quotation и нажмите на кнопку Finish. См. рисунок 12:
Рисунок 12. Описание имени нового бизнес-элемента
-
Вернёмся к рисунку 1, зададим следующие атрибуты бизнес-элемента:
ProviderName, ProductName и Price. Дополнительно вы можете задать описания атрибутов.
-
Экспортируйте проект бизнес-моделирования. Вы можете открыть
price.xsd, как показано на рисунке 13:
Рисунок 13. price.xsd
- Импортируйте бизнес-элементы в WebSphere Integration Developer. Выберите бизнес-объект
Quotation и проверьте созданное пространство имен (Namespace), как показано на рисунке 14:
Рисунок 14. Пространство имён бизнес-объекта Quotation
 |
Сопоставление процессов и задач процессам и вызовам действий
В этом разделе мы покажем вам как отобразить информацию о процессах и задачах в WebSphere Business Modeler на процессы и вызовы действий в WebSphere Integration Developer. Таблица ниже содержит правила сопоставления атрибутов WebSphere Business Modeler и WebSphere Integration Developer
|
Элементы в WebSphere Business Modeler
|
Элементы в WebSphere Integration Developer
| | Иерархия папок | Пространство имён | | Имя процесса | Имя портотипа процесса | | Вводимое/Выводимое имя процесса | Операция Ввода/Вывода параметров портотипа процесса | | Критерий ввода процесса | Имя операции портотипа процесса | | Имя локальной задачи | Имя портотипа Reference Partner | | Вводимое/Выводимое имя локальной задачи | Операция Ввода/Вывода Параметров портотипа Reference Partner | | Критерий ввода локальной задачи | Имя операции портотипа Reference Partner |
Сопоставление процессов и интерфейсов процессов
- Находясь в WebSphere Business Modeler, щелкните правой кнопкой мыши на Process, выберите New - Process Catalog и в поле Name of new process catalog введите
supermarket.
- Нажмите правой кнопкой мыши на supermarket, выберите New - Process и в поле Name of new process введите
QueryPriceProcess, как показано на рисунке 15:
Рисунок 15. Создание каталога процессов и процесса
- Импортируйте процесс в WebSphere Integration Developer. Вы увидите, что интерфейс QueryPriceProcess сгенерирован с пространством имён
http://Processes/supermarket/QueryPriceProcess/QueryPriceProcessInterface (см. Рисунок 16):
Рисунок 16. Интерфейс процесса и пространство имён
Сопоставление вводимых/выводимых имён и вводимых/выводимых параметров
- Вернитесь в WebSphere Business Modeler, мышкой нажмите два раза QueryPriceProcess - откроется редактор процессов. Выберите вкладку Diagram, на ней откройте Attributes - Inputs. В поле Name введите
productName, для поля Associated Data выберите тип String. Для остальных атрибутов оставьте их значения по умолчанию (см. рисунок 17 ):
Рисунок 17. Входные данные процессов
- Переключитесь на вкладку Outputs. В поле Name введите
quotation, в поле Associated Data выберите Quotation, остальные атрибуты оставьте со значениями, выставленными по умолчанию, как показано на рисунке 18:
Рисунок 18. Выходные данные процессов
- Переключитесь на вкладку Input Logic, измените значение поля Name на
getPrice вместо Input Criterion, для остальных атрибутов оставьте их значения по умолчанию (см. рисунок 19):
Рисунок 19. Логика ввода процесса
- После импорта процесса в WebSphere Integration Developer вы увидите, что операция
getPrice добавлена в интерфейс QueryPriceProcess. Вводимое имя - productName, вводимый тип - string, выводимое имя - quotation, а выводимый тип - Quotation, как показано на рисунке 20:
Рисунок 20. Интерфейс процесса
Сопоставление задач и операций
- Вернитесь в WebSphere Integration Developer, нажмите левую кнопку мыши на элементе create local task на левой палитре и, удерживая кнопку нажатой, перетащите его в редактор процессов. Выберите вкладку General и измените значение в поле Name на
VerifyProductName вместо Task, (см. рисунок 21):
Рисунок 21. Имя задачи
- Переключитесь на вкладку Inputs, полю Name задайте значение
productName, для поля Associated Data установите тип String, а остальные атрибуты оставьте по умолчанию, как показано на рисунке 22:
Рисунок 22. Ввод задачи
- Далее переключитесь на вкладку Outputs, где в поле Name введите
validProductName, в поле Associated Data выберите тип String, а остальные атрибуты оставьте по умолчанию, как показано на рисунке 23:
Рисунок 23. Вывод задачи
- Переключитесь на вкладку Input Logic, измените значение поля Name на
verifyProductName вместо Input Criterion, остальные атрибуты оставьте по умолчанию, как показано на рисунке 24:
Рисунок 24. Логика ввода задачи
- Повторите шаги 1-4 чтобы добавить задачу Aprice, задайте
productName для вводимого имени и тип String в качестве вводимого типа. Задайте quotation в качестве выводимого имени, тип вывода - Quotation и для вводной логики установите getQuotation. Нажмите на Connections, чтобы объединить задачи Input, VerifyProductName, Aprice и Output. Схема показана на рисунке 25:
Рисунок 25. Базовая модель
- После того, как вы импортируете процессы в WebSphere Integration Developer, он создаст интерфейс
VerifyProductName. Интерфейс VerifyProductName имеет операцию verifyProductName. Он имеет вводимое имя productName и вводимый тип string. Выводимое имя интерфейса - validProductNamee, выводимый тип string. Это видно на рисунке 26:
Рисунок 26. Интерфейс VerifyProductName
- Также создан интерфейс
Aprice. Он имеет операцию getQuotation. Его вводимое имя - productName, вводимый тип - string, выводимое имя - quotation и выводимый тип Quotation, (см.рисунок 27):
Рисунок 27. Интерфейс Aprice
- Нажмите два раза на процессе QueryPriceProcess - это откроет редактор процессов. Он позволяет не только управлять процессами, но и также создавать партнёр-интерфейс
QueryPriceProcessPartner, партнёр-указатели VerifyProductNamePartner и ApricePartner и переменные stringVariable и QuotationVariable, (см. рисунок 28):
Рисунок 28. Редактор процесса QueryPriceProcess
 |
Сопоставление нескольких вводных/выходных задач с многооперационным интерфейсом
В силу того, что интерфейсы в WebSphere Integration Developer обычно имеют более одной операции, в WebSphere Business Modeler есть необходимость в наличии задач, которые бы поддерживали множественный ввод и вывод. Чтобы понять, как это реализовано в WebSphere Business Modeler, создайте новый модельный проект MultiMethod и импортируйте в него загруженный файл MultiMethod_Modeler.zip.
- После того, как вы это сделаете, три компонента:
Decision, задача ProductQuotation и Merge соединятся воедино в процессе QueryPriceProcess. Задача ProductQuotation содержит два метода, которые используют getPrice для получения цен от разных оптовых поставщиков. Вводный параметр процесса - productName, он определяет когда вызывать getPriceA, а когда getPriceB, (см.рисунок 29):
Рисунок 29. Модель с несколькими методами
- На вкладке Inputs добавьте два ввода с именами
productA и productB, (см. рисунок 30):
Рисунок 30. Описание ввода задачи
- На вкладке Outputs добавьте два вывода с именами
QuotationA и QuotationB, (см. рисунок 31):
Рисунок 31. Описание вывода задачи
- На вкладке Input Logic задайте критерий ввода, (см. рисунок 32):
Рисунок 32. Задание логики ввода задачи
- На вкладке Output Logic задайте критерий вывода,(см. рисунок 33):
Рисунок 33. Описание логики вывода задачи
-
По той причине, что описания каждых двух вводов и выводов столь удалены, нам необходимо описать ввод/вывод для всех методов. Переключитесь на вкладку Advanced Output Logic и выберите APrice. Убедитесь, что выбран ассоциированный критерий ввода getPriceA, (см. рисунок 34):
Рисунок 34. «Продвинутая» логика вывода PriceA
-
Выберите BPrice и убедитесь, что выбран ассоциированный критерий ввода getPriceB, как показано на рисунке 35:
Рисунок 35. «Продвинутая» логика вывода PriceB
-
В заключение опишем логику атрибута Decision. Атрибут
Decision в WebSphere Business Modeler соответствует Flow с выражением в WebSphere Integration Developer. То есть каждый поток содержит Java-выражение (которое возвращает булево значение) для контроля конца потока. Переключитесь на вкладку Output branches и выберите ветку вывода Yes. Убедитесь, что поле Expression содержит 'supermarket.QueryPriceProcess.Decision.Input' is equal to "ProductA", (см. рисунок 36):
Рисунок 36. Ветви вывода Decision-атрибута
-
После импорта модельного проекта в WebSphere Integration Developer вы можете открыть редактор для просмотра постановки процесса QueryPriceProcess, как показано на рисунке 37:
Рисунок 37. Схема мультиметодного процесса в WebSphere Integration Developer
-
После двойного щелчка мыши на интерфейсе ProductQuotation вы увидите две операции:
getPriceA и getPriceB, добавленные в портотип (PortType) ProductQuotation, (см. рисунок 38):
Рисунок 38. Портотип ProductQuotation
-
Выберите ветку, вызывающую операцию
getPriceA и откройте вкладку Details, где проверьте правильность сгенерированного условия, (см. рисунок 39):
Рисунок 39. Свойства потокового соединения
 |
Сопоставление элементов управления потоком decision/merge и fork/join
И decision/merge, и fork/join имеют несколько входных ветвей и одну ветвь вывода, оба обычно используются для разделения путей потока процесса. Однако, они используются для моделирования разных ситуаций и обладают разными функциями.
Merge обычно используется после исключающего decision и запускается тогда, когда выполнена одна из его входных ветвей. Как только на вход merge поступают входные данные, они немедленно отсылаются уже в качестве выводимых.
В отличие от этого, join работает после fork. Запуск join происходит по выполнению всех входных ветвей. После получения всех вводных данных происходит одновременная отсылка выводимых данных.
Ранее, в проекте MultiMethod, показана работа decision/merge, поэтому в этой части мы сосредоточимся на fork/join.
Нами предположено, что супермаркет хочет сравнить цены разных оптовых поставщиков и соответственно принять решение о закупке. Проект Branch послужит введением в организацию обработки параллельных задач в WebSphere Business Modeler:
Рисунок 40. Параллельные задачи
В левой части схемы красным помечен элемент Fork в WebSphere Business Modeler, а в правой - элемент Join. Fork разделяет поток процесса на две и более альтернативных части, что позволяет выполнять параллельно соответственно две и более задачи. Элемент Fork создает копии ввода и пересылает их далее как каждый альтернативный путь.
Задача MakeDecision должна быть сформулирована после одновременного выполнения задач APrice, BPrice и CPrice. Использование элемента Fork обеспечивает параллельное выполнение элементов APrice, BPrice и CPrice до объединения их в единый поток элементом Join и перехода к задаче MakeDecision.
Давайте еще немного исследуем эту модель, а затем импортируем её в WebSphere Integration Developer:
-
Переключитесь на вкладку Input branches атрибута Fork, чтобы увидеть его входные ветви (см. рисунок 41):
Figure 41. Входные ветви элемента fork
-
Переключитесь на вкладку Output branches атрибута Fork, чтобы увидеть его выходные ветви (см. рисунок 42):
Рисунок 42. Выходные ветви элемента fork
-
Переключитесь на вкладку Input branches атрибута Join, чтобы увидеть его входные ветви (см. рисунок. 43):
Рисунок 43. Входные ветви элемента join
-
Переключитесь на вкладку Output branches атрибута Join, чтобы увидеть его выходные ветви (см. рисунок 44):
Рисунок 44. Выходные ветви элемента join
-
После импорта проекта в WebSphere Integration Developer, вы можете открыть редактор процессов, чтобы посмотреть схему процесса
Branch. Так как Join экспортирует три ценовых котировки в задачу MakeDecision; результаты представлены в виде массива и WebSphere Integration Developer автоматически генерирует контейнер ListOf3To3Quotations для записи Quotation, (см. рисунок 45):
Рисунок 45. Схема ветвления процесса в WebSphere Integration Developer
-
Выберите участок кода элемента Join, автоматически сгенерированный для создания объекта
ListOf3To3Quotations и перейдите к следующей задаче - MakeDecision:
Рисунок 46. Участок кода элемента Join в WebSphere Integration Developer
 |
Сопоставление типов реализации
При описании процесса в WebSphere Business Modeler вы можете выбрать тип реализации отдельно для каждого элемента задачи. Возможно задание пяти типов реализации, соответствующих типам компонентов сервисов:
- State machine
- Rule group
- Human task
- Java
- Process
В этой части вы научитесь задавать различные типы реализации для каждого отдельного элемента.
Перед началом создайте в WebSphere Business Modeler проект с названием ImplementationType, затем импортируйте в него загруженный файл Basic.zip.
-
Выберите задачу VerfiyProductName, в ней откройте вкладку Diagram - Technical attributes view - Implementation. Выберите Human Task в качестве типа реализации, (см. рисунок 47):
Рисунок 47. Тип реализации Human Task
-
Выберите задачу APrice, в ней откройте вкладку Diagram - Attributes - Resources. В колонке Individual Resource requirements добавьте Individual Resource requirement, установите значение Staff для столбца Individual Resource, (см. рисунок 48):
Рисунок 48. Установка значения Staff в стобце Individual Resource
-
При импорте модельного проекта в WebSphere Integration Developer будет автоматически сгенерирован служебный компонент
Human Task с названием VerifyProductName , (см. рисунок 49):
Рисунок 49. Компонент Human Task
- Открыв его, вы увидите подробные свойства, (см. рисунок 50):
Рисунок 50. Подробные свойства типа Human Task
-
Теперь откройте редактор процессов, чтобы увидеть, что действие Staff реализовано через Human Task
Aprice.
Рисунок 51. Действие Staff, реализованное типом Human Task
 |
В заключение
WebSphere Business Modeler поддерживает первый шаг цикла разработки SOA, бизнес-моделирование. Эта статья поясняет правила соответствия элементов WebSphere Business Modeler и WebSphere Integration Developer, чтобы ускорить процесс разработки модулей бизнес-интеграции в WebSphere Integration Developer.
Загрузка | Описание | Имя | Размер | Метод загрузки |
|---|
| Пример первого проекта (Часть 1) | firstproject.zip | 62KB | HTTP |
|---|
| Базовый пример (Часть 2) | basic.zip | 59KB | HTTP |
|---|
| Мультиметодный пример (Часть 3) | multimethod.zip | 67KB | HTTP |
|---|
| Пример ветвления (Часть 4) | Branch.zip | 72KB | HTTP |
|---|
| Пример типов реализации (Часть 5) | ImplementationType.zip | 61KB | HTTP |
|---|
Ресурсы Научиться
Получить продукты и технологии
Обсудить
Об авторах  | |  |
Джи Вэн Джин (Ji Wen Jin), PhD, штатный инженер по программному обеспечению IBM Software Group, Application and Integration Middleware Software, в IBM Shanghai Globalization Lab. В область его исследований входят EAI, Business Intelligence, MDA и Java-технологии. Также он работал над DB2 Cube Views, DB2 Alphablox,WebSphere DataStage, WebSphere Business Modeler, WebSphere Integration Developer, WebSphere Process Server и WebSphere Business Monitor. |
 | |  |
Шэнг Пинг Ванг (Sheng Ping Wang) (cn.edu.shu.terry@gmail.com), инженер по программному обеспечению в Shanghai University. В данное время он стажируется в IBM SGL/CSDL, занимается опытными разработками в Websphere Modeler и Websphere Integration Developer. |
Выскажите мнение об этой странице
|  |