2017-10-25 6 views
0

私はflowFileキューにある一定量のflowFileを持っていて、使用されていないFileに対して削除操作を行うときに転送操作を行いたいと思っています。 flowfileの配列リストからflowfileを消失させる操作の原因を取り除くことができますか?ここに私のコードは次のとおりです。Nifi:flowFile量に基づいてtrnasfer 'transaction'を処理する方法はありますか?

import org.apache.commons.io.IOUtils 
import java.nio.charset.StandardCharsets 
import groovy.lang.* 

def flowFile=session.get(); 
def name=flowFile.getAttribute("realName") 
def count=flowFile.getAttribute("count") 
def filename=flowFile.getAttribute("filename") 
def value= count as Double; 
def numb=Math.round(value) 
def List<FlowFile> flowFiles= new ArrayList<>(); 
flowFiles.add(flowFile) 

if(flowFiles.size()==numb){ 
for(FlowFile i in flowFiles){ 
if(i.getAttribute("filename").substring(0,10)==name){ 
session.transfer(i,REL_SUCCESS); 

} 
} 
} 

else{ 

session.remove(flowFile); 

} 

答えて

1

あなたが受信されるフローファイルのX数を待っている場合、あなたは(あなたが10個のフローファイルをしたいと仮定して)このようなものを使用することができます。

def flowfileList = session.get(10) 
if(flowfileList.size() < 10) { 
    session.rollback() 
    return 
} 
​// If you get here, you have 10 flowfiles in flowfileList 
+0

私はドン」私は転送する必要があるフローファイルの数を正確に知っていますが、このdef count = flowFile.getAttribute( "count")の値に基づいています –

+0

このバージョンの方が良いと思いますか? –

+0

def flowFile = session.get() int numb =(flowFile.getAttribute( "count")Double).round() session.rollback();他 DEF flowFiles = session.get(無感覚) IF(!flowFiles || flowFiles.size()<麻痺){ session.rollback() } { session.transfer(flowFiles、REL_SUCCESS) } –

関連する問題