与@Bryan Bende 的回答有些一致,我最终使用ExecuteScript
处理器创建了一个提供上游连接的“ListFile”处理器:
import java.nio.charset.StandardCharsets
import groovy.io.FileType
def flowFile = session.get()
if(!flowFile) return
def flowFiles = [] as List<FlowFile>
def fetchDirectory = flowFile.getAttribute('fetchDirectory')
def listOfFiles = []
def dir = new File(fetchDirectory)
if(dir.exists()) {
dir.eachFileRecurse (FileType.FILES) { file ->
listOfFiles << file
}
}
listOfFiles.each { i ->
def newFlowFile = session.create()
session.putAttribute(newFlowFile, 'path', i.path)
session.putAttribute(newFlowFile, 'filename', i.getName())
flowFiles << newFlowFile
}
session.remove(flowFile)
session.transfer(flowFiles, REL_SUCCESS)
因此,当外部工具完成时,我将块的 FlowFile 路由到上述处理器,然后我将其通过管道传输到FetchFile
处理器。