проверка nifi: соответствие значения атрибута - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь написать EL в процессоре атрибутов обновления. Ниже мое требование:

Ввод пользователя: IP-адрес Хранение в атрибуте: target.host.name.linux

У меня есть другой набор атрибутов, определенных в nifi.properties как:

trigger.target.system.linux.name=10.44.245.33
trigger.target.system.linux.password=Passw0rd

Я пытаюсь сравнить введенное пользователем значение со значением атрибута, присутствующим в файле свойств. Если они совпадают, я назначу переменную выше trigger.target.system.linux.password в истинном состоянии, либо опубликую 'no match'

Ниже приведены некоторые EL, которые я пробовал, но напрасно:

    ${${target.host.name.linux:equals(${trigger.target.system.linux.name})}:ifElse(${trigger.target.system.linux.password},'no match')}

${${'target.host.name.linux':equals(${'trigger.target.system.linux.name'})}:ifElse(${'trigger.target.system.linux.password'},'no match')}

${${${target.host.name.linux}:equals(${trigger.target.system.linux.name})}:ifElse(${trigger.target.system.linux.password},'no match')}

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Файл nifi.properties не подходит для определений пользовательских свойств - он используется платформой приложения для конфигурации, но не предназначен для принятия произвольных значений.

В вашем случае вы должны воспользоваться функцией Реестр переменных в Apache NiFi, которая позволяет вам определять пользовательские переменные и ссылаться на них в предложениях языка выражений. В этом случае, определяя две переменные в реестре, а затем используя процессор RouteOnAttribute для маршрутизации на тот или иной процессор UpdateAttribute в зависимости от соответствия (этот подход удаляет вложенные выражения EL ifElse; если вам удобно с ними вы можете придерживаться подхода UpdateAttribute, предложенного Jagrut).

0 голосов
/ 09 мая 2018

Вы можете использовать этот EL в процессоре UpdateAttribute:

Key: target.host.name.linux
Value: ${target.host.name.linux:equals(${trigger.target.system.linux.name}):ifElse(${trigger.target.system.linux.password},'no-match')}

Иллюстрация:

Записи в файле свойств

enter image description here

Тестовый поток для проверки EL enter image description here

Обновление процессора атрибутов enter image description here

Пользователь вводит соответствующее значение (шаг ввода пользователя) enter image description here

UpdateAttribute EL result enter image description here

Пользователь вводит несоответствующее значение (шаг ввода пользователя) enter image description here

UpdateAttribute EL result enter image description here

...