某些NiFi处理器不允许动态属性的原因是什么?我在我的一个工作流程中使用FetchFile处理器,我需要在整个流程中传递一些数据才能在最后一步中使用它。但是,FetchFile通过不允许动态属性来打破它。我想知道是否有另一种方法可以做到这一点?为什么NiFi不允许在某些处理器上使用动态属性?
我的流程类似于
ExecuteScript - > EvaluateJSon - >用于写入文件的自定义处理器 - > FetchFile-> SendtoS3 - >标记工作流程完成
我想发送一些元数据,以便我可以完成工作流程的标记。我将这些数据作为属性传递,但它在FetchFile处断开。
答案 0 :(得分:5)
有两个独立的概念,即处理器上的用户定义属性和流文件属性。
用户定义的属性允许处理器从用户那里获取无法提前定义的内容。例如,当在用户定义的属性中指定JSON路径时,在EvaluateJsonPath中,或者当所有用户定义的属性作为查询参数传递给Solr时,在PutSolrContentStream中。
FlowFile属性是每个数据传递的键/值对的映射。这些属性通常在处理器生成或修改流文件时创建,或者可以使用UpdateAttribute等处理器进行操作。
由每个处理器决定是否需要用户定义的属性以及如何使用它们。 UpdateAttribute恰好是一个处理器,其中用户定义的属性作为新的键/值对添加到每个流文件中,但是每个处理器都没有意义。