Skip to content

CompArch Change Events

thomas-vogel edited this page Jan 30, 2018 · 2 revisions

We defined and implemented several types of change events that notify about changes of CompArch models. The definition of these change events relies on the CompArch metamodel.

Accessing the Change Events

Using the simulator, the tracking of change events is enabled or disabled when creating an instance of the simulator. If tracking is enabled, the simulator tracks changes of the CompArch model and provides corresponding change events.

Adaptation engines can access these change events by invoking getChangeEventsQueues() on the simulator. For each change event type, there is an individual queue. Adaptation engines can process the events that are of interest to drive the self-adaptation process. In this context, the adaptation engine is responsible for clearing the queues in each simulation round or removing those events that have been processed and should not been kept in the queues for the next simulation round. Typically, change events are only read and not modified by an adaptation engine as they are used for driving the self-adaptation process.

For detailed information of how to use change events in an adaptation engine, have a look at the example solutions for self-healing and self-optimizing mRUBiS. The solutions contain two feedback loops that use change events to drive the self-adaptation process.

Types of Change Events

We defined the following types of change events. Each of them has a timestamp of when the corresponding change has happened. Moreover, each of them provides access to the specific ArchitecturalElement of the CompArch model that is affected by the change. Thus, using change events avoids querying the whole CompArch model to identify changes since the change events directly point to the changed elements.

TenantAdditionEvent

Change event notifying about the addition of a Tenant to the Architecture. The event provides access to the Architecture and added Tenant.

TenantRemovalEvent

Change event notifying about the removal of a Tenant from the Architecture. The event provides access to the Architecture and removed Tenant.

ComponentAdditionEvent

Change event notifying about the addition of a Component to a Tenant. The event provides access to the Tenant and added Component.

ComponentRemovalEvent

Change event notifying about the removal of a Component from a Tenant. The event provides access to the Tenant and removed Component.

ComponentTypeInstanceRemovalEvent

Change event notifying about the removal of a Component from a ComponentType, that is, when an instance of the component type is removed. The event provides access to the removed Component and to the ComponentType of the removed component.

ComponentStateChangeEvent

Change event notifying about a change of the life cycle state (see Component.state) of a Component. The event provides access to the affected Component and the life cycle state before and after the change.

ParameterUpdateEvent

Change event notifying about an update of the value of a Parameter. The event provides access to the affected Parameter and the value of the parameter before and after the change.

ReroutingEvent

Change event notifying about a re-routing, that is, the removal and addition of a Connector to (re-)wire a RequiredInterface to a different ProvidedInterface than before. The event provides access to the affected RequiredInterface and the Connector of this interface before and after the change (i.e., the old and new connector for the required interface).

ExceptionOccurrenceEvent

Change event notifying about the occurrence of an exception, that is, an Exception is added to a ProvidedInterface. The event provides access to the ProvidedInterface and to the added Exception.

PerformanceStatsUpdateEvent

Change event notifying about the update of the PerformanceStats for a method. An update changes any attribute of the performance statistics: minTime, maxTime, totalTime, or invocationCount. The event provides access to the updated PerformanceStats.

MonitoredPropertyUpdateEvent

Change event notifying about an update of the value of a MonitoredProperty. The event provides access to the affected MonitoredProperty and the value of the property before and after the change.

Notification

Generic change event in the EMF (Eclipse Modeling Framework) format that notifies about any change that happened. See EMF documentation for details.

Clone this wiki locally