Перейти к основному содержимому
Руководство администратора
How To статьи
Установка и настройка
Компоненты
Руководство пользователя
Начало работы

Общее описание

Simple — это язык выражений, созданный для того, чтобы покрыть около 95% всех повседневных задач по маршрутизации и трансформации данных без подключения внешних библиотек . Он идеально подходит для быстрой проверки условий (предикатов) и простых преобразований.

Основной синтаксис и переменные

Simple использует синтаксис ${ } для подстановки переменных. Если выражение состоит из одной переменной, фигурные скобки можно опустить .

Базовые переменные (что можно использовать):

  • Тело сообщения: ${body} — всё тело сообщения.
  • Заголовки: ${header.имя_заголовка} — конкретный заголовок.
  • Переменные: ${variable.имя_переменной} — конкретная переменная (простая, с указанием типа данных, системная, и т.д.).
  • Свойства Exchange: ${exchangeProperty.имя} — свойства Exchange.
  • Адаптация типов: ${bodyAs(String)} — преобразует тело в строку, ${mandatoryBodyAs(Integer)} — требует обязательного преобразования в число .

Дополнительные возможности:

  • Системные данные: ${sys.имя} (системные свойства), ${sysenv.имя} (переменные окружения), ${date:now:yyyyMMdd} (текущая дата) .
  • Константы: Обращение к статическим полям Java через type:.

Обзор функций

Язык выражений Simple поддерживает различные типы функций. Примеры типов функций:

  • Математические: ${sum()}, ${min()}, ${max()}, а также инкремент ${++value} и декремент ${--value}.
  • Строковые: ${trim()}, ${toUpperCase()}, ${startsWith('A')}.
  • Случайные: ${random(10)} (число от 0 до 9) или ${random(5, 10)} .

Операторы сравнения (Предикаты)

Simple поддерживает стандартные операторы и специальные ключевые слова для создания условий, например, в фильтрах .filter().

  • Сравнение: ==, >, >=, <, <=, !=.
  • Проверка строк: contains, regex (регулярные выражения), in (проверка на вхождение в список).
  • Типы данных: is (${body} is 'com.mycompany.MyType').
  • Диапазоны: range (${header.number} range '100..199').
  • Логика: && (И), || (ИЛИ).

Пример условия: ${header.age} >= 18 && ${body.size} > 0.

Дополнительные возможности

Приведенные ниже операторы обеспечивают удобство работы со сложной логикой:

  • Тернарный оператор (? :): Позволяет писать условия в одну строку.
    • Пример: ${header.count > 0 ? 'Positive' : 'Zero'}.
  • Elvis-оператор (?:): Возвращает значение по умолчанию, если переменная пуста или равна null.
    • Пример: ${header.userName ?: 'Guest'}.
  • Chain-оператор (~>): Позволяет последовательно применять функции, делая код чище.
    • Пример: ${body} ~> ${trim()} ~> ${toUpperCase()} (вместо вложенных функций).
  • Init-блоки ($init{...}init$): Позволяют объявлять переменные в начале выражения, чтобы переиспользовать их.
    • Пример: $init{ $nick := ${header.firstName} }init$ Привет, $nick.

Загрузка сценария из внешнего ресурса

Simple позволяет вынести сценарий во внешний файл и настроить его загрузку из такого ресурса, как classpath:, file: или http:. Это делается с помощью следующего синтаксиса: "resource:scheme:location".

Пример ссылки на файл:

.setHeader("myHeader").simple("resource:classpath:mysimple.txt")

Важные замечания

  • Для сложной логики: Если выражение становится слишком сложным, рекомендуется рассмотреть использование специализированных языков, таких как Groovy и Java.
  • Конфигурация: У Simple есть параметры resultType (задание класса типа результата) и trim (авто-удаление начальных и конечных пробелов), которые можно настроить.

В следующих разделах приведено описание различных типов функций, поддерживаемых языком выражений Simple.