Кастомные теги
Кастомные теги представляют собой мощные инструменты в интеграционной платформе Entaxy ION, обеспечивая гибкость в настройке и создании интеграционных процессов.
С их помощью можно выбирать и указывать коннекторы для связи с внешними системами, выполнять специальные операции перед обработкой данных, задавать точные пункты назначения для отправки данных, добавлять метаданные для отслеживания и управления процессами и многое другое.
Каждый из тегов имеет свою специфическую роль и может быть применен для упрощения и точной настройки различных аспектов интеграции.
| Tag | Размещение | Краткое описание |
|---|---|---|
<m:connector-selector /> |
Out-Flow → Output connector selector |
connector-selector |
<m:set-destination /> |
In-Flow → pre-route |
set-destination |
<m:entaxy-trace /> |
во всех точках кастомизации |
entaxy-trace |
<m:respond /> |
In-Flow → pre-route |
respond |
<m:to-connection /> |
In-Flow → pre-route |
to-connection |
<m:xslt /> |
во всех точках кастомизации |
xslt |
<m:xslt-xalan /> |
во всех точках кастомизации |
xslt-xalan |
<m:default-destination /> |
In-Flow → pre-route |
default-destination |
<m:next-route /> |
In-Flow → pre-route |
next-route |
<m:standard-router> |
default-route |
standard-router |
<m:prefer-connector /> |
In-Flow → pre-route |
prefer-connector |
<m:connector-preferred-as-mandatory> |
Out-Flow → Output connector selector |
connector-preferred-as-mandatory |
<m:atlasmap /> |
во всех точках кастомизации |
atlasmap |
<m:read-secret /> |
во всех точках кастомизации |
read-secret |
<m:set-log-key /> |
во всех точках кастомизации |
set-log-key |
<m:log /> |
во всех точках кастомизации |
log |
<blueprint:reference /> |
во всех точках кастомизации, внутри определения маршрута. рекомендуется размещать его в начале маршрута. |
blueprint:reference |
<blueprint:bean /> |
во всех точках кастомизации |
blueprint:bean |
<m:call-route /> |
во всех точках кастомизации |
call-route |
connector-selector
Описание: Тег определяет механизм выбора коннектора на основе заданных свойств и шаблонов.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<!-- you can use camel -->
<m:connector-selector>
<m:properties-to-use>
<m:property>connector.type</m:property>
<m:property>connector.protocol</m:property>
<m:property>connector.classifier</m:property>
</m:properties-to-use>
<m:patterns>
<m:pattern>*:*:=</m:pattern>
</m:patterns>
<m:options>
<m:fail-back-to-legacy-router/>
<m:use-the-only-connector>false</m:use-the-only-connector>
<m:use-default-connector/>
<m:connector-preferred-as-mandatory>false</m:connector-preferred-as-mandatory>
<m:allow-all-stars-pattern>false</m:allow-all-stars-pattern>
<m:treat-no-property-as-any>false</m:treat-no-property-as-any>
</m:options>
</m:connector-selector>
</entaxy:object-route>
Внутренние теги:
<properties-to-use> - содержит список свойств, которые будут использованы при выборе коннектора:
-
<property>connector.type</property> - тип коннектора
-
<property>connector.protocol</property> - протокол коннектора
-
<property>connector.classifier</property> - классификатор коннектора
<patterns> - содержит список шаблонов, которые будут сопоставлены с переданными параметрами для выбора соответствующего коннектора:
-
<pattern>=:=:=</pattern> - соответствует точным значениям всех трех свойств (connector.type, connector.protocol и connector.classifier).
-
<pattern>=:=:*</pattern> - соответствует точным значениям первых двух свойств (connector.type и connector.protocol), а значение connector.classifier может быть любым.
-
<pattern>=:*:*</pattern> - соответствует точному значению connector.type и любым значениям connector.protocol и connector.classifier.
-
<pattern>*:=:=</pattern> - соответствует любому значению connector.type и точным значениям connector.protocol и connector.classifier.
-
<pattern>*:=:*</pattern> - соответствует любому значению connector.type и connector.classifier и точному значению connector.protocol.
<options> - элемент содержит дополнительные настройки для выбора коннектора:
-
<fail-back-to-legacy-router /> - если не удалось выбрать коннектор с использованием <connector-selector> система вернется к использованию legacy маршрутизации.
-
<use-the-only-connector /> - если в системе существует только один коннектор, то он будет автоматически использован. Значение по умолчанию - true.
-
<use-default-connector /> - использовать коннектор по умолчанию.
-
<connector-preferred-as-mandatory /> - определяет поведение системы при выборе коннектора. Значение по умолчанию - false.
-
<allow-all-stars-pattern>false</allow-all-stars-pattern> - запретить использование шаблона со звездочкой (*) для всех свойств. Значение по умолчанию - false.
-
<treat-no-property-as-any>false</treat-no-property-as-any> - если в коннекторе нет property, то рассматривать ли это как любое значение property или нет. Значение по умолчанию - false.
set-destination
Описание: Тег служит для указания имени целевой системы.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preRouted">
<constant>true</constant>
</setProperty>
<m:set-destination>system2</m:set-destination>
</entaxy:object-route>
entaxy-trace
Описание: Тег используется для добавления трассировочной информации о прохождении данных через различные этапы или компоненты системы. Он позволяет маркировать данные для последующего отслеживания и анализа, помогая понять, как информация перемещается через кастомизируемые точки маршрута.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<m:in-flow-pre-route-start />
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<m:entaxy-trace>
<simple>any text</simple>
</m:entaxy-trace>
</entaxy:object-route>
respond
Описание: Используется для управления потоком данных и маршрутизацией в процессе интеграции.
В точке кастомизации pre-route входного коннектора / в точке кастомизации pre-route входного потока профиля.
Вот как работает каждый вариант:
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<m:in-flow-pre-route-start />
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<m:set-destination>system-1</m:set-destination>
<m:respond now="true" continue="false" />
</entaxy:object-route>
-
<m:respond now="true" continue="true" />: Процесс интеграции немедленно начинает отправку ответа отправителю (now="true"), и после этого продолжает обработку данных (continue="true").
-
<m:respond now="true" continue="false" />: Процесс интеграции немедленно начинает отправку ответа отправителю (now="true"), и после этого не продолжает обработку данных (continue="false").
-
<m:respond now="false" continue="true" />: Отправка ответа происходит при достижении дефолтного маршрута (now="false"), и после этого продолжается обработка данных (continue="true").
-
<m:respond now="false" continue="false" />: Отправка ответа происходит по умолчанию при достижении дефолтного маршрута (now="false"), и после этого не продолжается обработка данных (continue="false").
to-connection
Описание: Используется для указания пути, по которому данные будут переданы на конкретную коннекцию.
-
Общий пример с использованием любых опций и настроек компонента подключения:
<m:to-connection> <!-- Здесь могут быть любые опции и настройки компонента подключения (коннекции) --> </m:to-connection> -
Пример с указанием имени и пути к коннекции:
<m:to-connection name="entaxy-broker" path="queue:test14"> <priority>${headers.JMSPriority}</priority> </m:to-connection> -
Пример с динамическим определением пути и использованием дополнительных настроек:
<m:to-connection name="entaxy-broker" path="queue:test16" dynamic="true"> <transacted>true</transacted> </m:to-connection>
xslt
Описание: Тег используется для xslt-преобразования пакета при помощи xslt-ресурса
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preOutput">
<constant>true</constant>
</setProperty>
<m:xslt resource="entaxy-resource://schemas/example.xsl"/>
<setHeader name="CamelFileName">
<constant>b.xml</constant>
</setHeader>
</entaxy:object-route>
xslt-xalan
Описание: Тег используется для xslt-преобразования пакета при помощи xslt-ресурса
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preOutput">
<constant>true</constant>
</setProperty>
<m:xslt-xalan resource="entaxy-resource://schemas/example.xsl"/>
<setHeader name="CamelFileName">
<constant>b.xml</constant>
</setHeader>
</entaxy:object-route>
default-destination
Описание: Установка значений заголовков для маршрутизации или обработки данных по умолчанию
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<m:in-flow-pre-route-start />
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<m:default-destination>system-b:system</m:default-destination>
</entaxy:object-route>
next-route
Описание: Обход дефолтного маршрута, с указанием заголовка следующей точки маршрута
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preRouted">
<constant>true</constant>
</setProperty>
<m:set-destination>system-1</m:set-destination>
<m:next-route local="false" async="false">lama</m:next-route>
</entaxy:object-route>
где:
lama - идентификатор точки входа (endpoint) в маршруте.
local - переменная, определяющая, является ли следующий маршрут (next-route) локальным (true) или удаленным (false).
async - переменная, определяющая, является ли следующий маршрут (next-route) асинхронным (true) или синхронным (false).
standard-router
Описание: Тег используется для маршрутизации данных на основе заданных правил или условий
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<m:standard-router />
</entaxy:object-route>
prefer-connector
Описание: Тег используется для выбора выходного коннектора в соответствии с указанными параметрами: протокол, классификатор, тип.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preRouted">
<constant>true</constant>
</setProperty>
<m:set-destination>system-2</m:set-destination>
<m:prefer-connector>
<m:protocol>file</m:protocol>
<m:classifier>main</m:classifier>
<m:type>file</m:type>
</m:prefer-connector>
<m:respond now="true" continue="false" />
</entaxy:object-route>
Добавлены параметры в компонент system для возможности вызвать компонент вне entaxy генератора:
<to uri="system:system-crm?connectorProtocol=file&connectorClassifier=main&connectorType=file"/>
connector-preferred-as-mandatory
Описание: Тег используется для определения поведения системы при выборе коннектора. Когда флаг установлен в true, это указывает системе, что подходящий коннектор должен рассматриваться как обязательный. Если подходящий коннектор не найден, будет сгенерирована ошибка, указывающая на отсутствие коннектора. По умолчанию установлен в значение false.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route xmlns="http://camel.apache.org/schema/blueprint" xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:entaxy="http://www.entaxy.ru/schemas/1.0" xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<!-- you can use camel -->
<m:connector-selector>
<m:properties-to-use>
<m:property>connector.type</m:property>
<m:property>connector.protocol</m:property>
<m:property>connector.classifier</m:property>
</m:properties-to-use>
<m:patterns>
<m:pattern>*:*:=</m:pattern>
</m:patterns>
<m:options>
<m:fail-back-to-legacy-router/>
<m:use-the-only-connector>false</m:use-the-only-connector>
<m:use-default-connector/>
<m:connector-preferred-as-mandatory>false</m:connector-preferred-as-mandatory>
<m:allow-all-stars-pattern>false</m:allow-all-stars-pattern>
<m:treat-no-property-as-any>false</m:treat-no-property-as-any>
</m:options>
</m:connector-selector>
</entaxy:object-route>
atlasmap
Описание: Тег используется в маршрутах интеграции для указания файла конфигурации (.adm), который определяет структуру данных и обеспечивает их преобразование в процессе интеграции.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<m:atlasmap resource="entaxy-resource://schemas/atlasmap-mapping.adm"></m:atlasmap>
</entaxy:object-route>
read-secret
Описание: Тег используется для чтения секрета из хранилища.
vault="default": указывает, какое хранилище использовать (в данном случае, хранилище по умолчанию).
alias="folder1": указывает название alias секрета в хранилище.
property=" _ SECRET _ ": Определяет имя свойства, в котором будет сохранено значение извлеченного секрета.
В данном случае, значение секрета будет сохранено в свойстве с именем " _ SECRET _ ", и это свойство может быть использовано далее в рамках маршрута.
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_connector_preRouted">
<constant>true</constant>
</setProperty>
<m:set-destination>system-2</m:set-destination>
<m:read-secret vault="default" alias="folder1" property="_SECRET_" />
<m:respond now="true" continue="false" />
</entaxy:object-route>
set-log-key
Описание: Используется для настройки и определения ключевых параметров логирования.
-
service: имя сервиса.
-
operation: операция или действие, которое выполняется в рамках данного логирования.
-
objectId: идентификатор объекта.
-
parameter: дополнительная информация или данные, которые могут быть важны для текущей операции.
-
sender и receiver: участники данного обмена сообщениями.
-
custom: дополнительные настраиваемые поля с уникальными именами и значениями.
Пример использования:
<m:set-log-key>
<m:service>
<constant>Order Processing</constant>
</m:service>
<m:operation>
<constant>Create Order</constant>
</m:operation>
<m:objectId>
<constant>123456</constant>
</m:objectId>
<m:parameter>
<constant>Important Parameter</constant>
</m:parameter>
<m:sender>
<constant>Sales Department</constant>
</m:sender>
<m:receiver>
<constant>Warehouse</constant>
</m:receiver>
<m:custom name="Additional Parameter">
<constant>Parameter Value</constant>
</m:custom>
</m:set-log-key>
<m:log-with-key message="Processing order for service ${headers.service}, operation ${headers.operation}, objectId ${headers.objectId}" loggingLevel="INFO" logName="OrderProcessingLogger"/>
log
Описание: Записывает сообщение в лог с заданными параметрами.
Он использует параметры установлены ранее (включая те, которые были заданы с помощью <set-log-key>), и добавляет сообщение в лог с указанным уровнем логирования, именем логгера и другими атрибутами.
-
message: обязательный атрибут, определяющий текст для логирования с возможностью использования выражений для динамических значений.
-
loggingLevel: опциональный атрибут, задающий важность сообщения (по умолчанию INFO).
-
logName: опциональный атрибут, указывающий имя логгера для сообщения.
-
marker: опциональный атрибут для указания маркера slf4j, связанного с сообщением.
-
loggerRef: опциональный атрибут для указания пользовательского логгера из реестра.
Пример использования:
<m:set-log-key>
<m:service>
<constant>Order Processing</constant>
</m:service>
<m:operation>
<constant>Create Order</constant>
</m:operation>
<m:objectId>
<constant>123456</constant>
</m:objectId>
<m:parameter>
<constant>Important Parameter</constant>
</m:parameter>
<m:sender>
<constant>Sales Department</constant>
</m:sender>
<m:receiver>
<constant>Warehouse</constant>
</m:receiver>
<m:custom name="Additional Parameter">
<constant>Parameter Value</constant>
</m:custom>
</m:set-log-key>
<m:log message="Processing order for service ${headers.service}, operation ${headers.operation}, objectId ${headers.objectId}" loggingLevel="INFO" logName="OrderProcessingLogger"/>
blueprint:reference
Описание: Используется для создания ссылок на сервисы, предоставляемые другими компонентами или бандлами внутри OSGi контейнера.
| Атрибут | Описание | Тип |
|---|---|---|
|
Уникальный идентификатор ссылки на OSGi сервис. |
String |
|
Определяет, будет ли ссылка инициализирована лениво (lazy) или жадно (eager). По умолчанию установлено значение eager (жадно). |
String (lazy или eager) |
|
Явные зависимости. Список идентификаторов компонентов, которые должны быть активированы до установки данной ссылки. Значения разделяются пробелами. |
List<String> |
|
Определяет, является ли ссылка на сервис обязательной (mandatory) или опциональной (optional). Значение по умолчанию для атрибута availability определяется атрибутом default-availability в элементе blueprint. Если атрибут default-availability не указан, то ссылка считается обязательной. |
String (mandatory или optional) |
|
Имя интерфейса класса. Необязательный параметр. |
String |
|
Указывает на другой менеджер в другом контейнере Blueprint, зарегистрированный в реестре сервисов. Если установлен, имя компонента должно быть частью эффективного фильтра. |
String |
|
Фильтр, используемый для поиска соответствующего сервиса. Необязательный параметр. |
String |
Пример использования:
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route
xmlns="http://camel.apache.org/schema/blueprint"
xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:entaxy="http://www.entaxy.ru/schemas/1.0"
xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<!-- blueprint:reference -->
<blueprint:reference id="entaxy-broker" interface="org.apache.camel.Component"
filter="(connection.name=entaxy-broker)"/>
<!-- blueprint:reference -->
<to uri="entaxy-broker:queue:test36?ExchangePattern=InOnly"/>
<log message="consumer: ${body}"/>
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<m:atlasmap resource="entaxy-resource://schemas/atlasmap-mapping.adm"></m:atlasmap>
</entaxy:object-route>
blueprint:bean
Описание: Определяет и настраивает экземпляры Java-бинов, которые могут быть использованы в обменах сообщениями, позволяя интегрировать бины в маршруты.
| Attribute or Element | Syntax | Bean Metadata | Description |
|---|---|---|---|
|
|
|
Уникальный идентификатор |
|
|
|
Имя класса объекта или статической фабрики |
|
|
|
Определяет область действия бина. По умолчанию |
|
|
|
Имя метода, используемого для создания экземпляра бина на статической фабрике или фабрике компонента. |
Пример использования:
<blueprint:bean class="java.util.UUID" factory-method="randomUUID" id="uuidGenerator1" scope="prototype"/>
<setHeader name="ENTAXY_UUID">
<simple>${bean:uuidGenerator1.toString}</simple>
</setHeader>
<log message="${header.ENTAXY_UUID}"/>
В этом примере тег <blueprint:bean> используется для создания объекта, который генерирует случайные UUID.
call-route
Описание: Используется для вызова другого маршрута, с возможностью указания асинхронного или синхронного выполнения.
Пример использования:
<?xml version="1.0" encoding="UTF-8"?>
<entaxy:object-route xmlns="http://camel.apache.org/schema/blueprint" xmlns:blueprint="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:entaxy="http://www.entaxy.ru/schemas/1.0" xmlns:m="http://www.entaxy.ru/schemas/entaxy-mediators/1.0">
<setProperty name="NTX_profile_in_preRouted">
<constant>true</constant>
</setProperty>
<!-- call-route -->
<m:call-route library="library-01" name="aggregator-01" async="true"/>
<!-- call-route -->
</entaxy:object-route>
При установке значения async важно проверить настройки вызываемого маршрута, чтобы убедиться, что режимы вызова соответствуют выставленным параметрам.