home‎ > ‎

Some Progress with ObjectFlow and Modelestic

posted Aug 26, 2011, 5:54 AM by Daniel Stieger   [ updated Aug 26, 2011, 6:05 AM ]
Currently, we are developing a business application involving a large database, some business logic and a user interface. The whole application should be modeled with a domain specific language in order to ease communication between stakeholders, increase software development productivity and foster technology independence. With this post, i just want to give a brief overview over the two languages employed in this project: Objectflow and Modelestic.

Jetbrains Meta Programming System (MPS) was chosen as language workbench to implement our two DSL´s. Right know, MPS supports java technology with a complete java model called baseLanguage out of the box. Thus, our two DSL´s were built on top of the baseLanguage, inheriting a good deal of features like expressions or data types from there. Drawing heavily on the MPS baseLanguage was the main reason for using MPS and relying on java. However, java is wide spread in business application environments anyway.

Instead of developing one single DSL for this project, two languages – namely (1) Objectflow and (2) Modelestic – were devised. Objectflow primarily focuses on data structures and business-logic, whereas modelestic is a DSL to model user interfaces (UIs).

Lets first turn to Objectflow. The DDD (domain driven design) paradigm of Evans (2009) can be understood as the foundation of Objectflow. The DSL supports modeling of
  • business objects: the data objects used by the application, e.g. invoice and invoice positions
  • services: operations offered (the business logic iteself)
  • repositories: database save / query operations, e.g. findInvoiceByDate()
  • applications: main entry point, setup and interconnection of all objects like services, repositories …

In order to handle business logic easily, additional high level concepts like a collection language to express operations on lists of objects were included. Therefore, reordering or summarizing receipts and their positions can easily accomplished. Furthermore state-machines and transaction constructs are included. Objectflow's code generators build upon jdbc, mybatis and google juice.

Modelestic is used to model necessary UI´s. Following the ideas of Just-UI (2009), the developer can simply define ui s as list views (display multiple objects of the same type in a table) and form views (display one object at a time). These two patterns can be combined in a master-detail view. The views as well as java controllers are completely generated for the apache pivot toolkit, allowing development of desktop applications and applets (RIA).

The following pictures should give an impression of the DSL s and the outcome generated.

     (1) Main Application Configuration in Modelestic

      (2) Creation of a BusinessApplication Editor for WeBelege

     (3) A fully generated Client based on objectflow / modelestic