Но поток данных должен идти от внешних слоев к внутренним
Поток данных идёт так, как того требует логика приложения. Ты на это мало как можешь повлиять.
Но ты можешь управлять тем, как направлена зависимость между классами. Применив принцип Dependency Inversion (буковка D из SOLID), ты можешь поменять направление на противоположное.