Javascript 创建没有内容的(流文件)传输

Javascript 创建没有内容的(流文件)传输,javascript,apache-nifi,Javascript,Apache Nifi,我正在尝试为Nifi构建一个非常可爱的脚本处理器。 它处理JSON文件,将其拆分并发送到下一个处理器,即MongoDB编写器。 到目前为止,这种逻辑是有效的。主要问题是,我无法让处理器为输入JSON创建的每个新JSON创建并发送一个新的流文件。我让它工作了一点,但不幸的是,所有的流文件都是空的。流是否有问题(从创建新流到发送) 以下是一段代码片段: var flowFile = session.get(); if (flowFile != null) { var StreamCallba

我正在尝试为Nifi构建一个非常可爱的脚本处理器。 它处理JSON文件,将其拆分并发送到下一个处理器,即MongoDB编写器。 到目前为止,这种逻辑是有效的。主要问题是,我无法让处理器为输入JSON创建的每个新JSON创建并发送一个新的流文件。我让它工作了一点,但不幸的是,所有的流文件都是空的。流是否有问题(从创建新流到发送)

以下是一段代码片段:

var flowFile = session.get();
if (flowFile != null) {
    var StreamCallback = Java.type("org.apache.nifi.processor.io.StreamCallback");
    var IOUtils = Java.type("org.apache.commons.io.IOUtils");
    var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
    try {

        flowFile = session.write(flowFile,
            new StreamCallback(function (inputStream, outputStream) {
                var content = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
                var json = JSON.parse(content);
                var events = json["events"];
                var mongoEvent = "";
                var flowFileList = [];

                for(var x = 0; x < json["events"].length; x++){
                    try{
                        var newFlowFile = session.create();
                        mongoEvent = constructJSONEvent(x, json); // Here we will receive our new JSON 
                        outputStream.write(mongoEvent.getBytes(StandardCharsets.UTF_8));

                        session.transfer(newFlowFile, REL_SUCCESS);

                    }catch(e){
                        session.transfer(newFlowFile, REL_FAILURE);
                    }
                }
            }));
        session.transfer(flowFile, REL_SUCCESS);
    } catch(e) {
        session.transfer(flowFile, REL_FAILURE);
    }
}
var flowFile=session.get();
if(flowFile!=null){
var StreamCallback=Java.type(“org.apache.nifi.processor.io.StreamCallback”);
var IOUtils=Java.type(“org.apache.commons.io.IOUtils”);
var StandardCharsets=Java.type(“Java.nio.charset.StandardCharsets”);
试一试{
flowFile=session.write(flowFile,
新建StreamCallback(函数(inputStream、outputStream){
var content=IOUtils.toString(inputStream,StandardCharsets.UTF_8);
var json=json.parse(内容);
var events=json[“events”];
var mongoEvent=“”;
var-flowFileList=[];
对于(var x=0;x
U r创建新的流文件
var newFlowFile=session.create()
但是写入原始流文件
outputStream.write(mongoEvent.getBytes(StandardCharsets.UTF_8))
所以我需要一个新会话。write()我想发送它?它不是在覆盖输入流吗?
session.create()
会创建一个空文件。只需忽略子编写器的输入流。或者使用只接受输出流参数的
OutputStreamCallback
。ps:在groovy中,代码将更短。创建新的流文件
var newFlowFile=session.create()
但是写入原始流文件
outputStream.write(mongoEvent.getBytes(StandardCharsets.UTF_8))
所以我需要一个新会话。write()我想发送它?它不是在覆盖输入流吗?
session.create()
会创建一个空文件。只需忽略子编写器的输入流。或者使用只接受输出流参数的
OutputStreamCallback
。ps:在groovy中,代码会更短。