В прошлой статье я описал свои попытки написания приложений Mule в версии IntelliJ для Kernel. Без удачи. Здесь я сосредоточусь на написании простого приложения в среде, которую мы должны хорошо знать … Anypoint Studio . После этого я разверну это приложение на сервере приложений Kernel, чтобы проверить, как оно работает. Если вам интересна основная информация о Mule Kernel 4, посмотрите эту статью, где я раскрыл некоторые основные новости.
Anypoint Studio
Новейшую версию Anypoint Studio можно скачать здесь . Если вы уже установили Studio, я советую вам сравнить версии. Бывает, что чуть более старые версии, такие как 7.2.2 , не получат обновления до версии 7.3 . Это хорошо проверить, особенно когда происходит быстрое развитие этой IDE.
Anypoint Studio — это платформа для разработки приложений Mule. Однако начиная с версии 7 он предназначен только для корпоративных сред выполнения. С другой стороны, на одной из страниц MuleSoft я заметил информацию о том, что Kernel поддерживает или будет поддерживать Anypoint Studio.
Демо-приложение
Приложение будет действительно простым. Слушатель HTTP будет принимать только запросы GET и POST для одного URI. Как на диаграмме ниже.
Первая операция вернет статический статус сервиса. Ниже вы можете найти выход.
{
"status": "UP",
"details": {
"serviceType": "http",
"status": "UP",
"statusCode": 200
}
}
Здоровье
Рекомендуется встраивать конечную точку работоспособности в приложение. Подробнее об этом я написал в следующей статье .
Вторая операция примет ввод JSON и создаст из этого XML-документ. Ответ будет выглядеть ниже.
<health>
//your input here as an XML
</health>
развитие
Вы можете найти полный код на GitHub . Если вы хотите сделать это самостоятельно, пожалуйста, внимательно следуйте этой главе.
Создание проекта
В Anypoint Studio вы можете создать новый проект Mule. Сначала выберите время выполнения. Хотя мы разрабатываем приложение для среды выполнения Kernel, мы должны выбрать EE в студии.
Подготовка API
Мы будем использовать APIKit для генерации потоков. Для этого нам нужно подготовить спецификацию RAML API. Ниже вы можете найти действительно простой, но достаточный для этой демонстрации.
#%RAML 1.0
title: Health Service
mediaType: application/json
/health:
get:
post:
Как только мы получим этот файл в src / main / resources / api, вы можете щелкнуть по нему и выбрать Mule> Generate Flows from REST API.
Предупреждение — EE Namespace
По умолчанию APIKit будет генерировать обработку ошибок с компонентами Transform Messages. Чтобы использовать его во время выполнения ядра, нам нужно изменить его на Set Payload и Set Variable .
Вот пример преобразования, подготовленного для APIKIT: ошибка BAD_REQUEST
<ee:transform>
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{message: "Bad request"}]]>
</ee:set-payload>
</ee:message>
<ee:variables>
<ee:set-variable variableName="httpStatus">400</ee:set-variable>
</ee:variables>
</ee:transform>
Как видите, преобразование задает простое тело JSON со свойством сообщения и переменной httpStatus, которые будут использоваться для установки статуса HTTP, возвращаемого клиенту. В примере кода ошибки 400 нам нужно переписать его, используя компоненты Set Payload и Set Variable, как показано ниже
<set-payload value='#[output application/json
---
{message: "Bad request"}]' doc:name="Set Eror Payload"/>
<set-variable value="400" doc:name="Set HTTP status" variableName="httpStatus"/>
Реализация методов
Пока что у нас должен быть файл приложения, API и конфигурации Mule с сгенерированными потоками. У нас должно быть два частных потока:
- получить: \ здоровья: здоровье-конфигурация
- почта: \ здоровье: здоровье-конфигурация
Нам нужно опустить все компоненты, которые находятся в пространстве имен EE . Поэтому я буду использовать процессор Set Payload для выполнения простых преобразований.
EE Процессоры
Когда вы перетаскиваете любое пространство имен EE в форме процессора, например, Transform Message, вы не сможете запустить это приложение во время выполнения ядра. Вам необходимо удалить этот процессор и позаботиться о пространствах имен в Configuration XML.
Пример удаления:
xmlns: ee = «http://www.mulesoft.org/schema/mule/ee/core»
и соответствующей строки в форме xsi: schemaLocation
http://www.mulesoft.org/schema/mule/ee / core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
В Set Payload я установил следующее значение:
Anypoint Studio — редактор DataWeave
Начиная с версии 7.3 из AnyPoint студии нового редактора было введено для написания выражений DataWeave в других компонентах , таких как Set Payload, Logger и т.д. Это будет выглядеть как стандарт Transform редактор сообщений — вы сможете увидеть его выше.
Чтобы включить это представление, вам нужно нажать кнопку f (x) рядом с полем.
Как видите, я указал, используя директиву output , что я ожидаю JSON . В разделе body я предоставил структуру, которая будет переведена в объект application / JSON.
На этот раз в Set Payload я предоставил следующее выражение:
output application/xml
---
{
"health": payload
}
В результате у меня будет документ XML с корневым элементом, называемым работоспособностью, и подэлементами, поступающими из входного запроса.
Включение ядра 4
Чтобы убедиться, что вы делаете свое приложение для среды выполнения ядра, вам нужно отредактировать файл mule-artifact.json .
В теле JSON вам нужно добавить свойство с именем requiredProduct, как в примере ниже.
{
"requiredProduct":"MULE",
"minMuleVersion":"4.1.1"
}
Согласно документации, значение MULE означает, что приложение может быть развернуто во время выполнения ядра. Когда мы указываем MULE_EE, это означает, что приложение может быть развернуто во время выполнения Enterprise.
развертывание
Для того, чтобы развернуть приложение, вам нужно сначала его собрать. Вы можете сделать это с помощью следующей команды
mvn clean install
Развертываемые артефакты теперь упакованы в файл JAR . В результате в целевом каталоге вы найдете файл jar вместо zip-архива.
Вам нужно переместить этот файл в папку приложений вашей среды выполнения. Во время выполнения вы должны увидеть состояние развертывания, например:
Теперь вы готовы это проверить.
Резюме
Разработка приложения для среды выполнения ядра довольно проста, но вы должны иметь в виду, что в настоящее время Anypoint Studio не поддерживает эту среду выполнения. Тем не менее, мы можем разработать приложение с использованием среды выполнения EE.
Есть некоторые вещи, которые вам нужно запомнить, такие как:
- не использовать корпоративные компоненты, такие как Transform Message
- удалить ее пространство имен
- APIKit использует Transform Message по умолчанию для обработки ошибок
- требуемый продукт должен быть установлен в mule-artifact.json