イベント

EventはMethodと異なりCSではObjectTypeのDefinitionなかに記載されるのではなく、Eventという別の項が設けられEventが説明されています。ここではCSに関わる個々のEventではなくEventを各Nodeでどう設定するのか説明します。EventTypeはEventのタイプ定義を表すために使用されるObjectTypeのサブタイプです。

イベントを発行できるのはViewとObject

MonitoredItemsの対象となるNodeはObjectまたはViewです。EventNotifier Attributeの「SubscribeToEvents」ビットが1に設定されたObjectまたはViewです。ClientからServerにObjectまたはViewの「SubscribeToEvents」を設定する必要があります。

各々のNodeからどのようにイベントは発生させるのか?

ObjectからEventを発生させるには

ObjectからEventを発生させるにはObject NodeのEventNotifier AttributeにSubscribeToEventsを指定します。EventNotifierを使用してEventをサブスクライブしたり、履歴イベントを読み書きしたりできるかどうかを示すために使用されます。EventNotifierは8ビットの符号なし整数です。0はイベントのサブスクライブに使用できないことを意味し、1はイベントのサブスクライブに使用できることを意味します。初期値では0に設定されています。EventNotifier AttributeのSubscribeToEventsに1を設定することでEventが発生できるようになります。

対象のObject NodeがEventの発生元でない場合、Eventを発行するNodeに対しHasEventSourceまたはHasNotifier Referenceを定義します。SourceNodeがEventを発行できないVariableやMethodの場合はHasEventSourceで参照しTarget NodeであるObjectからEventが発行できるようにします。また対象のObject NodeでもEventを発行できるようにしたい場合にはHasNotifier Referenceで参照設定します。

ViewからEventを発生させるには

ViewからEventを発生させるにはObjectと同様にEventNotifier AttributeのSubscribeToEventsを1に指定します。ViewがEventの実際の発生元ではない場合、Eventを発行するNodeに対してHasEventSourceまたはHasNotifier Referenceを定義します。Target NodeがEventを発行できないVariableやMethodの場合にはHasEventSourceで参照し発行します。

ObjectTypeからEventを発生させるには

ObjectTypeはGeneratesEventのReferenceのSource Nodeに指定しSourceNodeとなるObjectTypeのNodeからTarbget Nodeに対してGeneratesEventのReferenceを使用し定義します。

VariableTypeからEventを発生させるには

VariablypeはGeneratesEventのReferenceのSource Nodeに指定できますのでSourceとなるVariableTypeのNodeからTarbget Nodeに対してGeneratesEventのReferenceを使用し定義します。

MethodからEventを発生させるには

Method NodeからEventを発行するには関数処理がEvent発生の原因になり得るEventTypeに対してGeneratesEvent Referenceを定義します。