Как определить ControllerService с языком выражений в Nifi - PullRequest
0 голосов
/ 25 марта 2019

Как часть сложной модели потоков, которые реплицируются по доменам, я пытаюсь обобщить определение пользовательских контроллеров, которые используются во многих процессорах.

Добавление ControllerService к процессору работает так же, как со свойствами: с PropertyDescriptor.Builder, который принимает expressionLanguageSupported().Однако недостаточно хорошо задокументировано, как настроить это через пользовательский интерфейс или какие дополнительные шаги необходимо предпринять в коде процессора, который принимает указанный ControllerService

Когда я просто добавляю метод expressionLanguageSupported(true),выпадающий список изменяется на свободный вход с помощью uuid настроенного сервиса.Я попытался поместить этот uuid в переменную области действия группы процессов под названием service1, но валидатор не примет ${service1}

Что я делаю неправильно?мы используем нифи 1.6

1 Ответ

3 голосов
/ 25 марта 2019

Сервисы контроллеров не предназначены для такой работы. Вы можете использовать язык выражений, но, как вы говорите, вы будете вынуждены передать идентификатор службы контроллера.

Существует решение этой проблемы с помощью службы поиска. Например, процессоры SQL могут использовать DBCPConnectionPoolLookup для динамической передачи службы контроллера DBCPConnectionPool процессору.

Вы можете использовать этот способ в вашем комплекте.

EDIT:

Вы также должны знать, что если вы ссылаетесь на службу контроллера без поддержки языка выражений и делаете шаблон из своего потока, при развертывании его процессор будет ссылаться на службу контроллера, которая была только что создана с вашим шаблоном.

...