Нифи: Чтение внешних свойств в пользовательском процессоре - PullRequest
0 голосов
/ 08 сентября 2018

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

Как бы я ни захотел прочитать их в моем пользовательском процессоре (расширяющем AbstractProcessor) onTrigger ()

Я пытался использовать flowFile.getAttributes () и context.getAllProperties (), но он не поднимается.

Цените любые входные данные.

Спасибо

1 Ответ

0 голосов
/ 08 сентября 2018

Чтобы уточнить, вы хотите сослаться на значение этих внешних переменных внутри логики приложения вашего метода CustomProcessor#onTrigger()?

Вы можете:

  1. Загрузите определения переменных, запросив NiFiProperties#getVariableRegistryProperties() или NiFiProperties#getVariableRegistryPropertiesPaths. Если у вас есть ссылка на определения переменных, вы можете анализировать и использовать их по своему усмотрению.
  2. Вы можете ссылаться на них через атрибуты потокового файла или свойства процессора , если эти атрибуты или свойства поддерживают язык выражений, и он имеет соответствующую область видимости. PropertyDescriptor выведет список expressionLanguageSupported() и вернет ExpressionLanguageScope, который представляет собой enum, состоящий из NONE, VARIABLE_REGISTRY и FLOWFILE_ATTRIBUTES (который также включает VR).

Я не понимаю сценарий, в котором вы хотите, чтобы ваш код загружал пользовательские переменные, которые не контролируются администратором потока, и которые заполняются через свойства процессора или атрибуты файла потока. Если вы действительно чувствуете, что вам нужен доступ к пользовательским переменным, которые недоступны через контекст или потоковый файл, вы можете использовать вариант 1 выше, но вы также можете теоретически хранить эти переменные в переменных среды, свойствах системы и т. Д.

...