Oracle bpel что это
Рич Шверин (Rich Schwerin), старший редактор издательства Oracle Publishing.
BPEL (Business Process Execution Language – язык выполнения бизнес-процессов) – это язык сервисов.
Немногие, если таковые вообще удастся найти, бизнес-приложения сегодняшних дней работают в изоляции. С того самого момента, когда коммерческий представитель находит клиента, и до момента, когда будет оплачен счет и выполнен заказ, многочисленные гетерогенные приложения и сервисы, скрытые от посторонних глаз, работают для создания бизнес-процессов. Интегрирование сегодняшних гетерогенных приложений, действий, событий и сервисов в эти сквозные бизнес-процессы является большой проблемой.
Ключом для решения проблемы интеграции является обеспечение общеупотребительного стандарта. Фокусирование такого стандарта на транзакционные бизнес-процессы требует описания, как именно происходят транзакции, и в каком порядке.
Язык выполнения бизнес-процессов (Business Process Execution Language – BPEL) предлагает общеупотребительный язык для бизнес-приложений и сервисов. BPEL является новым стандартом для интеграции гетерогенных приложений и сервисов в транзакционные бизнес-процессы.
"BPEL – это язык потоков технологических процессов и данных (workflow and process flow language). Поэтому если имеется несколько стадий, которые нужно объединить в единое целое для формирования бизнес-процесса, то BPEL – это тот язык, который вы будете использовать для описания, как и в какой последовательности должны происходить события, – объясняет Дейв Шаффер (Dave Shaffer), бизнес-консультант и эксперт по BPEL корпорации Oracle. – Есть одно неправильное представление, которое необходимо рассеять: для того, чтобы BPEL был полезен, вовсе обязательно всюду иметь Web-сервисы. BPEL позволяет связываться со многими различными видами выполняющихся на сервере систем через родные для них (native) протоколы".
До BPEL
"До появления BPEL существовали различные технологии интеграции прикладных систем уровня предприятия (Enterprise Application Integration – EAI) и составляющих чью-то собственность (proprietary -проприетарный) технологий управления бизнес-процессами (Business Process Management – BPM), – объясняет Шаффер. – Люди имели возможность строить связанные приложения, но они были дорогими, сложными и проприетарными".
В декабре 2000 года корпорация Microsoft опубликовала XLANG – язык бизнес-процессов на базе XML, используемый в Microsoft BizTalk Server для управления приложениями и Web-сервисами XML. Три месяца спустя корпорация IBM опубликовала язык потоков данных Web-сервисов (Web Services Flow Language – WSFL), язык XML для описания Web-сервисов как части определения бизнес-процесса. IBM разработала WSFL как часть инфраструктуры технологии Web-сервисов, опираясь на спецификации таких существующих стандартов как SOAP, UDDI, WSDL и XMLP.
В августе 2002 года IBM, Microsoft и BEA выпустили первый общедоступный проект спецификации языка выполнения бизнес-процессов для Web-сервисов (Business Process Execution Language for Web Services -- BPEL4WS), в которой они скомбинировали идеи спецификаций XLANG и WSFL. В апреле 2003 года OASIS (Organization for the Advancement of Structured Information Standards – организация по усовершенствованию стандартов структурированной информации) пригласила всех желающих принять участие в работе технического комитета BPEL. В мае 2003 года о своей поддержке BPEL объявили Sun и Oracle.
Характеристики BPEL
BPEL определяет поведение бизнес-процессов, базирующихся на Web-сервисах. BPEL реализует функциональность экспорта и импорта, используя исключительно интерфейсы Web-сервисов. BPEL вписывается в архитектуру основных Web-сервисов, построенную поверх UDDI, WSDL, XML и XML Schema.
"BPEL – это упрощенный стандартный язык, который облегчает гармоническое сочетание различных Web-сервисов, – говорит Шаффер. – Он образует слой поверх Web-сервисов и XML, а также стандартных блоков различных компонентов. Большинство людей уже работает в среде SOAP, WSDL, XML и XML Schema, и большинство компаний уже двигается в направлении интеграции на основе XML. Так что BPEL – это правильный путь для разработчиков".
Три ключа к BPEL
Основу BPEL составляют три ключевые свойства: асинхронность, координация потоков и управление исключительными ситуациями. Все они связаны с проблемами, с которыми сталкиваются разработчики, занимающиеся управлением интеграцией.
Exception management. (Управление исключительными ситуациями). Управление исключительными ситуациями имеет дело с синхронными ошибками, асинхронным управлением исключительными ситуациями и компенсацией бизнес-транзакций. Для того чтобы автоматизировать бизнес-процессы, большие усилия сосредоточены на управлении исключительными ситуациями, и BPEL упрощает управление исключительными ситуациями для Web-сервисов. При возникновении исключительных ситуаций вызываются локальные обработчики ошибки, связанные с Web-сервисами, и асинхронные сервисы уведомляются об этих исключительных ситуациях.
От сервисов к процессам
После BPEL
Есть некоторые вещи, которые BPEL разрешить не может, в том числе, сложные преобразования, конвертирование данных, соглашения с торговыми партнерами, ручные (выполняемые человеком) процессы и привязка к определенным выполняющимся на сервере системам, объясняет Шаффер и добавляет, что BPEL и не пытается “дать всем сестрам по серьгам”.
"BPEL не включает в себя сложные преобразования, но поддерживающие BPEL продукты поддерживают и некоторые XQueries, так что вы можете связать все вместе, как сервис, – объясняет Шаффер. – В BPEL имеются некоторые простые преобразования, но без помощи XQuery или XSLT для сложных преобразований вы должны были бы выполнить их отдельно, а затем интегрировать их".
Шаффер добавляет, что в BPEL отсутствует концепция ручного процесса, но он имеет ключевую поддержку асинхронных сервисов и ручных задач; а ручные задачи легко поддерживаются как сервисы.
Поддержка обслуживания BPEL
Технический комитет OASIS по проблеме языка Web Services Business Process Execution Language (WSBPEL), работает над развитием BPEL. В него входят фирмы BEA Systems, Commerce One, EDS, IBM, Microsoft, NEC, Novell, Oracle, SAP, Siebel Systems, Sybase, Tibco и Vignette.
Текущая спецификация BPEL, рассмотрением которой в настоящее время занимается OASIS, имеет номер версии 1.1. Планируется, что ее рассмотрение будет завершено к концу 2004 года. Тем временем, продукты BPEL для серверов типа Oracle BPEL Process Manager поставляются уже сегодня.
Oracle BPEL Process Manager
Oracle BPEL Process Manager является масштабируемым сервером оркестровки на основе BPEL с поддержкой моделирования, объединения, развертывания и управления процессами BPEL; он предлагается и как автономный продукт, и как опция сервера приложений Oracle 10g Enterprise Edition. Помимо BPEL сервер приложений Oracle 10g поддерживает SOAP, WSDL, WS-Coordination, WS-Transaction и XML, каждый из которых позволяет приложениям гибко находить друг друга и прозрачно взаимодействовать в рамках независимой от платформы модели.
"Основная бизнес-проблема с BPEL – это интеграция, – объясняет Роб Ченг, директор, управляющий выпуском продукта Сервер Приложений Oracle 10g. – Цель BPEL состоит в том, чтобы найти более простые, более гибкие и более легкие способы разрешения проблем интеграции – не только для подключения унаследованных приложений, но также и для того, чтобы в будущем строить приложения с более высоким уровнем модульности".
"BPEL определяет совместную оркестровку и хореографию (orchestrated and choreographed) сервисов и способен компоновать сущности воедино в потоки процессов и потоки приложений в рамках гетерогенной архитектуры – независимо от используемого оборудования, языка программирования или операционной системы – то есть, именно там, где сервер BPEL от Oracle превосходит другие системы, – говорит Ченг. – У нас есть единственный промышленный механизм BPEL, который обрабатывает BPEL естественным образом, так что он богаче, быстрее, работе с ним проще научиться и он более расширяем, чем проприетарные альтернативы".
BPEL is the standard for assembling a set of discrete services into an end-to-end process flow, radically reducing the cost and complexity of process integration initiatives. Oracle BPEL Process Manager offers a comprehensive and easy-to-use infrastructure for creating, deploying and managing BPEL business processes.
Updates & News
Announcing Oracle SOA Suite 12.1.3 and Managed File Transfer 12.1.3
Oracle SOA Suite 12c, the latest release of our market-leading Integration solution, brings exciting and powerful new features to drive your Enterprise Mobility via major REST & JSON improvements throughout the suite, Cloud Integration via the new line of cloud adapters and Internet-of-Things with Oracle Event Processing providing the impedance matching layer between devices and enterprise systems.
Time and again, Oracle Integration has proven to make businesses more agile, efficient and provide a robust, future-proof architecture for large, medium and small enterprise systems. Today, Cloud, Mobile, Internet-of-Things and Fast Data initiatives demand a scalable and enterprise-grade foundation making Oracle Integration even more important than ever before.
In addition to these, SOA Suite 12c includes hundreds of new features, based on years of collaboration with our large customer base:
- Single developer installer including WebLogic Server, SOA, JDeveloper, Enterprise Manager and Java DB
- JDeveloper-based design time environments for Service Bus and Event Processing
- Completely redesigned modern web console for Service Bus
- New application adapters (SAP, JDE, . )
- New technology adapters (Coherence, MSMQ, . )
- Debugging and testing capabilities in JDeveloper
- Templates in SOA, Service Bus and XSLT Mapper
- Powerful scheduling engine
- New B2B features such as streaming support for large payloads
- Enhanced end-to-end monitoring in SOA for healthcare
Also, to support the industrialization of SOA and web-scale requirements, you will find many improvements in
- Startup time and memory footprint
- Streamlined Enterprise Manager dashboards
- New Error Hospital
- Simpler tuning options
- More efficient dehydration store management (including auto-purging)
Finally, special attention has been placed on the upgrade experience from 11g to 12c, ensuring that customers can uptake the new release without any business disruption.
We are also releasing at the same time Oracle Managed File Transfer (MFT), a companion product to SOA Suite that helps organizations regain control over file exchanges and solve the problems created by the uncontrolled proliferation of FTP servers. Visit the Oracle MFT OTN page for more information and to download the product.
Все началось в один прекрасный день, когда я получил ссылку на Oracle BPEL и указание его исследовать. Для тех кто не в курсе — BPEL — это язык описания бизнес-процессов, Oracle BPEL — это кроме всего прочего еще и workflow-движок. Все начиналось хорошо, установка прошла без проблем, все вроде запускалось, но не хватало одной функции, без которой жить просто нельзя.
Покопавшись по форумам, я обнаружил, что нас спасет патч к нашей версии. Патч ставился странно, в документации по установке патча были описаны какие-то папки, которых у меня просто не было. What's the f**ck? После долгих танцев с бубном меня почему-то озарила идея зайти снова на сайт с файлами для скачивания. Для меня было откровением, что изначально я ставил не то. Нужно было скачать файл с похожим длинным именем, но без слова BPEL, т.е. решить задачу от противного.
Эта штука называлась просто SOA — Service Oriented Application, она содержала BPEL и даже кое-что еще (я устанавливал раньше SOA BPEL). Установив новый продукт и патч, я обрадовался, увидев начальную страницу в браузере. Но не тут-то было. Задачи после запуска куда-то пропадали. Потыкав мышкой туда-сюда и их обнаружил, но с ними ничего нельзя было сделать.
Опять приуныв, начал танцы с бубном и обнаружил ругань на NLS — National Language Settings. Я попытался заставить систему забыть навсегда о русском языке, но она не хотела, русские корни давали о себе знать. Пришлось устанавливать английскую версию windows. Как я и ожидал, это помогло, но не до конца. Почему-то система ругалась на отсутствие памяти, хотя памяти было достаточно. Пришлось разрешить использовать памяти побольше.
После таких мытарств Oracle BPEL стал работать. Думаете, это конец? Вовсе нет. Дальше начались проблемы с API. Очень бедная документация заставляет обращаться на форум Oracle за поиском нужной информации. Часто я наталкивался на аналогичные проблемы, что и у меня и часто там не было ответа.
Что можно сказать об Oracle BPEL, если он все-таки у вас заработает как нужно? Это язык для настоящих программистов. Вы должны знать XPath, и разбираться в вызовах веб-сервисов. Нельзя делать произвольные переходы между задачами. Видимо BPEL писали люди, которые очень любят структурное программирование и ненавидят оператор GOTO. А нормальный workflow как раз должен иметь хитрые переходы типа goto.
Вдобавок система в целом нестабильна и по ходу работы обнаруживаются ошибки, которые решаются путем перезапуска, либо переустановки. Возможно это происходило из-за того, что я использовал Oracle Express Edition вместо обычного Oracle Server.
Еще забыл сказать, что есть возможность ставить Oracle Lite, но с ним пропатченный BPEL вообще не работает.
При работе были использованы версии:
Oracle SOA Suite 10g 10.1.3.1, patch 10.1.3.5
Oracle Express Edition 10.2.0.1
Пройдясь поиском по Хабрахабру, удалось обнаружить не так уж и много информации, посвященной, надо сказать, не очень распространённому языку BPEL (Business Process Execution Language). Если говорить в общем, то BPEL – это язык, основанный на формате XML, который позволяет описывать логику бизнес-процессов через использование веб-служб.
Реализаций движков, позволяющих создавать процессы с использованием этого языка, мне известно не так уж и много. В частности, можно упомянуть Oracle BPEL Process Manager и продукт, о котором пойдет речь дальше – Serena Business Manager (SBM). SBM позволяет быстро создавать web-приложения, автоматизирующие какой-нибудь процесс. В модели процесса (workflow) предусмотрена возможность в момент изменения состояния вызвать внешнюю web службу. А если нужно реализовать какую-нибудь логику и одного вызова недостаточно? Вот тут и пригодится процедура, написанная на языке BPEL и исполняемая средствами той же платформы BPM.
Подробнее на самом языке я останавливаться не буду, в сети можно найти достаточно информации на эту тему, например, здесь. Я же опишу реализацию конкретной задачи.
Задача была поставлена следующим образом – разработать функционал копирования бизнес-сущностей (в моём процессе – TD Links), но не просто так, а с предварительным опросом стороннего веб-сервиса. Этот сервис (bridge) обладает методом, принимающим на вход некоторые атрибуты объекта TD Link. Затем bridge опрашивает стороннюю систему и в ответ сообщает, может ли объект с такими атрибутами существовать в нашей системе. Как он это делает меня не интересует, bridge для меня является «чёрным ящиком».
Кроме того, мне потребовался ещё один веб-сервис, реализующий функции работы с бизнес-сущностями в нашей системе (чтение, создание и т.д.). Называть его буду AppServices.
Список шагов, из которых может строиться процесс, выглядит следующим образом:
Наиболее важные из них это:
- Service. Позволяет оформить обращение к веб-службе.
- Service. Позволяет оформить обращение к веб-службе.
- Calculate. Используется для работы с переменными, маппинга данных, обработок и т.д.
- Scope, Compensate и Throw. Шаги для обработки ошибок.
Итоговый worflow выглядит так:
Так как объекты TD Links существуют в системе не сами по себе, а в связи с другими объектами (типа Stagings), для начала мне потребовалось найти в системе нужные мне Stagings.
AppServices обладает методом, позволяющим делать выборку с использованием SQL-запроса. SQL-запрос собран прямо в виде строки:
Да, важное отступление. Движок позволяет определять переменные, которые будут использоваться по ходу процесса, чем я в данном случае и воспользовался:
Сформировав SQL-запрос, можно перейти к вызову нужного метода, выполнив маппинг данных:
Для маппинга могут использоваться как переменные, так и результаты выполнения предыдущих шагов процесса (например, результат запуска веб-службы).
После аналогичным способом (через SQL-запрос) делается выборка объектов для копирования – TD Links и запуск цикла.
И, наконец, этап опроса внешнего веб-сервиса, настраивается также через элемент типа «Service».
Естественно, от отладки никуда не деться, и инструмент разработки обладает для этого довольно неплохими возможностями. В частности, можно посмотреть результат выполнения каждого шага в отдельности и увидеть, на каком из них что-то пошло не так.
Что можно сказать в итоге. Из плюсов предложенной реализации можно отметить следующие моменты:
- Простота разработки. По сути, не потребовалось никакого кодирования.
- Быстрота. Создать и отладить небольшой процесс можно за пару часов. При этом мне не пришлось выходить за рамки штатной среды разработки SBM Composer.
- Удобство отладки. Все логи в одном месте; видно, на каком шаге произошел сбой. Кроме того, существует единый лог, куда сбрасываются ошибки во время работы всех работающих процессов.
- Контролируемая легкость внесения изменений. Обновление описаний веб-служб, переименование переменных, внесение изменений в маппинг данных – всё это делается очень легко. И при этом, мои изменения фиксируются во встроенной системе контроля версий – в любой момент можно откатиться до предыдущей работающей версии.
- Возможность запуска с помощью внешнего события. В моем случае процесс инициирует пользователь, нажимая кнопку на пользовательском интерфейсе, но инициатором процесса может быть и некое внешнее событие.
- Проблематичность реализации сложных алгоритмов. Всё же, инструмент создания workflow ограничен в своих возможностях. Сложную обработку данных все же лучше оформлять в своей собственной web службе.
- Сложности с маппингом данных. Иногда приходится использовать дополнительные шаги процесса для маппинга данных, что несколько утяжеляет процесс.
- Ограничения, накладываемые на веб-службы. Поддерживается только архитектуры SOAP и REST (через специальную обёртку), также есть ряд ограничений, накладываемые на WSDL-файл.
Спасибо всем, кто дочитал пост до конца. Будем рады ответить на ваши вопросы в комментариях.
Есть проект по нагрузочному тестированию одной системы. В схеме взаимодействия между серверами есть внешние системы, которые не участвуют в объекте тестирования — надо их заменить эмуляторами или заглушками. Протокол SOAP. Композиты на BPEL. Стенда нет. Ужасно интересно!
Решение
Посетила мысль сделать точно также, как на продуктиве: Oracle Database + Oracle Weblogic + Oracle SOA Suite, разработка в Oracle JDeveloper.
Далее я расскажу про:
- Разворачивание своего стенда
- Подключение MDS
- Импорт существующего композита
- Выпиливание вызова внешних систем
- Вставку примера успешного ответа
- Примеры использования операторов
- Добавление в композит нового веб-сервиса
- Вызов асинхронного сервиса
- Деплой композита
- Проверку модифицированного композита
- Анализ проблем при проведении тестирования
- Мониторинг и замечания при работе
BPEL — язык на основе XML для формального описания бизнес-процессов и протоколов их взаимодействия между собой.
Надо сказать, что BPEL довольно большая и удобная штука, позволяющая вставлять разные операторы, дебаг и куски кода, например Java.
Бизнес процесс выглядит примерно так:
Давайте развернем свой стенд. И так, что нам потребуется и какие версии:
Разворачивание своего стенда
Инструкции по установке и настройке софта
Выбор пути для домашней папки.
Пропустим регистрацию для обновлений.
Выберем типичную установку.
Укажем папку с JDK.
Далее укажем папку куда поставить сам Weblogic.
Установка и поздравления.
В установке нет ничего сложного, остановлюсь только на некоторых моментах.
Пропустим минимальные требования и поставим Oracle Database 11g Release 2 x32 для Windows, выберем Desktop Class. Нам для разработки хватит.
В интернете, в том числе и на хабре есть много статей по установке. Отмечу только установку под локальным админом и задание переменных окружения. Хотя ошибка с отсутствием ORACLE_UNQNAME не помешала и все завелось.
Для запуска установщика надо указать путь к JRE или JDK.
Пропустим обновление софта.
Проверка операционной системы и физической памяти, в случае ошибки можно проигнорировать.
Выбор Middleware Home и название директории для нашего SOA.
Далее установщик нашел Weblogic в домашней папке.
Установка и поздравления. Проверим подключение.
Или запустим SQL Developer и настроим подключение.
Выбираем Create Repository.
Указываем параметры БД, в нашем случае это localhost, 1521, sys и пароль. Далее идет проверка.
Следом надо указать префикс для имен схем данных (по умолчанию DEV) и выбрать компоненты репозитория, нам нужны Metadata Services и SOA Infrastructure, User Messaging Service выбирается автоматически.
Укажем пароль для пользователей, владельцев схем с данными для репозитория.
Потом можно выбрать табличные пространства для схем данных репозитория.
Запуск создания tablespaces.
Запускаем установку.
Чтобы его создать запустим файл config.cmd в папке
У меня JDK 1.7, поэтому он ругнулся
Мы ее обойдем — меняем javaw на java в файле
и получаем описание Unrecognized VM option 'UseSpinning'
Удаляем опцию -XX:+UseSpinning (которой больше нет с 1.6) в файле
и снова запускаем.
Выбираем создание нового домена.
Выбираем Oracle SOA Suite, Enterprise Manager. WSM Policy Manager и JRF выберутся автоматически.
Указываем имя и путь к домену и приложениям.
Пароль для пользователя weblogic.
JDK и тип инсталляции. Оставим Development Mode.
Пропишем пароли к вашим схемам, хост и sid:.
Настраивать не будем, оставим пустыми.
Готово. Запустим Admin Server.
Когда будет просить ввод логина и пароля, вводим от администратора домена. Чтобы больше не просил создадим файл.
Необходимо установить JDeveloper что бы создавать композиты. Берем версию 11.1.1.9.0.
Ставим, используя существующий Middleware Home.
Для работы с композитами, необходимо установить расширение для нашего JDeveloper.
Подготовка к разработке
Композиты, которые мы будем деплоить, используют схемы, которые хранятся в MDS в БД. Его можно запросить или выкачать из стенда для функционального тестирования.
Импорт MDS архива.
Создание подключения к БД под пользователем схемы MDS. View->Resource palette->New Connection->Database
Создание подключения к MDS. View->Resource palette->New Connection->SOA-MDS
Создание пустого проекта. (File->New).
Импорт существующего композита. Композиты также можно выкачать с функционального стенда. Выбираем созданный проект, File->Import.
Разработка
Расковыряем композит и задеплоим
На картинке выше можно видеть в правой части имеется внешняя система и бизнес-процесс ее вызывает методом invoke.
Давайте же уберем это ненужное. Я буду делать это в блокноте. Но можно и в интерфейсе.
Краткий экскурс.
Файл состоит из блоков, вариаций больше, я перечислю некоторые:
process — корневой тег для процесса
partnerLinks — партнерские соглашения между сервисами
variables — декларация переменные
faultHandlers — обработчики ошибок
sequence main — бизнес-процесс
receive — получение запроса от клиента
assign — блок присвоения переменных
сopy — копирование данных из одного объекта в другой
invoke — вызов веб-сервиса
if, elseif, else — объявление условий
condition — описание условия
forEach — объявление цикла
startCounterValue — начало цикла
finalCounterValue — конец цикла
scope — объединение
Убрать часть соглашения, касающееся внешней системы.
Для простоты обработчик ошибок я тоже удалю. Весь тег faultHandlers.
Удаляем assign запроса к внешней системе, оставим только копирование данных из запроса для идентификации запроса.
Удаляем все вызовы внешних систем invoke, кроме последнего в файле, где должен быть ответ нашему клиенту.
Посмотрим переменную, в которую нужно записать ответ. В нашем случае это outputVariable
Берем пример ответа, который наш дружелюбно предоставили разработчики или мы сами вытащили из SOA на функциональном стенде. И прописываем значения в нужные теги. Например
Метод payload, операция ответа AnsSearchGetCustomerPartyAcc и xpath поставим свои.
BEGIN[$itr] — элемент в цикле, означает $itr-итый элемент BEGIN внутри родительского.
- Удалим импорт wsdl от внешнего сервиса.
- Уберем еще ссылку на внешний сервис.
- И еще соединение wire к удаляемому сервису GetCustomerPartyAccountBS
- Убираем ссылку на внешний сервис в этих файлах.
- Пробуем собрать. Right Click на проекте -> Make.
Если все ОК, то деплоим, нет — разбираемся.
Можно создать несколько сервисов с одинаковым именем, но разной версии.
Вызывать можно все, но по стандартному адресу будет работать только default-ревизии. В Enterprise Manager можно применить default на задеплоенном композите.
Добавим локальный сервер. Жмем плюс.
Выбор SOA сервера.
Несколько примеров интересных возможностей.
Цикл и итератор.
Использование итератора в цикле.
Много встроенный функций, например генерация guid.
Вкусное. Можно вставить Java.
Есть бизнес-процесс который вызывает внешнюю систему, которая через какое-то время делает запрос в тестируемую систему. Этого в нашем бизнес-процессе нет.
Необходимо настроить партнерские соглашения с новым сервисом, прописать переменные и вставить invoke сервиса запросом ReqSyncFinancialTransactionBatch в наш бизнес-процесс.
Сервис-провайдер, который принимает запрос ReqSyncFinancialTransactionBatch тоже построен на SOA и по хорошему стечению обстоятельств от него есть композит.
Нужно его распаковать и перетащить все, что относится к вызову провайдера в наш композит.
Добавляем пространства имен от провайдера и типа запроса в список.
Добавление партнерского соглашения.
Мне потребовалось еще и импортировать схемы.
Делаем присвоения в новом запросе, там где необходимо в соответствии со схемой.
Делаем вызов сервиса invoke, и вычитывание ответа receive, если нужно.
Если нужно, проставляем необходимые хедеры к запросу с помощью bpelx:toProperties.
Положим wsdl PROVIDER_TAWrapper.wsdl от сервиса в наш проект
Добавим reference в файл сfgplan
Тестирование композита
Проверим то, что мы наделали.
- Берем SoapUI, генерируем mosk-сервис, используя wsdl от задеплоенного нами сервиса.
- Берем пример запроса к нашему сервису, прописываем в настройках в ReplyTo адрес mosk, которого только что создали. В Action прописываем операцию. Картинка кликабельна.
- Также возьмем SoapUI, генерируем mosk-сервис, используя wsdl от сервис-провайдера.
- Копируем адрес wsdl и прописываем его в файле composite.xml в нашем сервисе. Таким образом мы указываем куда будет идти внедренный запрос.
- Сохраняем, деплоим с другой версией. Снимаем также галочку в default, чтобы наш дебаг никому не помешал.
Анализ проблем при работе
Что делать если разработчики скажут, что наша заглушка тормозит, а у них все отлично?
Будем разбираться.
Потребовалось найти запросы по содержимому, чтобы понять что с ним случилось. Таблица CUBE_INSTANCE в нашей схеме DEV_SOAINFRA содержит всю историю по композитам. Но для просмотра надо ее вытащить из блоба.
Нашел тут функцию, которая это делает
и пример использования
-
Ищем проблемный запрос. Картинка кликабельна.
Тут ничего сложного
-
Для мониторинга системных ресурсов и метрик soa eсть замечательная вкладка Perfomace summary.
Размер табличного пространства можно смотреть в таблице dba_tablespace_usage_metrics
Заключение
За неизвестное можно и нужно браться и не бояться ошибиться. Да, и JDev мне понравился больше чем Eclipse.
Читайте также: