Streaming model transformations represent a novel class of transformations dealing with models whose elements are continuously produced or modified by a background process. Executing streaming transformations requires efficient techniques to recognize the activated transformation rules on a potentially infinite input stream. Detecting a series of events triggered by compound structural changes is especially challenging for a high volume of rapid modifications, a characteristic of an emerging class of applications built on runtime models.

In this paper, we propose a novel approach for streaming model transformations by combining incremental model query techniques with complex event processing (CEP) and reactive (event-driven) transformations. The event stream is automatically populated from elementary model changes by the incremental query engine, and the CEP engine is used to identify complex event combinations, which are used to trigger the execution of transformation rules. We demonstrate our approach in the context of automated gesture recognition over live models populated by real-time Kinect sensor data.

How to obtain the source code

The implementation consists of three main parts.

The unit tests for the core plugin are located in plugin org.eclipse.viatra.cep.core.tests.

For example codes see the org.eclipse.viatra.cep.examples.core plugin.

Setting up the environment

Setting up the environment requires the following steps.

  1. Download the latest Eclipse Kepler Modeling package.
  2. Install the following plugins or import them into a running Eclipse instance:
  3. Import the above mentioned four CEP plugins.
  4. Run a new Eclipse application with a run configuration containing all these plugins.

Case study source code

The source code for the case study is available over here as an Eclipse plug-in project. For running the example, you will need the following: