Aufbau ereignisbasierter Frameworks

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

4 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

4 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

4 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

5 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

5 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

5 Tagen ago