-
Notifications
You must be signed in to change notification settings - Fork 1
CompArch Change Events
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.
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.
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.
Change event notifying about the addition of a Tenant
to the Architecture
.
The event provides access to the Architecture
and added Tenant
.
Change event notifying about the removal of a Tenant
from the Architecture
.
The event provides access to the Architecture
and removed Tenant
.
Change event notifying about the addition of a Component
to a Tenant
.
The event provides access to the Tenant
and added Component
.
Change event notifying about the removal of a Component
from a Tenant
.
The event provides access to the Tenant
and removed Component
.
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.
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.
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.
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).
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
.
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
.
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.
Generic change event in the EMF (Eclipse Modeling Framework) format that notifies about any change that happened. See EMF documentation for details.
mRUBiS Exemplar by Thomas Vogel (2018)