在Apache NiFi中,我可以在没有属性的情况下评估表达式语言吗?

ric*_*ich 2 apache-nifi

例如,在自定义处理器中,我可能希望简单地评估字符串"$ {UUID()}中的表达式"(仅作为示例).

我不想向用户公开属性,我只想评估表达式.我能这样做吗?

dag*_*ett 5

在自定义处理器(或脚本处理器)中

import org.apache.nifi.components.PropertyValue;
...
String expression = "${UUID()}";
PropertyValue myValue = context.newPropertyValue( expression );
Run Code Online (Sandbox Code Playgroud)

在这种情况下,调用它来评估表达式就足够了,因为它不依赖于表达式本身的其他属性:

String result = myValue.evaluateAttributeExpressions().getValue();
Run Code Online (Sandbox Code Playgroud)

但如果你在表达式中使用属性:

Map<String, String> attributes = ...;
String result = myValue.evaluateAttributeExpressions(attributes).getValue();
Run Code Online (Sandbox Code Playgroud)

或者如果流文件中包含所有必需属性:

String result = myValue.evaluateAttributeExpressions(flowFile).getValue();
Run Code Online (Sandbox Code Playgroud)