Я пытаюсь создать собственный процессор в Apache NiFi, который может добавить атрибут/строку в объект JSON в содержимом потока. На данный момент это работает, когда я просто использую строку, но она не работает, когда я использую язык выражения NiFi, хотя я поддерживаю его в своем коде.Язык программирования пользовательского процессора NiFi
Язык выражения на 100% правильный, поскольку он работает в другом процессоре, и я также пробовал разные атрибуты, чтобы убедиться, что это не атрибут.
Свойство:
public static final PropertyDescriptor ADD_ATTRIBUTE = new PropertyDescriptor
.Builder().name("Add Attribute")
.description("Example Property")
.required(true)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
.expressionLanguageSupported(true)
.build();
Позже в моем коде, когда я хочу, чтобы получить значение и поместить в объект JSON Я использую:
jsonObject.put("hostname", context.getProperty(ADD_ATTRIBUTE).evaluateAttributeExpressions().getValue());
Я также сделал Unit Test, и это работает когда я назначаю текстовое значение testrunner.setProperty. Однако я не знаю, как я могу назначить атрибут testrunner или как я могу использовать язык выражения в своем тесте.
Заранее благодарим за любые предложения или решение!
Что возвращаемое значение вы получаете от " context.getProperty (ADD_ATTRIBUTE) .evaluateAttributeExpressions(). ПолучитьЗначение() "? –
Вам нужно что-либо из входного файла потока при оценке вашего выражения? Если это так, обязательно передайте файл потока в вызов valuAttributeExpressions(). –
Привет, возвращаемое значение является пустой строкой, когда я использую язык выражения.Когда я просто использую обычную строку, например, просто «test», тогда возвращаемое значение «test». Мне ничего не нужно, но я также попробовал это, чтобы убедиться, что он сделал что-то, но это не так. – Matthias