modellwerkstatt werkbank

A Java-based RAD tool build on JetBrains MPS

We provide and maintain modellwerkstatt werkbank , a Java-based RAD (rapid application development) toolchain which serves as a strong basis when creating custom business applications. Our toolchain includes a set of domain specific languages (DSL's) which allow you to model all aspects of user-interfaces, business logic and data persistence. Instead of programming in plain Java, fiddling around in the downs of Java toolkits and libraries, our domain specific languages let you specify the most fundamental aspects of your business applications on a higher level. You can draw on our experience on how to formulate and structure custom applications, leaving you more time to focus on the business domain itself. Our toolchain does not only speed up application development but also guarantees a consistent architecture across applications, in turn improving the quality of your software. Your business software becomes easier to understand, extend and maintain in the long term.

Our domain specific languages for business applications come with various top-level concepts, such as Table, Form, Process or Command. However, the languages are built on top of Java, showing a similar look and feel and making them easy to learn. With some development background, you can easily use our werkbank to implement a business application with remarkable initial results in short time.

Our two articles in German (Adieu teure Softwareentwicklung, Teil 1, Adieu teure Softwareentwicklung, Teil 2) illustrate the ideas behind our Java-based RAD toolchain. Another article on user interface modeling is available in English. The article points out the relationship and the integration of Java in our modeling toolchain.

Short Presentation on modellwerkstatt werkbank

3 DSL's perfectly integrated

modellwerkstatt werkbank consists of three DSL's which are tightly integrated within each other. No additional tools like a Java-code editor or a user interface design-tool are needed. All aspects of business application modeling are covered within our werkbank.


Accessing the database, retrieving and storing data, is a crucial domain of business applications. Relational database systems and SQL are most well known across the industry for years. While there are myriads of tools available for accessing databases in Java, all come with certain drawbacks and complexity. Our manmap DSL takes a straightforward approach. A mapping describes the relationship between a database table and a Java object, allowing for simple queries (get, find), also packaging retrieved rows as Java objects. Save or delete statements are also available. However, application developers have to specify manually how to assemble and load more complex Java data structures (graphs) like "business domain documents". No lazy loading nor any other magic is applied.


Our objectflow language brings in three important concepts when it comes to business application modeling: Entity, Command and Process. Entities are used to model business-relevant data structures like invoices, schedules or other process documents. Any behavioral aspect of business software has to be modeled as commands. They follow a transactional logic which can not be executed halfway only. The third important concept in objectflow is the process. We expect every business process having multiple states (e.g "finished", "waiting for approval"). Processes define which commands are available when, in which states, and how things get executed across vrious commands.


The common user interfaces for business applications include primarily two types of data visualizations: (1) a tabular arrangement, where a number of data objects are presented in a table with row and columns; (2) a plain form, where a number of fields are shown, oftentimes allowing users to edit values in those fields. With the DataUX language, application developers specify tables and forms in a logical manner by defining the columns in tables, the fields in forms, their formatting and their relation to data objects (binding). Grid- or Tab-Layouts can be used to define more complex user interfaces. However, if need be, extending UI's with custom components is still easily achievable.

Technology independence

werkbank includes all necessary code generators to generate the executable code out of modelled applications. The code generators translate from our business DSL's into plain Java code. The generated business applications can then be deployed to various targets. Out of the box, we support a (1) lightweight HTTP client with a HTML frontend for mobile devices, (2) a low maintenance rich-client based on Java-Fx technology and (3) a Vaadin GWT web-client. Especially the rich-client is particularly pleasant while developing the application.

Using DSL's to specify business software secures resources invested. Beyond cutting down development time by focussing on the problem domain at hand (the business), the runtime environments described above can easily be exchanged. Furthermore, the code generators can also be exchanged or enhanced going forward. Your business applications - modeled with our werkbank - can be translated to any Java-based target platforms, giving you an extra when it comes to investment security. Changing user interface toolkits, database systems or application servers is not a theoretical consideration any longer. werkbank DSL's lets you specify your application in a technology independent manner.

Using domain specific languages when developing business applications let you put more focus on your problem domain, requiring less time for the basics most business applications have in common. Specific technology stacks (e.g. Java) are simply a generation target, increasing technology independence drastically.

Open source

Our toolchain builds on JetBrains' MPS - the Meta Programming System, an IDE which is also available as a Plugin for the well known IntelliJ Platform. JetBrains' MPS is open source and does not come with any fees attached. Our werkbank is open source as well. It comes with necessary languages, generators, and runtimes. All components within our toolchain are Java-based and openly accessible.

Further information

More information on modellwerkstatt werkbank, JetBrains mps and our approach to business application modeling is provided upon request. A demo application demonstrating all features provided by our werkbank can be found at github. We provide consulting, teaching and support.

We wrote a modellwerkstatt werkbank manual in 2014 in German language which covers a lot of concepts used. Some chapters are not up to date, especially those on Batch-Jobs and User-Interface descriptions. Newer documentation is available as slides.