The features we’ve introduced that allow users to break out of the traditional DAG-based workflow model (runtime mapping, looping, and configurable output caching, among others) have instantly proved to be our most popular features, so we’ve acquired almost 2 years of user data on how people work with dynamic or runtime-discovered workflow requirements. A major focus for this year will be to expand the building blocks we offer for generating such workflows.
Your use case about manual approval, for example, is one that we added in the very earliest days of Prefect because it seems obvious to us as data consumers! Here’s a doc describing it:
https://docs.prefect.io/core/idioms/pause-for-approval.html#pause-for-approval Today, these manual-approval tasks will automatically put a prompt in the UI.
The thing that makes this all possible is how we view our rich
State
objects as the currency of the system, rather than a DAG object. By reacting to states, our system gets a lot more powerful because it can dynamically expand beyond the static DAG.