Rich UI Infobus

Rich UI Infobus は、公開およびサブスクライブ・メカニズムを使用可能にするライブラリーです。これは、以下のように機能します。

Infobus 関数

以下の Infobus 関数が使用されています。
  • Infobus.subscribe。イベント名と、イベントが公開されるときに Infobus が起動する関数に対する参照の、2 つの引数を受け入れます。イベント名には、後述するように、ワイルドカード文字を含むことができます。
    起動される関数をコーディングする必要があります。この関数は次の Delegate パーツをベースとします。Delegate パーツで、関数は、イベントを公開するときに提供するどのタイプのデータでも受け入れできることを示します。
    InfoBusCallback(eventName String in, data any in) 

    Infobus.subscribe はサブスクリプション値 (ANY タイプ) も戻します。この値は、イベントをアンサブスクライブする場合に使用できます。

  • Infobus.unsubscribe。Infobus.subscribe から戻される ANY タイプの値である、1 つのパラメーターを受け入れます。この関数には、戻り値はありません。
  • Infobus.publish。イベント名と提供したデータの 2 つの引数を受け入れます。この関数には、戻り値はありません。

Rich UI ハンドラーが Infobus をサブスクライブする場合、このハンドラーはメモリーから削除できません。 例えば、ユーザーのボタン・クリックにより関数内にハンドラーが作成され、そのハンドラーが Infobus をサブスクライブする場合、ハンドラーとそのウィジェットは、ハンドラーが Infobus をアンサブスクライブするまでメモリーから削除できません。

たいていの場合、メモリーは EGL ランタイム・コードにより解放されます。 ただし、『Rich UI メモリー管理』のトピックでは、さらに高度なメモリー管理を行う方法について説明します。

イベント名とワイルドカード

イベント名は、1 つ以上のトークン (この例の sample および test などの文字記号) で構成され、それぞれは、ドットで区切られています。

Infobus.subscribe を使用して、複数のイベントをサブスクライブすることができます。2 つのワイルドカード文字を使用できます。また両方を同じ Infobus.subscribe 起動で使用することができます。
  • トークンの代わりにアスタリスク (*) を使用すると、アスタリスクの代わりに指定するトークンに関係なく、イベント名に一致する名前のイベントをコードで公開するときに、Infobus.subscribe によって登録された関数が起動されます。例えば、Infobus.subscribe がイベント名を com.mycompany.update.*.new.employee と識別すると、Infobus.subscribe によって登録された関数が、以下のすべての呼び出しに応答して起動されます。
    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");
  • 最後のトークンの代わりに二重アスタリスク (**) を使用すると、アスタリスクの代わりに指定する一連の トークン (および挿入ドット) に関係なく、イベント名に一致する名前のイベントをコードで公開するときに、Infobus.subscribe によって登録された関数が起動されます。例えば、Infobus.subscribe がイベント名を com.mycompany.update.sales.** と識別すると、Infobus.subscribe によって登録された関数が、以下のすべての呼び出しに応答して起動されます。
    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");

追加の詳細情報

Infobus メカニズムは、OpenAjax 協力会社の実装をベースとしています。このメカニズムについてさらに詳細に知る必要はありませんが、理解するには次のようにします。
  1. OpenAjax 協力会社の Web サイトにアクセスします。

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

  2. 「Wikis」>「Member Wiki」をクリックします。
  3. 「Search」フィールドに文字列「OpenAjax Hub 1.0 Specification PublishSubscribe」と入力します。

Rich UI は、フィルター またはスコープ に関連した仕様句はサポートしません。


フィードバック