Существует два способа создания модулей бизнес-интеграции (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 |
Научиться
-
Оригинал статьи "Using WebSphere Business Modeler to build business integration modules in WebSphere Integration Developer
".
-
В статье "Преобразование моделей из WebSphere Business Modeler в WebSphere Integration Developer" вы можете научиться импортировать модели в WebSphere Integration Developer и обратно в WebSphere Business Modeler.
-
Станьте сертифицированным специалистом - "
Сертификационный экзамен WebSphere Business Modeler 990 урок, Часть 1: Модель бизнес-процесса".
-
В статье "Информационный центр IBM WebSphere Business Process Management Версия 6.0r"
вы можете узнать больше о Modeler, WebSphere Integration Developer и WebSphere Process Server V6.0.
-
Для получения ресурсов по продуктам WebSphere Business Integration посетите раздел "бизнес-интеграции WebSphere".
-
На странице "Новое в бизнес-интеграции WebSphere" представлена краткая информация по семейству продуктов IBM WebSphere Business Integration и описание доступных для изучения ресурсов.
Получить продукты и технологии
-
Загрузите пробную версию WebSphere Business Modeler Advanced V6.0.1.
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Станьте членом сообщества developerWorks, принимая участие в блогах developerWorks.
Джи Вэн Джин (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.