Summary of my question in a short form: How to propagate changes of domain objects upwards without introducing application logic into them?
Following 'facts' are based on prescriptions from respected software architecture authors.
Fact 1: In layered architecture, a lower layer should never make explicit method calls upwards.
Fact 2: Objects that represent business logic should be free of any technical aspects of the software. Authors prescribe that a "Domain Layer" should isolate them from any other layers, including any upper Presentation Layers.
Fact 3: In the MVC pattern, a change propagation mechanism has to exist in the model: Any changes in objects of the model must be notified to all relevant views and controllers. The observer pattern is good for this.
Fact 4: In the observer pattern, the subject (or provider object) allows for the registration of observer objects. When the state of the subject changes, the observer objects are notified.
I have a Domain Layer (or Business Logic Layer), wish to use the MVC pattern, wish to use the observer pattern for it, and wish to respect fact 2: I do not want to introduce observer logic to the domain objects.
I'm pretty clueless about how to fit these pieces together. How can I implement a change propagation mechanism without implementing it into business logic classes?