Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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:

Both Extension Points are based on the same (abstract) super-class which is called AbstractDataComponent (AbstractDataComponent.java) and itself implements an interface called IDataComponent (IDataComponent.java). A DataComponent may handle JSONObjects (using the following JSON implementation for java:  http://www.json.org/java/) directly or it may handle JSONStrings only. This is where the too Extension Points differ and what is necessary to decide prior to the implementation of a concrete JSONObjectDataComponent or JSONStringDataComponent.

If you take a look at the class diagrams of the extension package, you will see that there are 5 methods that every DataComponent needs to supply:

...

method to override standard returninfo
isObserver()n/aIf returned false, the DataComponent will always get a null value as a parameter.
provideFilterKeys()nullA String[] array of keys that the DataComponent wants to listen to should be returned.
If null is returned then the DataComponent will always get all unfiltered data.
isDeltaObserver()falseIf true is returned, the DataComponent will get only the new or updated data since the last step it was scheduled (and not skipped, see pure data observers in scheduling section).
If false is returned, the DataComponent will always get the complete (updated) data since the first execution step

...

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.

...

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

  1. The kiem package contains the KiemPlugin activator, the basic interfaces for the extension points (API), the KiemEvents?, the KiemExceptions? and the externalized strings.
  2. The ui.views package implements the tree table view and most of the gui part.
  3. The ui package contains additional gui helpers like the text fields, icons and special SWT widgets.
  4. The properties package contains some basic KiemPropertyTypes as well as an interface and abstract class to extend those.
  5. The internal package accommodates some internal interfaces and abstract classes for the Extension Points. The AbstractDataComponent? class may be of most interest for deciding which methods to override.
  6. The execution package implements the scheduling and threaded execution.

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.

...