modal-dsl / modal

A Domain Specific Language for AL Extension Development
Apache License 2.0
16 stars 4 forks source link
al-language domain-specific-language dsl dynamics-365 dynamics-365-bc dynamics-365-business-central mdal mdd model-driven-development xtext

mdAL: A DSL for AL Extension Development

GitHub Workflow Status Codecov GitHub release (latest by date)

This repository contains the implementation of the Domain Specific Language (DSL) mdAL. mdAL enables a Model-Driven approach to extension module development for the ERP System Microsoft Dynamics 365 Business Central. mdAL stands for model-driven AL.

Features

mdAL is a descriptive language used to define the needed core entities and views of an AL solution. In addition, the data flow between entities can be specified. General features and integrations which have to be provided in an AL solution (e. g. comment line table and pages, source code and navigate integration) and features that can be derived from the entity and view specification are added automatically.

Thus, mdAL provides AL code generation for:

Moreover, these customizations to standard objects are generated:

Specific code that cannot be generated from a mdAL model file can be integrated by subscribing to the various event publishers available in the generated AL code. Hence, you can use mdAL to automatically generate a base AL extension and create an additional AL extension that depends on the base extension and adds your specific code. This way you do not have to change generated code in order to do customizations. Take a look at the demo projects to see how this could be done. For more information on mdAL visit mdal-lang.github.io.

If you need additional event publishers or find errors in the generated code, please open an issue.

Repository Structure

This repository consists of the following projects:

Demo Projects

To see mdAL in action take a look at the following demo projects which implement a seminar management solution (cf. Microsoft official training material: Course 80437 — C/SIDE Solution Development in Microsoft Dynamics® NAV 2013):

Development

All projects are built using the build tool Gradle. If the Java JDK is installed, you can use the bundled Gradle wrapper and build all projects with this single command:

$ ./gradlew build

A list of all available Gradle tasks can be obtained with this command:

$ ./gradlew tasks

License

Apache 2.0 (c) Jonathan Neugebauer