作为跨域复制的复杂流模型的一部分,我试图概括在许多处理器中使用的自定义控制器服务的定义。
将ControllerService添加到处理器的工作方式与使用属性相同:使用接受expressionLanguageSupported()
的PropertyDescriptor.Builder。但是,没有详细记录如何通过ui配置它,或者在接受所述ControllerService的处理器的代码中需要采取哪些额外步骤
当我只是添加expressionLanguageSupported(true)
方法时,下拉列表将更改为使用配置服务的uuid的自由输入。我尝试将此uuid放在名为service1
的进程组范围变量中,但验证程序不接受${service1}
我究竟做错了什么?我们正在使用Nifi 1.6
控制器服务不是以这种方式工作的。您可以使用表达式语言,但正如您所说,您将被迫传递控制器服务ID。
通过使用查找服务有一个解决方案。例如,SQL处理器可以使用DBCPConnectionPoolLookup将DBCPConnectionPool控制器服务动态传递给处理器。
您可以在捆绑中使用这种方式。
编辑:
您还应该知道,如果您在没有表达式语言支持的情况下引用控制器服务,并从流程中创建模板,那么当您部署它时,处理器将引用刚刚使用您的模板创建的控制器服务。