Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel
borderStyledashed
titleProject Overview

Responsible:

Related Theses:

  • Christian Motika, Semantics and Execution of Domain Specific Models – KlePto and an Execution Framework, December 2009 (pdf)
  • Sören Hansen, Configurations and Automated Execution in the KIELER Execution Manager, March 2010 (pdf)

KIEM - KIELER Execution Manager

Image Modified

Topics

Table of Contents
maxLevel2
minLevel2

This sub project implements an interface of the KIELER project for the simulation and execution of graphical domain specific models (e.g., EMF models). It itself does not do any simulation computation but bridges simulation components, visualization components and a user interface within the KIELER Eclipse rich client platform. To get a first impression about this sub project please feel free to watch the following  Flash demo video.

...

JavaDoc

Find the official JavaDoc documantation of the KIELER Execution Manager.

...

Quick start

Install

Check out the KIEM Eclipse plug-in project and enable it in your run configuration. Make sure to enable all required projects and to include all DataComponents you wish to use e.g., for visualization or simulation (s.b.).

...

Launch Configuration

The KIELER Execution Manager offers a launch configuration extension, see KIEM - KIEM Launch Configurations.

...

How does it work?

Scheduling

All components have in common that they are called by the Execution Manager in a linear order. This can be defined by the user in an execution setting and exactly reflects the order of the DataComponent list in the KIEM View shown in the example figures below. Because the execution is an iterative process --- so far only iteratable simulations are supported --- all components (e. g., a simulation engine or a visualizer) should also preserve this iterative characteristic. During an execution KIEM will stepwise activate all components that take part in the current execution run and ask them to produce new data or to react to older data. As KIEM is meant to be also an interactive debugging facility, the user may choose to synchronize the iteration step times to realtime. However, this might cause difficulties for slow DataComponents as discussed below.

All components are executed concurrently. In particular, components that cannot run concurrently due to implementation and scheduling restrictions share a common thread. Apart from that, components are executed in their own threads. For this reason, DataComponents should communicate (e. g., synchronize) with each other via the data exchange mechanism provided by the Execution Manager only to enforce thread safety. There are also additional scheduling differences between the types of DataComponents listed below. These concern two facts: First, DataComponents that only produce data do not have to wait for any other DataComponent and can start their computation immediately. Second, DataComponents that only observe data, often do not need to be called in a synchronous blocking scheme since no other DataComponent depends on their (nonexistent) output.

...

Extension Points and Interfaces

If you want to contribute a simulation or execution engine or any visualization facility to the KIELER project, you just need to understand about the two Extension Points that are explained below:

...

Take in mind that if your DataComponent is not both, an observer and a producer of data, it's step() method will not be called in a blocking scheme during the scheduled execution (for details please see above). If this is required, then you need to set the according return values to both being true.

...

Components and Properties

DataComponents may provide properties that enable the user to configure them prior to an execution run. To do so, a DataComponent needs to @Overrride the method provideProperties() that returns an array of elements of the type KiemProperty. There are several build-in types like for String, Integer, Boolean values or for a list of choices, a file browser or for selecting an open editor. The following code should demonstrate the use of those build-in properties.

...

With overriding the provideIcon() method you are able to provide a customized Image for the KiemPropertyType. If you return null (which is the default) the standard image will be used.

...

Package Organization

The following lists the most important packages and classes of the KIELER Execution Manager.

Overview

This should give an overview about the base packages of the KIEM project:

...

Please feel free to browse the source and the JavaDoc documantation for further more detailed information.

...

Download

...

Case Studies

ABRO in Java

This illustrates the famous ABRO example, the "hello world" of the synchronous world. It is simply a Java plug-in implementing an observing and producing DataComponent that reacts to signals A, B, R with producing a present signal O whenever signal A and B just became present (in any order or even at the same time). The SyncChart then goes into the done state and is reset by signal R, i.e. it becomes ready and again waits for signals A and B. The strong abortion of the reset transition indicates that whenever R is present, in the same tick no O will be produced.

...

The above example observer and producer DataComponent can be executed by the execution manager. This is illustrated in the following screen snapshot. Signals can be injected (= made present) by marking the check boxes [X] in the left raw table view. Note that the variables first have to be declared as being signals by using the adequate toggle button. By using the step button of the execution manager the execution can proceed to the next step. The Synchronous Signal Resetter DataComponent just resets all present signals at the beginning of the next tick to be absent again so that the whole execution follows the synchronous semantics. An alternative to this could be to let all signal emitters reset their own signals with the drawback of introducing relative (macro) ticks.

...

Simple Rail Control

As another case study there exists a SimpleRailControlEditor for the  model railway of the Christian-Albrechts University of Kiel. It lets you create controllers for the model railway by modeling them with a generated Eclipse GMF editor. These models can be transformed into executable C-Code by a model2text-Xpand-transformation on the one hand. On the other there exists a complete Xtend-transformation which generates executable and I/O-equivalent  Ptolemy models out of them. The SimpleRailCtrl Ptolemy Simulator DataComponent is then capable of executing these Ptolemy models using the  Triq Ptolemy Eclipse plug-in. Together with the KIELER model visualizer the active states (nodes) of the controller model can then be illustrated during the execution.

...