Rich-UI-Infobus

Der Rich-UI-Infobus ist eine Bibliothek, die einen Publizierungs- und Subskriptionsmechanismus zur Verfügung stellt, der wie folgt funktioniert:

Infobusfunktionen

Die folgenden Infobusfunktionen werden verwendet:
  • Infobus.subscribe akzeptiert zwei Argumente: einen Ereignisnamen und eine Referenz auf die Funktion, die der Infobus aufruft, wenn das Ereignis publiziert wird. Der Ereignisname kann Platzhalterzeichen enthalten, wie dies später beschrieben wird.
    Sie müssen die Funktion codieren, die aufgerufen werden soll. Die Funktion basiert auf dem folgenden Stellvertreterabschnitt, der angibt, dass die Funktion jeden Typ von Daten akzeptieren kann, den Sie bereitstellen, wenn Sie das Ereignis publizieren:
    InfoBusCallback(eventName String in, data any in) 

    Infobus.subscribe gibt außerdem einen Subskriptionswert (Typ ANY) zurück, mit dem Sie die Subskription des Ereignisses aufheben können.

  • Infobus.unsubscribe akzeptiert nur einen Parameter: den Wert vom Typ ANY, der aus der Funktion 'Infobus.subscribe' zurückgegeben wird. Diese Funktion hat keinen Rückgabewert.
  • Infobus.publish akzeptiert zwei Argumente: einen Ereignisnamen und die Daten, die Sie angeben. Diese Funktion hat keinen Rückgabewert.

Wenn ein Rich-UI-Handler den Infobus subskribiert, kann dieser Handler nicht aus dem Speicher entfernt werden. Beispiel: Wenn ein Schaltflächenklick des Benutzers einen Handler in einer Funktion erstellt und wenn der Handler den Infobus subskribiert, können der Handler und seine Widgets erst aus dem Speicher entfernt werden, wenn der Handler die Subskription des Infobus aufhebt.

In den meisten Fällen wird der Speicher durch den EGL-Laufzeitcode freigegeben. Im folgenden Abschnitt wird jedoch beschrieben, wie eine größere Kontrolle über die Speicherverwaltung realisiert werden kann: “Rich-UI-Speicherverwaltung”.

Ereignisnamen und Platzhalterzeichen

Ein Ereignisname besteht aus einem oder mehreren Tokens, d. h. Zeichensymbolen wie sample und test (im beschriebenen Beispiel). Jedes Token wird durch einen Punkt vom nächsten getrennt.

Sie können Infobus.subscribe zum Subskribieren mehrerer Ereignisse verwenden. Zwei Platzhalterzeichen sind verfügbar und können beide im selben Aufruf von 'Infobus.subscribe' verwenden:
  • Wenn ein Stern (*) anstelle eines Tokens verwendet wird, wird die von 'Infobus.subscribe' registrierte Funktion aufgerufen, wenn Ihr Code ein Ereignis publiziert, dessen Name mit dem Ereignisnamen übereinstimmt, unabhängig von dem Token, das Sie an der Stelle des Sterns angeben. Beispiel: Wenn 'Infobus.subscribe' den Ereignisnamen mit com.mycompany.update.*.new.employee angibt, wird die von Infobus.subscribe registrierte Funktion als Antwort auf jeden der folgenden Aufrufe aufgerufen:
    InfoBus.publish("com.mycompany.update.sales.new.employee", "some data");
    
    InfoBus.publish("com.mycompany.update.marketing.new.employee", "some data");
    
    InfoBus.publish("com.mycompany.update.outreach.new.employee", "some data");
  • Wenn ein doppelter Stern (**) anstelle des letzten Tokens verwendet wird, wird die von Infobus.subscribe registrierte Funktion aufgerufen, wenn Ihr Code ein Ereignis publiziert, dessen Name mit dem Ereignisnamen übereinstimmt, unabhängig von der Reihe von Token (und zwischengesetzten Punkten), die Sie an der Stelle des doppelten Sterns angeben. Beispiel: Wenn 'Infobus.subscribe' den Ereignisnamen mit com.mycompany.update.sales.** angibt, wird die von Infobus.subscribe registrierte Funktion als Antwort auf jeden der folgenden Aufrufe aufgerufen:
    InfoBus.publish("com.mycompany.update.sales.new.employee", "some data");
    
    InfoBus.publish("com.mycompany.update.sales.temporary.employee", "some data");
    
    InfoBus.publish("com.mycompany.update.sales.outreach.new.temporary.employee", "some data");

Weitere Details

Der Infobusmechanismus basiert auf einer Implementierung der OpenAjax-Kooperation. Sie benötigen möglicherweise keine weiteren Informationen zu diesem Mechanismus. Ansonsten finden Sie sie wie folgt:
  1. Rufen Sie die Website der OpenAjax-Kooperation auf:

       http://www.openajax.org/index.php

  2. Klicken Sie auf Wikis > Member Wiki.
  3. Geben Sie die folgende Zeichenfolge in das Feld Search ein: OpenAjax Hub 1.0 Specification PublishSubscribe

Rich-UI unterstützt keine Spezifikationsausdrücke in Bezug auf filter oder scope.


Feedback