Shared, eMoflon-specific component for incremental unidirectional and bidirectional graph transformations
Go to file
Maximilian Kratz aaba0feaaf Hotfix for GT projects with a metamodel containing `System`
Use FQN for System.lineSeparator() calls
2023-11-15 14:57:51 +01:00
org.emoflon.ibex.common Hotfix for GT projects with a metamodel containing `System` 2023-11-15 14:57:51 +01:00
org.emoflon.ibex.dependencies Removes the export of the clashing dependencies (javax.xml.*) 2023-06-26 11:09:39 +02:00 Hotfix for GT projects with a metamodel containing `System` 2023-11-15 14:57:51 +01:00 Removes src-gen code + adds it to the gitignores 2023-11-02 17:14:13 +01:00
org.emoflon.ibex.patternmodel Removes src-gen code + adds it to the gitignores 2023-11-02 17:14:13 +01:00
org.emoflon.ibex.tgg.core.language Fixes the gitignore files for two projects 2023-11-02 17:20:19 +01:00
org.emoflon.ibex.tgg.core.runtime Fixes the gitignore files for two projects 2023-11-02 17:20:19 +01:00
.codebeatsettings Override codebeat's default Assignment branch conditon setting 2018-03-18 23:02:33 +01:00
.gitignore Removes src-gen code + adds it to the gitignores 2023-11-02 17:14:13 +01:00
LICENSE Initial commit 2016-10-25 16:54:15 +02:00 Fixes run as statement in 2023-11-06 10:51:39 +01:00


eMoflon::IBeX is an Eclipse-based incremental interpreter for bidirectional graph transformations based on Triple Graph Grammars (TGGs) and unidirectional graph transformations. It uses eMoflon::IBeX UI for the textual rule specification.

This repository contains only the part which is independent from a concrete pattern matcher.

There are 4 ways how to use eMoflon::IBeX:

  1. Use our pre-built Eclipse download with eMoflon::IBeX installed (or the version without eMoflon::IBeX to develop it).
  2. Use our pre-built virtual machine (VM) with eMoflon::IBeX installed.
  3. Prepare your Eclipse environment step-by-step with the section how to develop.
  4. Install eMoflon::IBeX into your existing Eclipse installation.

Pre-built Eclipse

  1. Install GraphViz.
  2. Choose the right pre-built Eclipse version for your need. A comparisson table can be found in the readme of the emoflon-ibex-eclipse-build repository. Typically, you want to download:
    • eclipse-emoflon-$ if you want to develop eMoflon::IBeX
    • eclipse-emoflon-$ if you want to use eMoflon::IBeX without developing it
  3. Download your chosen Eclipse archive.
  4. Extract the archive to a folder, e.g., to ~/eclipse-apps/emoflon-ibex.
  5. Start your Eclipse (= the binary in the extracted folder) and create a new workspace.


You can now create eMoflon projects and/or start using it with existing projects, e.g., from the tutorial.


Some additional steps are needed: Complete steps 9, 10, 12-15 from the next section to clone the code and verify your build.

Pre-built virtual machine (VM)

You can download the latest version of our pre-built virtual machine image from the release section. For detailed installation instructions, please refer to the file within the repository.

How to develop

  1. Install a Java JDK >= 17.0.6.
  2. Install GraphViz.
  3. Get the latest version of the Eclipse Modeling Tools. You need at least Eclipse 2023-06.
  4. Install Xtext from this update site (or use the Eclipse Marketplace):
  5. Install PlantUML from this update site (or use the Eclipse Marketplace):
  6. Install HiPE from this update site:
  7. Install the EPackage Registration Feature from
  8. Check the encoding for Xtend files.
    • In Eclipse: Go to Window->Preferences->General->Workspace.
    • Change the text file encoding to 'Other: UTF-8'.
  9. (Important!) Set standard git folder to (workspace) relative path, e.g., (Eclipse ->) Window -> Preferences -> Team (or Version Control) -> Git -> Default Repository Folder = ${workspace_loc}\git (for Windows) or ${workspace_loc}/git (for Linux and macOS)
  10. Go to File/Import.../Team/Team Project Set, check URL and enter in and import this PSF file:
  11. Execute MWE2
    • Open package org.emoflon.ibex.common/launch.
    • Right-click on Run all eMoflon MWE2 files.mwe2.
    • Press Run As -> Run all eMoflon MWE2 files.
  12. Set UTF-8 as file encoding for the development workspace (Window → Preferences → General/Workspace) and manually build all projects by clicking (Project → Clean... → Clean all projects) to trigger code generation (and get rid of errors). Make sure to check Project → Build Automatically.
  13. Set up your runtime and test workspaces by starting a runtime Eclipse workspace from your development workspace:
    • To start the runtime workspace, do the following steps inside your development workspace: Run → Run Configurations...; double click on Eclipse Application, give it a name (e.g., test-workspace) and click on Run.
      • Your development Eclipse should now start another Eclipse instance with all eMoflon plug-ins installed.
    • Inside your runtime workspace:
  14. Execute MWE2
    • Open package /
    • Right-click on GenerateExpress.mwe2
    • Press Run As -> MWE2 Workflow
  15. Inside the runtime workspace, build all projects (Project → Clean... → Clean all projects) to trigger code generation.
    • Hint: It may be required to trigger a full eMoflon build on all projects. Select all projects in Package Explorer and click on the black hammer symbol.
  16. Run the JUnit tests to ensure that all is well by right-clicking one of the Testsuite_*.launch in the Testsuite project and TestsuiteGT.launch in the TestsuiteGT project and start the tests by selecting Run As/JUnit. If everything is set up correctly, all tests should be green.

Running Testsuite_GLPK.launch requires GLPK (see installation step 5).

Running Testsuite_Gurobi.launch requires Gurobi (see installation step 6).

Running Testsuite_CBC.launch requires Google OR tools (see installation step 7).

Testsuite_SAT4J.launch uses the SAT4J (automatically installed, but the slowest option).

How to install

eMoflon::IBeX can be installed via its updatesite:

Please notice: You need at least Eclipse 2023-06.

Please notice: Ensure that your Eclipse runs with an OpenJDK >= 17.0.6.

(Please notice: This section is for installation purpose only. If you already setup your development workspace as described above, this section is irrelevant for you. Furthermore, you may need to install some additional dependencies if Eclipse tells you to.)