Apache nifi 在ApacheNIFI中,我可以在没有属性的情况下计算表达式语言吗?

Apache nifi 在ApacheNIFI中,我可以在没有属性的情况下计算表达式语言吗?,apache-nifi,Apache Nifi,例如,在自定义处理器中,我可能希望只计算字符串“${UUID()}”中的表达式(作为示例) 我不想向用户公开属性,我只想计算表达式。我可以这样做吗?在自定义处理器(或脚本处理器)中 在这种情况下,调用此函数对表达式求值就足够了,因为表达式本身不依赖于其他属性: String result = myValue.evaluateAttributeExpressions().getValue(); 但如果在表达式中使用属性: Map<String, String> attributes

例如,在自定义处理器中,我可能希望只计算字符串“${UUID()}”中的表达式(作为示例)

我不想向用户公开属性,我只想计算表达式。我可以这样做吗?

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

在这种情况下,调用此函数对表达式求值就足够了,因为表达式本身不依赖于其他属性:

String result = myValue.evaluateAttributeExpressions().getValue();
但如果在表达式中使用属性:

Map<String, String> attributes = ...;
String result = myValue.evaluateAttributeExpressions(attributes).getValue();

通常,表达式语言的要点是让用户指定一个动态表达式,或引用传入的流文件属性。如果您不打算向用户公开属性,那么为什么需要EL?您不能编写代码来执行表达式中的任何操作吗?代码依赖于NiFi为我从磁盘上的文件读取的属性(例如,本地LDAP服务器地址),但我通常不想向用户公开这些属性,因为LDAP服务器地址不会更改。当您说“从磁盘上的文件读取”时,我明白了您是指NiFi的基于文件的变量注册表吗?或者您自己在处理器代码中读取属性文件吗?是的,变量注册表。确定之后,下面的答案似乎会起作用,使用诸如context.newPropertyValue(表达式)之类的内容,然后对PropertyValue调用evaluateAttributeExpressions().getValue()
Map<String, String> attributes = ...;
String result = myValue.evaluateAttributeExpressions(attributes).getValue();
String result = myValue.evaluateAttributeExpressions(flowFile).getValue();