イベント通知サービス

Visual LANSA

イベント通知サービス


WindowsおよびWAMに適用

フレームワーク・マネージャーには、使いやすいイベント通知サービスが用意されています。これは、WindowsアプリケーションだけでなくWebブラウザー・アプリケーションでも使用できます。

通知の使用方法の手順については、「VLF013WIN - イベントの通知」または「VLF013WAM - イベントの通知」を参照してください。

フィルターまたはコマンド・ハンドラーで重大なイベントが発生したときに、他のアクティブなフィルターまたはコマンド・ハンドラーにイベントを送信して、しかるべき処理を実行するように設定できます。

イベント処理を実行するには、以下の2点が必要です。

·         フィルターまたはコマンド・ハンドラーがイベントを通知すること。これをイベントを発行するといいます。

·         他のフィルターやコマンド・ハンドラーがイベントをlistenすること。これをイベントをサブスクライブするといいます。

イベントと共に付属情報も送られる場合があります。これをペイロードといいます。

Windowsアプリケーションでは

Windowsアプリケーションでイベントを発行するにはavSignalEventメソッドを使用します。例えば以下のようになります。

Invoke #Com_owner.avSignalEvent WithId(Employee_Deleted) SendAInfo1(#EMPNO)

 

この例では"Employee_Deleted"として識別されたイベントを通知します。これにはフィールド#EMPNOの現在値がペイロード・ストリング1として含まれます。おそらくはすでに削除された従業員を識別するためのものです。

Windowsアプリケーションでイベントをサブスクライブ(またはlisten)するには、フィルターまたはコマンド・ハンドラーにEvtRoutineイベントが必要です。これを行うには、以下の例のようにavEvent通知をlistenします。

EvtRoutine Handling(#Com_owner.avEvent) WithId(#EventId) WithAInfo1(#AInfo1)

   If '#EventId.Value = Employee_Deleted'

   

       Change #EMPNO #AInfo1.Value    

 

       << Handle the event >>
   Endif

Endroutine

 

この例では"Employee_Deleted"として識別されたイベントをサブスクライブします。このイベントのペイロードのプロトコルは、従業員番号がペイロード付属情報のストリング1に含まれていることを示しています。

 

WAMアプリケーションでは

 WAM アプリケーションでイベントを発行するにはavSignalEventメソッドを使用します。例えば以下のようになります。

Invoke #ThisHandler.avSignalEvent WithId(UPDATE_LIST_ENTRY) SendAInfo1(#EMPNO)

 

WAMアプリケーションでイベントをサブスクライブ(またはlisten)するには、次の例のようにイベントを最初に登録する必要があります。

Invoke Method(#avFrameworkManager.avRegisterEvent) Named(UPDATE_LIST_ENTRY) Signalaswamevent(2)

  

それから、次の例のようにイベント・ハンドラーを追加します。

Evtroutine Handling(#avFrameworkManager.uWAMEvent_2) Withid(#eventid) WithAinfo1(#Ainfo1) Options(*noclearmessages *noclearerrors)

  

If '#EventId.Value = Update_List_Entry'

  

Change #EMPNO #AInfo1.Value
fetch #xg_ident pslmst with_key(#empno)

  

* Set up the visual Identifier(s)

  

#UF_VisID1 := #EMPNO
#UF_VisID2 := #SURNAME
Use BConcat (#UF_VisID2 #GIVENAME) (#UF_VisID2)

  

* Add instance details to the instance list

  

Invoke #avListManager.AddtoList Visualid1(#UF_VisID1) Visualid2(#UF_VisID2) AKey1(#EMPNO)
Endif

  

Endroutine

  一般的な注意事項

·         イベントがアプリケーション間を飛び交うとアプリケーションのパフォーマンスに影響します。この影響は、最悪の配布先環境を反映した環境で見積もる必要があります。あまり多くのイベントを使いすぎないようご注意ください。またイベントのハンドリング中にはあまり多くの処理をしないようにご注意ください。使用するイベント・モデルは実行可能なリソースに適合している必要があります。これは、Webブラウザー・アプリケーションでイベント処理中に、クライアントとサーバーの間で対話処理が起こる場合はさらに重要です。

·         イベントと共に送信できるペイロードは、基本的に最大英数字5個および数値5個までです。万一これで不足な場合や、情報のリストを送りたい場合はVirtual clipboardを使用します。組み込みのプログラミング テクニックアプリケーションには、仮想クリップボード機能を使用してイベントと共に情報のリストを送る例が含まれています。

·         イベントには簡潔で一貫性のある命名規則を考慮する必要があります。フレームワークが発行したイベントとの矛盾を避けるため、ピリオド(".")を含むイベント識別子は使用できません。別の実行プラットフォームとの間でコード・ページの問題が発生する可能性があるので、特殊文字は避けます。

·         Webブラウザー・アプリケーションでイベントをコーディングおよび使用する方法については、組み込みの"プログラミング テクニック"アプリケーションを例にしてください。

イベント・ハンドリングの詳細については、以下を参照してください。

·         avSignalEvent

·         #Com_owner.avEvent