如何在Nifi中用表达式语言定义ControllerService

问题描述 投票:0回答:1

作为跨域复制的复杂流模型的一部分,我试图概括在许多处理器中使用的自定义控制器服务的定义。

将ControllerService添加到处理器的工作方式与使用属性相同:使用接受expressionLanguageSupported()的PropertyDescriptor.Builder。但是,没有详细记录如何通过ui配置它,或者在接受所述ControllerService的处理器的代码中需要采取哪些额外步骤

当我只是添加expressionLanguageSupported(true)方法时,下拉列表将更改为使用配置服务的uuid的自由输入。我尝试将此uuid放在名为service1的进程组范围变量中,但验证程序不接受${service1}

我究竟做错了什么?我们正在使用Nifi 1.6

java service controller expression apache-nifi
1个回答
3
投票

控制器服务不是以这种方式工作的。您可以使用表达式语言,但正如您所说,您将被迫传递控制器服务ID。

通过使用查找服务有一个解决方案。例如,SQL处理器可以使用DBCPConnectionPoolLookup将DBCPConnectionPool控制器服务动态传递给处理器。

您可以在捆绑中使用这种方式。

编辑:

您还应该知道,如果您在没有表达式语言支持的情况下引用控制器服务,并从流程中创建模板,那么当您部署它时,处理器将引用刚刚使用您的模板创建的控制器服务。

© www.soinside.com 2019 - 2024. All rights reserved.