Я использую процессор executeprocess для выполнения сценария оболочки. Но я хочу убедиться, что если скрипт успешно выполнен, то только поток должен перейти к следующему процессору. Есть ли способ проверить это?Nifi executeprocess процессор
ответ
В дополнение к ответу JDP10101, вы можете в качестве альтернативы рассмотреть возможность использования ExecuteStreamCommand (с функцией GenerateFlowFile перед ним для запуска его выполнения). ExecuteStreamCommand записывает атрибут «execute.status», который дает код выхода для процесса. Вы можете использовать это с помощью RouteOnAttribute для управления успехом (предположительно execute.status == 0) и сбоя (исполнение.status! = 0)
ExecuteProcess выполняет команду за пределами NiFi, поэтому определение того, что «успех»/«отказ» может быть затруднено. В зависимости от того, какие выходы вашей команды в случае «сбоя» изменят вашу логику потока.
Сначала вы, вероятно, захотите установить «Перенаправить поток ошибок» в true, чтобы поток ошибок содержался в содержимом FlowFile. Затем вам нужно будет определить, какая серия символов указывает на «отказ». Это может быть так же просто, как «ОШИБКА» или более сложное в зависимости от вашего процесса. Как только вы определите, что означает «отказ», используйте RouteText, чтобы маршрутизировать его с FlowFiles, содержимое которого содержит эти символы.