Статьи

Ядро Mule 4: Anypoint Studio

В прошлой статье я описал свои попытки написания приложений 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