Работа с атрибутами
Атрибуты FlowFile
Все данные в Apache NiFi представлены абстракцией, называемой FlowFile. FlowFile состоит из двух основных частей: содержимого и атрибутов. Информация о FlowFile доступна при нажатии на иконку на странице List queue контекстного меню очереди потока.




Полный список основных атрибутов приведен в разделе FlowFile руководства разработчика NiFi.
Атрибуты FlowFile могут быть извлечены и использованы в качестве свойств процессоров при настройке потоков в интерфейсе NiFi.
Свойства процессора
Во время настройки процессоров на вкладке PROPERTIES отображаются свойства процессора. В столбце Property указано наименование параметра. В столбце Value указывается значение параметра. В зависимости от значений, разрешенных для свойства, в столбце Value пользователю предоставляется либо раскрывающийся список, из которого можно выбрать значение, либо текстовая область для ввода значения.


Для параметров с текстовой областью для ввода значений существуют следующие формы ввода значения:
-
напрямую;
-
с использованием параметров, определяемых при помощи контекста параметров;
-
с использованием переменных, задаваемых при помощи языка выражений Expression Language;
-
с использованием параметров вместе с языком выражений (подробно описано в Parameters and Expression Language).
В верхней части окна для ввода значения указано, поддерживаются ли Expression Language (EL) и Parameters (PARAM) для ввода значения конкретного свойства данного процессора.


Параметры имеют следующие преимущества перед переменными:
-
поддержка конфиденциальных значений;
-
более детальный контроль над политиками доступа;
-
свойства, ссылающиеся на параметры, проверяются на соответствие замененному значению, в отличие от большинства свойств, ссылающихся на переменные с помощью языка выражений.
Параметры
Значения свойств в потоке, включая конфиденциальные свойства, можно параметризовать с помощью параметров. Параметры создаются в окне Parameter Contexts глобального меню интерфейса NiFi Server. Контексты параметров глобально определяются для каждого экземпляра NiFi. К контекстам параметров можно применять политики доступа, чтобы определить какие пользователи могут их создавать.
Любое свойство можно настроить для ссылки на параметр со следующими условиями:
-
Конфиденциальное свойство может ссылаться только на конфиденциальный параметр.
-
Неконфиденциальное свойство может ссылаться только на неконфиденциальный параметр.
-
Свойства, которые ссылаются на службы контроллера, не могут использовать параметры.
-
На параметры нельзя ссылаться в задачах создания отчетов или в службах контроллера управления.
Создание контекста параметров
Чтобы создать контекст параметров, необходимо:
-
Через глобальное меню интерфейса NiFi Server открыть окно Parameter Contexts.
-
Нажать + для создания контекста параметров.
-
На вкладке SETTINGS открывшегося окна Add Parameter Context ввести название и описание контекста параметров.
Создание контекста параметровСоздание контекста параметров -
Нажать APPLY.
В результате в окне Parameter Contexts отображается созданный контекст параметров.
Созданный контекст параметровСозданный контекст параметров
Создание параметров в контексте параметров
ПРИМЕЧАНИЕ
Допускается как создавать параметры при создании контекста параметров, так и добавлять параметры уже в созданный контекст параметров. |
Чтобы создать новый параметр в контесте параметров, необходимо:
-
Открыть для редактирования созданный контекст параметров, кликнув в строке контекста параметров на иконку редактирования
.
-
На вкладке PARAMETERS нажать + для создания параметра.
-
В открывшемся окне Add Parameter заполнить поля для параметра:
-
Name — имя, которое используется для обозначения параметра. Допускаются только буквенно-цифровые символы, дефисы, символы подчеркивания, точки и пробелы.
-
Value — значение, которое будет использоваться при ссылке на параметр. Если параметр использует язык выражений, важно отметить, что язык выражений будет оцениваться в контексте компонента, который ссылается на параметр. Дополнительные сведения об использовании языка выражений в параметрах приведены ниже.
-
Set empty string — отметьте этот флажок для установки значения параметра в пустую строку. Не отмечен по умолчанию. Если флажок установлен, но значение указано, флажок игнорируется.
-
Sensitive Value — установите значение
Yes
, если значение параметра следует считать конфиденциальным. Если параметр конфиденциален, значение параметра не будет отображаться в пользовательском интерфейсе после применения. Значение по умолчанию —No
. На конфиденциальные параметры могут ссылаться только конфиденциальные свойства, а на неконфиденциальные параметры — неконфиденциальные свойства. После создания параметра значение его конфиденциальности нельзя изменить. -
Description — описание параметра. Это поле является необязательным.
Создание параметраСоздание параметра
-
-
Нажать APPLY.
В результате открывается иформационное окно по обновлению или созданию параметра. Для проверки всех компонентов, которые ссылаются на добавленные или измененные параметры, выполняются следующие операции: остановка или перезапуск зависимых процессоров, отключение или повторное включение зависимых служб контроллера, обновление контекста параметров.
Информационное окноИнформационное окно -
Нажать CLOSE. В результате в окне Update Parameter Context отображается созданный параметр.
Созданный параметрСозданный параметр
Работа с контекстом параметров в интерфейсе NiFi server
Для того, чтобы распространить созданный контекст параметров на группу процессов, необходимо выполнить:
-
На свободном поле правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.
-
В открывшемся окне NiFi Flow Configuration на вкладке GENERAL для параметра Process Group Parameter Context во всплывающем списке выбрать необходимый контекст параметров.
-
Нажать APPLY.
Включение контекста параметров для группы процессовВключение контекста параметров для группы процессов
Для того, чтобы применить созданный параметр из выбранного контекста параметров для конкретного процессора, необходимо выполнить:
-
Для выделенного процессора правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.
-
На вкладке PROPERTIES выбрать нужный параметр и в открывшемся окне ввести значение параметра в виде
#{name}
, гдеname
— имя, введенное при создании параметра в контексте параметров.Применение созданного параметраПрименение созданного параметра -
Нажать OK.
В случае успешного применения параметра в последнем столбце назначенного свойства появляется иконка , при клике на которую происходит переход на страницу Update Parameter Context, где данный параметр доступен к изменению.




При клике на иконку каждый параметр также может быть записан в данный контекст параметров.


Переменные
Переменные создаются и настраиваются в пользовательском интерфейсе NiFi. Их можно использовать в любой области, поддерживающей Expression Language. Переменные нельзя использовать для конфиденциальных свойств. NiFi автоматически подбирает новые или измененные переменные. Переменные определяются на уровне группы процессов, поэтому политики доступа для просмотра и изменения переменных являются производными от политик доступа группы процессов.
Создание переменной
Чтобы создать переменную, необходимо:
-
На свободном поле правой кнопкой мыши вызвать контекстное меню и выбрать команду Variables.
-
В открывшемся окне нажать + для создания переменной.
-
Ввести наименование переменной
-
Кликнуть OK.
Создание переменнойСоздание переменной -
Ввести значение переменной.
Ввод значения переменнойВвод значения переменной -
Кликнуть OK.
-
В окне Variables нажать APPLY, в результате открывается иформационное окно по обновлению или созданию переменной.
Информационное окноИнформационное окно
Использование переменных в свойствах процессора с применением языка выражений
Для того, чтобы применить созданную переменную для конкретного процессора, необходимо выполнить:
-
Для выделенного процессора правой кнопкой мыши вызвать контекстное меню и выбрать команду Configure.
-
На вкладке PROPERTIES выбрать нужный параметр и в открывшемся окне ввести значение параметра в виде
${name}
, гдеname
— имя, введенное при создании переменной.Применение созданного параметраПрименение созданного параметра -
После ввода функции для переменной нажать OK в окне ввода значения свойства и APPLY на вкладке PROPERTIES в окне Configure процессора.
ПРИМЕЧАНИЕ
Переменные в дочерней группе процессов переопределяют значения в родительской группе. В частности, если переменная задана в группе root, а также получает иное значение внутри группы процессов, то в таком случае компоненты внутри группы процессов используют значение, определенное непосредственно в самой группе процессов. |
Проверка зависимых компонентов
В окне Variables для выбранной переменной в строке Referencing Components отображаются наименования всех процессоров, в которых применяется данный параметр.


ВНИМАНИЕ
При создании настраиваемых свойств убедитесь, что каждое настраиваемое свойство содержит отдельное значение свойства, чтобы оно не перекрывалось существующими свойствами среды, системными свойствами или атрибутами FlowFile. |
Параметры с использованием языка выражений
При добавлении параметра, использующего язык выражений, важно понимать контекст, в котором будет оцениваться язык выражений. Выражение всегда оценивается в контексте службы процессора или контроллера, которая ссылается на параметр. Возьмем, к примеру, сценарий, в котором у параметра с именем Time
значением является ${now()}
.
Результатом выражения является вызов для определения системного времени при его оценке. При добавлении параметра Time
в качестве свойства системное время оценивается не при добавлении параметра, а при оценке выражения службой процессора или контроллера. То есть, если процессор имеет свойство, значение которого установлено на #{Time}
, он будет работать точно так же, как если бы значение свойства было установлено на ${now()}
. Каждый раз, когда на свойство ссылаются, оно создает другую отметку времени.
Кроме того, некоторые свойства не позволяют использовать язык выражений, в то время как другие разрешают использовать язык выражений, но не оценивают выражения по атрибутам FlowFile. Чтобы понять, как это работает, рассмотрим параметр с именем File, значение которого равно ${filename}
. Затем рассмотрим три разных свойства, каждое из которых имеет свою область языка выражений и FlowFile с именем файла test.txt. Если для каждого из этих свойств задано значение #{File}
, результирующее значение показано в следующей таблице.
Настроенное значение свойства | Область действия Expression Language | Эффективное значение свойства | Примечания |
---|---|---|---|
#{File} |
Атрибуты FlowFile |
test.txt |
Имя файла разрешается просмотром атрибута имени файла |
Только реестр переменных |
Пустая строка |
Атрибуты FlowFile не входят в область действия, и предполагается, что в реестре переменных нет переменной с именем |
|
Нет |
${filename} |
Буквальный текст |