Die Schnittstelle Predicate besitzt eine Methode test() die für das gesamte Ereignis-gesteuerte Framework wichtig ist. Bei der Implementierung ist zu bestimmen, wann ein erwartetes Ereignis bzw. eine Reihe von Ereignissen als eingetreten gelten. Beispielsweise können Sie ohne Probleme festlegen, dass ein Prädikat „wahr“ ist, wenn ein einzelnes Ereignis mit ID=5 getriggert wird, oder wenn drei Ereignisse mit ID=1, 2 und 3 exakt in dieser Reihenfolge stattfinden (wie in Listing G).
Das BlackboardEvent ist das grundlegende Ereignis für alle Ereignisse des Frameworks, es ersetzt die Klasse java.util.EventObject. Das BlackboardEvent wird mit einem Verweis auf das Quell-Objekt erstellt (das Objekt, dessentwegen das Ereignis ursprünglich auftrat) und durch Prädikate analysiert. Ein Ereignis bleibt bestehen, bis es verarbeitet wurde (d.h. ein Prädikat mit dem Ergebnis „wahr“ gefunden wurde) oder verfällt. Sie können mithilfe der Methode setTTL() die Lebensdauer eines Ereignisses festlegen und durch Aufruf der Methode isExpired() feststellen, ob es verfällt oder nicht.
BlackboardAction ist die abstrakte Klasse, mit der die Schnittstelle java.lang.Runnable implementiert wird. Sie wird in Erwartung eines Ereignisses ausgeführt, das ein Prädikat erfüllt, auf das die Aktion gerichtet ist. Um eine Aktion zu erstellen, müssen Sie lediglich die Methode execute() einrichten, die zur Implementierung der Methode run() gehört. Wenn eine Aktion für ein Prädikat gefunden wurde, führt das Framework dieses in einem separaten Thread aus, indem es seine Methode run() ausführt. Durch das Erweitern der Klasse BlackboardAction können Sie außerdem zwei geschützte Methoden, setUp() und tearDown(), aufheben, die direkt vor und nach der Methode execute() aufgerufen werden und zur Vorbereitung und Freigabe von Ressourcen für die Aktion dienen.
Das Ablaufdiagramm in Abbildung B zeigt das gesamte Framework.
Abbildung B: Ablaufdiagramm
Client 1 erstellt ein Blackboard und füllt dieses mit Paaren aus Prädikaten und Aktionen. Client 2 wartet durch Ausführung der Methode waitPredicate() auf ein Prädikat. Client 3 generiert ein Ereignis, das dem Prädikat von Client 2 entspricht, so dass Client 2 freigegeben wird. Wenn das Ereignis von Client 3 von dem Prädikat akzeptiert wird, das Client 1 zum Blackboard hinzugefügt hatte, wird auch die entsprechende Aktion ausgelöst. Client 1 schließt das Blackboard, wenn es nicht mehr benötigt wird.
Neueste Kommentare
Noch keine Kommentare zu Aufbau ereignisbasierter Frameworks
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.