MetaCase Newsletter 2014/3

Nov 2014

MetaEdit+ 5.1 released

MetaEdit+ 5.1 has now been released. As always, both your models and languages created with previous versions of MetaEdit+ will work in the new version too.

See a 10 min video demonstrating the feature highlights on the MetaEdit+ YouTube channel. The new version is loaded with dozens of new features and hundreds of improvements, including:

  • Better UI support for modeling, in-place editing, fewer dialogs (video)
    • Hierarchical property sheet
    • Movable dynamic ports
    • Reconnect a role to a different object or port
    • Drag objects with their contents
  • New features for metamodeling (video)
    • Read-only and hidden properties
    • UUID properties, created with a globally unique value
    • Regular expression support for explicit numbers of repetitions and non-capturing groups
    • New generator functions, hyperlink generator, prompt for filename, live check options
  • Improved collaboration and integration

A full list of changes from MetaEdit+ 5.0 to 5.1 is available on the MetaEdit+ 5.1 information page. You can download the evaluation version of 5.1 at with full manuals, tutorials and examples.

Customers entitled to a free upgrade will be contacted directly by MetaCase.

In this issue: 

  • MetaEdit+ 5.1 released
  • Starter kit: Jump-start to Domain-Specific Modeling
  • A guide to Domain-Specific Modeling
  • Embedding MetaEdit+ into your product
  • Business cases for modeling and generators, Code Generation 2014 keynote recording
  • From the forums: Question about Graph Tools constraints
  • 26th Novr: Webinar on creating Domain-Specific Modeling languages with MetaEdit+ 5.1
  • DSM tutorial hands-on: create 5 modeling languages in 5 hours at OOP 2015

Starter kit: Jump-start to Domain-Specific Modeling

Interested in the benefits of DSM, but finding it hard to get started? You're not alone! While a good tool makes a big difference, nothing beats having a professional help you get off on the right foot. The MetaCase Starter Kit provides you with the tools and expertise you need, in one easy package. Together with one of MetaCase's experts you will build the first version of your DSM language and generators in just 2 days. You own the language, and you get the tools for its further development and use over the next 3 months. Full technical support is included, and at the end you can measure the benefits and decide how to continue.

A guide to Domain-Specific Modeling at

Domain-Specific Modeling (DSM) raises the level of abstraction beyond current programming languages by specifying the solution directly using problem domain concepts. The final products are then generated from these high level specifications. This automation is possible because both the language and generators need fit the requirements of only one company and domain. has published three extracts from the DSM Book as articles:
- Part 1: Code vs. model-driven approaches
- Part 2: Modeling examples
- Part 3: Higher level of abstraction

The articles describe practical examples, show difference to code and UML-based development and describe how companies can raise the level of abstraction to gain quality and productivity.

Embedding MetaEdit+ into your product

MetaEdit+ 5.1 can be embedded as part of your product through our partnering program. In addition to supporting your own modeling languages and generators, the user interface can be customized to show your branding and integrate with the rest of your product. For example, you can hide parts of the user interface leaving only selected tools like the Diagram Editor visible to your users, with the functions of the launcher and browsers being handled by your own product (cf. the Eclipse plugin and Visual Studio extension). The parts of your product can communicate and transfer information via the API, XML, files, and hyperlinks. You can also change the main tool icon and splash screen, and integrate with any license management software your product may use.

MetaEdit+ is already integrated with product offerings for various areas of modeling, including early phase analysis, software development, configuration deployment, and testing. Visit the MetaCase website for more details on embedding MetaEdit+ functionality.

Business cases for modeling and generators, CodeGen2014 keynote recording at InfoQ

Thanks to InfoQ the CodeGen 2014 keynote by Juha-Pekka Tolvanen on "Business cases for modeling and generators" is now available as a video.

In his talk Juha-Pekka shows what kinds of modeling languages and generators are more beneficial than others. Common characteristics include: Getting more out of the models than their original creation required, raising the level of abstraction, and addressing a specific need. The second part of the talk shows how to create successful modeling languages. He shows what kind of language creation approaches — unfortunately still widely used — should be avoided and which approaches lead to better quality domain-specific languages, support evolution and enable scalability to tackle larger systems and teams.

See the keynote recording at InfoQ.

From the Forums: Question about Graph Tools constraints

When you have a question, the MetaEdit+ Web Forums have have proven to be a great way to get accurate answers quickly. At the same time, your question helps others for the future: some threads have been read over 20 000 times. 

This issue's highlighted topic comes from mviletta who asks about accessing objects while iterating over relationships.


Q: I want to define a binding between two objects (Object1 and Object2) via one relationship (Relation) and two roles (Role1 and Role2). I need to define two constraints:

1. The Object1 may be in at most 2 roles of type role1 (that is, object1 can be connected at most 2 times with object2). I can define this constraint correctly.

2. The Object1 must be connected in at least 1 role of type role1 (that is, the object1 can't be in a model without a connection with object2). My question it's related with this kind of constraints, how can I define it? I didn't figured out a way from define minimum occurrences of relationships or roles in a binding.

A1: One approach: define a MERL generator to check whether the Object1 has 1-2 legal role1's. This MERL generator could be named '__LiveCheck' so the end user will see the result of this validation immediately in the pane below the diagram. Or you may have your own "Check" or "Validate" button available in the toolbar (by naming the generator !Check etc.), which would validate the model on demand according to some rules.

There is no Graph Constraint to create rule2 directly. The reason is that you always have to create an Object1 first in the diagram, before you can connect any roles to it. This creation of a new Object1 would be disallowed if the graph constraint would not allow any Object1 to exist without a connection.

A2: Another possibility for rule 2 is to add a conditional element to the symbol for Object1, e.g. to display a message "connect a role1" if there are no role1's. The message could be a text element, and the condition would then be a generator:

if ~role1; then 'ok' endif

which would be compared to the empty string - i.e. show the message if the generator does not output 'ok'.


See other topics from the MetaEdit+ Web Forums here.

26th Nov: Webinar on Domain-Specific Modeling with MetaEdit+ 5.1

This 30-minute webinar will demonstrate how MetaEdit+ allows you to incrementally define your own modeling tool — without having to write a single line of code. As soon as you define a modeling language, or even a partial prototype, you and your team can start to use it in MetaEdit+. You will learn:

  • How to define domain-specific languages with MetaEdit++
  • How to define rich, dynamically changing notations 
  • How MetaEdit+ updates models on the fly as the modeling language changes
  • How to test and debug the modeling language and generator 

For the webinar you can use your computer's microphone and speakers — a headset is recommended. The schedule for the webinars and instructions are available on the webinar page.

Alongside the webinars, we're also offering company-specific webmeetings for DSM. These allow us to focus on your particular vertical, e.g. automotive, product line, UI, telecom or service specification. We can show you and your team DSM languages and cases from your vertical as well as discussing your company-specific requirements — all of course with no obligation. Book your own free one-to-one webmeeting now!

Create 5 modeling languages in 5 hours at OOP2015: hands-on tutorial

All tools are not born equal: a recent study by Eclipse committers showed that defining a graphical DSL in MetaEdit+ is 10-50x faster than in any of the other commercial or open source tools []. In this OOP2015 tutorial, we will demonstrate how simple and quick it is to create Domain-Specific Modeling languages and their code generators with MetaEdit+. Using a hands-on approach we will define 5 fully functional modeling languages and generators, learning principles and best practices proven in industrial experience. The tutorial teaches practical, repeatable steps to invent and implement DSL.

The language definition process reveals the characteristics of DSLs that enable generating working code from models:

  • DSL based on the concepts of problem domain rather than code
  • Scope of the language narrowed down to a particular domain
  • Language minimizes effort needed to create, update and check the models
  • Language supports communication with users and customers

The tutorial takes place 26th January.See the details and full program on the OOP2015 site.