我試圖在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());
我也做了一個單元測試,它的工作原理當我將文本值分配給testrunner.setProperty時。但是我不知道如何將屬性分配給testrunner,或者我如何在測試中使用表達式語言。
在此先感謝您的任何建議或解決方案!
什麼是你得到的返回值「 context.getProperty(ADD_ATTRIBUTE).evaluateAttributeExpressions()的getValue()「? –
在評估表達式時,您是否需要輸入流文件中的任何內容?如果是這樣,一定要將flowfile傳遞給evaluateAttributeExpressions()調用。 –
嗨,當我使用表達式語言時,返回值是一個空字符串。當我只使用常規字符串時,例如「測試」,則返回值爲「test」。我不需要任何東西,但也試圖看看它是否做了任何事情,但事實並非如此。 – Matthias