我正在使用executeprocess处理器来执行shell脚本。但我想确保如果脚本成功执行,那么只有流应该转到下一个处理器。有没有办法检查这个?
答案 0 :(得分:6)
除了JDP10101的答案之外,您还可以考虑使用ExecuteStreamCommand(前面有GenerateFlowFile来触发其执行)。 ExecuteStreamCommand写入一个属性“execution.status”,它给出了进程的退出代码。你可以用RouteOnAttribute来处理成功(大概是execution.status == 0)和失败(execution.status!= 0)
答案 1 :(得分:2)
ExecuteProcess正在运行NiFi之外的命令,因此确定“成功”/“失败”是什么困难。根据您的命令在发生“故障”时输出的内容将改变您的流逻辑。
首先,您可能希望将“Redirect Error Stream”设置为true,以便在FlowFile的内容中包含错误流。然后,您需要确定哪一系列字符表示“失败”。这可能就像“错误”一样简单,也可能更复杂,具体取决于您的流程。一旦确定“失败”意味着什么,请使用RouteText将其路由到其内容包含这些字符的FlowFiles。