自定义处理器的相关属性

时间:2019-04-18 20:49:49

标签: apache-nifi

在我开发的定制处理器上,我希望属性验证能够将某些属性设置为可选(如果设置了另一个属性)。换句话说,仅当属性“ Engine”设置为“ FILE”时才需要属性“ File Name”。如果将属性“ Engine”设置为“ AWS”,则不需要属性“文件名”。如果有一种方法可以完全隐藏它,那就更好了。

我已经构建了100多个自定义处理器,一直想包括这种功能,但是还没有找到用于构建自定义UI的解决方案(我也做过-太多的工作)。

1 个答案:

答案 0 :(得分:4)

尝试在处理器中实现customValidate(final ValidationContext validationContext),然后在此处添加所需的条件逻辑。

示例代码可能看起来像这样

    @Override
protected Collection<ValidationResult> customValidate(final ValidationContext validationContext) {
    final Collection<ValidationResult> results = new ArrayList<>();

    final String engine = validationContext.getProperty(ENGINE).getValue();
    if (FILES.equals(engine)) {
        if (!validationContext.getProperty(FILE_NAME).isSet()) {
            final String displayName = FILE_NAME.getDisplayName();
            results.add(new ValidationResult.Builder()
                .subject(displayName)
                .explanation(format("'%s' is required to use '%s' listing strategy", displayName, FILES.getDisplayName()))
                .valid(false)
                .build());
        }
    }
    return results;
}