2016-12-21 14 views
3

私はexecuteprocessプロセッサを使ってシェルスクリプトを実行しています。しかし、私は、スクリプトが正常に実行された場合、フローだけが次のプロセッサに送られるようにしたい。これをチェックする方法はありますか?Nifi executeprocess processor

答えて

4

代わりに、JDP10101の回答に加えて、ExecuteStreamCommand(その前にGenerateFlowFileを付けて実行をトリガー)を使用することもできます。 ExecuteStreamCommandは、プロセスの終了コードを示す属性 "execution.status"を書き込みます。成功を処理するためにRouteOnAttributeでこれを使用できます(おそらくexecution.status == 0)。失敗(execution.status!= 0)

2

ExecuteProcessはNiFiの外でコマンドを実行しているため、 "成功"/"失敗"とは何かを判断するのは難しい場合があります。 「失敗」の場合のコマンドの出力に応じて、フローロジックが変更されます。

まず、エラーストリームをFlowFileのコンテンツに含めるには、「リダイレクトエラーストリーム」をtrueに設定することをお勧めします。次に、一連の文字が「失敗」を示すかどうかを判断する必要があります。これは、プロセスによっては「ERROR」またはそれ以上の複雑なものになる可能性があります。 「失敗」の意味を判断したら、RouteTextを使用して、内容に文字が含まれるFlowFilesをルーティングします。