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

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

6 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

6 Tagen ago

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

6 Tagen ago

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

7 Tagen ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

1 Woche ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

1 Woche ago