Make legacy great again Для начала запускаем IBM App Connect Entrerprise Toolkit (в десятой версии - IBM Integration Toolkit), слева во вкладке "Application Development" нажимаем New -> Start by creating an application: Приложения в IBM Integration Bus (далее - IIB) служат как логические контейнеры для flow. Flow в интеграционной шине всегда должно иметь начало и конец. Наш flow должен уметь принимать HTTP запросы, поэтому в начало мы поставим HTTP Input: Далее, нужно создать Message Flow. Приложение может содержать несколько flow, в данном примере создадим один и назовем его Incrementor. Для этого в приложении нажимаем на (New...) -> Message Flow: На flow размещаются компоненты из палитры: Каждый flow для работы должен иметь как минимум входной компонент. Такие компоненты в палитре отмечаются зелёной полоской слева. В нашем случае мы будем использовать компонент HTTPInput. Для его размещения на flow выбираем в палитре вкладку HTTP, зажимаем правую кнопку мыши на HTTPInput и перетаскиваем компонент на flow editor: Настройки компонента: Path suffix for URL - нужно указать путь для эндпоинта. Следует указывать только путь, адрес и порт указывать не нужно Message domain - тут нужно указывать формат тела запроса, который будет приходить на эндпоинт. Часто используются три формата: XMLNSC - для XML сообщений, позволяет использовать валидацию и потребляет мало памяти JSON - для JSON сообщений BLOB - для набора байтов, после это сообщение можно распарсить в ESQL В данном случае будем использовать JSON. Maximum client wait time (sec)* - время ожидания клиента в секундах. Если время обработки сообщения займёт больше указанного, то IIB сгенерирует сообщение об ошибке и вернёт клиенту. Fault format* - формат ошибки после таймаута. Можно выбрать SOAP 1.1, SOAP 1.2m, HTML и JSON. В данном случае выбираем JSON. Остальные настройки оставляем по умолчанию. После получения сообщения необходимо его обработать. За это отвечает компонент Compute, который находится на палитре во вкладке Transofmation: После сохранения редактора компонент Compute будет показывать ошибку, так как к нему не привязан файл ESQL. ESQL - это язык программирования, который используется в IIB для обработки сообщений и построения сложной логики. Подробнее тут: https://www.ibm.com/docs/en/integration-bus/10.0?topic=esql-overview. Для создания и привязки ESQL файла к Compute дважды на нём щёлкаем. После этого открывается редактор кода с сгенерированным шаблоном: Вернёмся во flow. Чтобы передать сообщение из HTTPInput в Compute, их необходимо соединить через терминалы. Каждый компонент в палитре IIB имеет терминалы. Терминалы - это точки соединения компонентов друг с другом, они подразделяются на входные и выходные. Входные компоненты имеют только выходные терминалы. Например, HTTPInput имеет 4 выходных терминала, а именно: Failure - присутствует практически в каждом компоненте. Если в компоненте происходит Exception, сообщение выходит из этого терминала Out - если всё успешно, сообщение выходит тут HTTP Timeout - если flow долго отрабатывает, в нём генерируется ошибка Catch - сюда приходят Exception с flow Чтобы вернуть ответ клиенту, ставим компонент HTTPReply: Теперь заходим в Compute и в функции Main пишем следующий код: SET OutputRoot.JSON.Data.testNumber = InputRoot.JSON.Data.testNumber + 1; Здесь OutputRoot - исходящее сообщение, InputRoot - входящее, JSON - domain сообщения. Приложения деплоят на интеграционные сервера, которые, в свою очередь, поднимаются на Integration Nodes. Если тулкит показывает, что ноды у вас нет, нужно её создать. Для этого запускаем IBM Integration Console (IBM App Connect Enterprise Console) и вбиваем там команду: mqsicreatebroker IB10NODE -i wbrkuid -a wbrkpw Где IB10NODE - имя ноды, wbrkuid - логин пользователя Windows, wbrkpw - пароль от него. Затем,уже в интерфейсе создаём внутри ноды интеграционный сервер через щелчок правой кнопкой мыши на ноде -> New Integration Server. В итоге должно выглядеть так: Чтобы задеплоить приложение, его необходимо запаковать в BAR. Для этого жмём правой кнопкой мыши на приложении -> New -> BAR file. Как Container выбираем само приложение, имя ставим какое угодно: Далее жмём на барник и выбираем внутри него приложение, которое хотим задеплоить: Далее надо сбилдить барник, для этого жмём кнопку “Build and Save…”. Деплоим на интеграционный сервер, для этого жмём правой кнопкой мыши на Incrementntreger.bar -> Deploy и выбираем нужный сервер. Также можно просто перенести барник мышкой на нужный интеграционный сервер, через Drag n Drop. Для того, чтобы протестировать приложение, надо сначала найти, какой http порт использует нода. Существует два типа http listener - на всю ноду и встроенный в интеграционный сервер. По умолчанию для http запросов используется первый. Чтобы узнать, какой именно порт используется, в Integration Console вбиваем команду: mqsireportproperties IB10NODE -b httplistener -o HTTPListener -r Порт находится в параметре HTTPListener->HTTPConnector->ListenerPort Проверяем в SoapUI: Готово! В следующий раз опишу обработку исключений и логирование в IIB.