At least luigi, and I think also airflow, are batch workflow systems. This is more of a streaming system as far as I know, and also allows for more control over data routing, as in airflow and luigi mainly define dependencies between whole tasks, while in NiFi you can route each output of every task separately.