2017-10-16 18 views
0

xmlデータを更新してflowfile1に書きたいのですが、何らかの理由でMy ExecuteScriptプロセッサが転送関係を指定できません。ここにコードはです。: session.write内のコードがxmlデータをByteArrayにキャストできず、これをフローファイルの内容に書き込めない可能性はありますか? (しかし、それは例外をスローしません)Nifi:転送関係が指定されていません

flowFile1 = session.putAttribute(flowFile1, "filename", "conf.xml"); 

       session.write(flowFile1, new StreamCallback() { 
       @Override 
       public void process(InputStream inputStream1, OutputStream outputStream) throws IOException { 
        TransformerFactory transformerFactory1 = TransformerFactory.newInstance(); 
         Transformer transformer1 = null; 
         try { 
          transformer1= transformerFactory1.newTransformer(); 
         } catch (TransformerConfigurationException e) { 
          e.printStackTrace(); 
         } 

        DOMSource source1 = new DOMSource(doc); 
        ByteArrayOutputStream bos1 = new ByteArrayOutputStream(); 
        StreamResult result = new StreamResult(bos1); 


        try { 
         transformer1.transform(source1, result); 
        } catch (TransformerException e) { 
         e.printStackTrace(); 
        } 
        byte[] array1 = bos1.toByteArray(); 
        outputStream.write(array1); 
       } 

      }); 

      if(flowFile1!=null){ 

      session.transfer(flowFile1, REL_SUCCESS); 
      } 
      else{ 
      session.transfer(flowFile1, REL_FAILURE); 

      } 

     }catch (OverlappingFileLockException e) { 
      lock.release(); 


     } 
     catch (FileNotFoundException e) { 
      Thread.sleep(5000); 


     } catch (Exception e) { 
      e.printStackTrace(); 
     }finally { 


      lock.release(); 
      ini.close(); 
     } 

答えて

2

session.write()フローファイルの新しいバージョンへの参照を返しますが、あなたはそれを保存するか、またはそれを転送していません。その後、最新ではないバージョンを転送しようとします。 session.write()文の先頭に "flowFile1 ="を追加してみてください。

関連する問題