MOCCML SigPML Example

[69]

1. Presentation

This example features a simple executable language using GEMOC Java Engine.

It illustrates the GEMOC animation framework on a Finite State Machine language where the concepts of both the syntax and semantic domains are in a single ecore file.

The example focuses on the tooling of a single language (FSM) with the following tools:

SigPML is a DSL dedicated to data flow processing. It is based on blocks, ports and connectors which associated ports to create directed flows.

2. Installation

Installation can be done using two ways:

  • using the example deployer wizard directly from the GEMOC Studio
  • or by cloning and importing the project from github.

2.1. Installing using the example deployer wizard

Install the projects of this language:

  • File → new → Examples…​ → GEMOC MOCCML SigPML Language example

Create and start an eclipse runtime:

  • Run → Run Configurations…​ → Eclipse application > new

In the second Eclipse instance.

Install sample models for the language:

  • File → new → Examples…​ → GEMOC models for MoccmlSigPML Language

Run (or debug ) one of the provided model using the predefined launch configurations:

  • Run → Debug Configurations…​ → Gemoc Concurrent eXecutable Model → one of the MOCCMLSigPML launch conf.

2.2. Installing from git

This language can be installed by importing the projects of this git repository in a GEMOC Studio. The language projects must be imported in the first workspace (language wokbench), then launch a new Eclipse instance from the first (ie. as a modeling workbench where the language is deployed) and then import the sample models. (see GEMOC documentation for more details about the language deployment process)

3. Language Designer documentation IconeGemocLanguage 16

3.1. Organization of the code

Main eclipse plugins:

  • org.eclipse.gemoc.example.moccmlsigpml contains the definition of the language (using GEMOC dsl file).
  • org.eclipse.gemoc.example.moccmlsigpml.model contains the metamodel of SigPML, using the Ecore language.
  • org.eclipse.gemoc.example.moccmlsigpml.k3dsa contains the Domain Specific Action of the operational semantics of SigPML (ie. the atomic actions of the interpreter), using the Kermeta3 language.
  • org.eclipse.gemoc.example.moccmlsigpml.groovy contains a groovy interpreter used to dynamically interpret some text expression from the user model.
  • org.eclipse.gemoc.example.moccmlsigpml.dse contains the Domain Specific Event of the operational semantics of SigPML (ie. the observable events of the interpreter), using the ECL language.
  • org.eclipse.gemoc.example.moccmlsigpml.lib contains a library of Event relations used by the dse. The library is defined using the moccml language.
  • org.eclipse.gemoc.example.moccmlsigpml.design contains the graphical concrete syntax of SigPML, using Sirius. It defines several layers, the default layer is an editor, the other layers are used by the debug/animation.
  • org.eclipse.gemoc.example.moccmlsigpml.model.edit contains EMF edition support. It is used to customize the various views in Sirius and in the simulator (for example by providing custom icons in the various views)
  • org.eclipse.gemoc.example.moccmlsigpml.model.editor contains the EMF tree editor for SigPML.
  • org.eclipse.gemoc.ultimateplotter contains some libs providing a 2D representation of the running model. (Ie. custom to this domain)

3.2. Overview of the metamodel

sigpml-ecore

Figure 44. SigPML metamodel overview


sigpml-ecore-agents

Figure 45. Agents in SigPML metamodel


sigpml-ecore-hwresources

Figure 46. HW Resources in SigPML metamodel


4. Model Designer documentation IconeGemocModel 16

The projects in modeling workbench contains some sample models.

you can run them from the modeling workbench by creating a launch configuration and using the GEMOC Concurrent Engine. (see model details about launching the concurrent engine in GEMOC Documentation).

5. Additional resources and related links

Please note that some of the document listed here may describe an early implementation of the language and may slightly differ from the current version.