Active Object entkoppelt einen Methodenaufruf von der Methodenausführung. Client und Komponente werden in unterschiedlichen Threads ausgeführt und interagieren asynchron.

siehe: GitHub - ReadMe, POSA4, PK

Sequenzdiagramm

Beispiel

Im Beispiel hat ein Client die Möglichkeit historische Daten zu Personen abzufragen. Die HistoryQueryEngine benötigt dazu ggf. einige Zeit, weil sie verschiedene Datenquellen abklappert.

Der Client verwendet daher die Engine nicht direkt, sondern die HistoryQueryComponent, die sofort ein QueryRequestFuture zurück gibt, nachdem parallel ein Abfrageauftrag geplant wurde.–

Das Future kann der Client solange pollen, bis ein Ergebnis vorliegt oder kein Interesse mehr besteht.

Um das Zusammenspiel im Detail beobachten zu können, setzen Sie den log-level auf DEBUG in der logback.xml und führen den zugehörigen TestCase aus.

Ressourcen