DecisionLang is a declarative language that enables users to specify a decision model in a very compact and concise way.

One of the ever-existing problems in decision-making is to be able to specify two things:

  • What is the decision we are trying to solve (i.e., decision modeling)
  • How we actually make the decision (i.e., executing the decision model)

Many proprietary and open standard modeling and languages try to solve this problem. However, they all cover a specific type of decision. Some focus on rule-based decisions such as DMN more than others. Some others focus on optimization languages, such as AMPL, while others focus on constraint modeling and mathematical optimization, such as PuLP, JuML, and MiniZinc.

This list goes on – there are many other techniques and options that I have not listed here, but essentially, all of them suffer from one or more of the issues below:

  • They are very specific and cannot cover a wide range of decisioning problems
  • They are too generic and become complex when specifying decisioning problems

Decision Model and Notation (DMN)

The standard of DMN (Decision Model and Notation) allows building Decision Requirements Diagrams (DRD) to model a decision at a high level. It then uses Decision Tables to specify Business Rules and provides a Friendly Enough Expression Language (FEEL) to allow specifying details of decision logic for execution at runtime.

We have already covered the shortfalls of the Decision Requirement Diagram. In general, DMN (DRD, FEEL, Boxed Expressions…) is designed to standardize rule-driven decisions for interchangeability. For instance, the FEEL (Friendly Enough Expression Language) is primarily designed for expressing conditions and calculations within decision logic rather than directly setting values because its goal is not to allow execution side-effects while running decisions at runtime.

Of course, you can extend DMN and add more complex behavior, but it contradicts one of its primary purposes: interchangeability between platforms and vendors.

General-Purpose Programming Languages

The other option to solve the above problem of modeling and executing decisions is to use a general-purpose programming language. This is what the software development industry is dealing with every single day. They build software to make and execute more specific decisions, e.g., vehicle routing, patient management, etc.…, or build generic types of tools as platforms to allow other teams (and prospects) to modify and configure them based on their needs.

The problem with general-purpose programming languages is their core fundamental promise. It is general. They are designed to solve anything and everything. Which makes it sub-optimal for modeling and executing decisions:

  • Require programming (or coding) skills
  • They are verbose and noisy

As a result, they are complex as they need to do so much other than modeling and executing business decisions. It is harder to model, understand, and maintain decision models with lots of dependencies that require to be taken care of.

So what’s the Alternative?

DecisionLang is a specific language that allows the modeling and execution of business decisions. It is designed to accommodate rule-driven decisions (such as DMN) and other types of decisions such as data-driven decisions, optimization decisions, etc.

It is also declarative, so rather than writing too many lines for modeling (or writing syntax) to specify how to solve a decision, you specify what problem (i.e., decision) you want to solve, and then DecisionLang solves it for you. Additionally, you can specify the model in a graphical or syntaxial approach.

Because DecisionLang is not designed to be a general-purpose programming language and focuses on modeling and executing business decisions (rules, optimization, data processing, etc…), it is very optimized to specify (model) what to do. It is compact and requires considerably less explanation on how to actually execute a decision (if any at all).


The above image compares Python (which I love) vs DecisionLang to model an optimization problem. They are solving the same problem in allocating the adjusters to a claim to ensure SLAs are met, and capacity has not been exceeded.
As you see, Python requires you to write at least twice as much. DecisionLang is more compact and concise, with much less noise.

Book a Custom Demo

First or last name is too short

Benefits of DecisionLang

As mentioned, DecisionLang is a declarative language that enables users to specify a decision model in a compact and concise way, providing a visual, graphical and syntaxial approaches so they can choose their method based on their preference.

Additionally, models in DecisionLang abstract away low-level implementation details and express the problem logic, resulting in a more compact and concise representation of the decisioning problem:

  • High-Level Abstractions: Declarative models use high-level abstractions to represent problems with rules, constraints, objectives, relationships, and data processing functions. This allows for a more compact representation of the decision domain and problem in both graphical and syntaxial manners without needing to specify every step in detail.
  • Rule-Based Formulation: Its declarative approach uses rule-based formulations to express rules, constraints, objectives, and data logic. So, it reduces the need for explicit procedural logic, ceremony, and preparation before and after what needs to be done.
  • Solver Independence: In optimization models, it is solver-independent, meaning you can easily switch in and out between optimization libraries. This allows users to specify the problem once in a concise declarative form and then solve it using various solvers without modifying the model itself.

Therefore, the DecisionLang model leverages declarative and high-level abstractions, rule-based formulations, solver integration, and independence to abstract out implementation details to express the business decision domain and problem concisely and efficiently. Additionally, it is not just a meta-model or sudo code for representation; it is an executable model that does not require compilation and doesn’t produce extra artifacts to deploy and invoke business decisions.

It is a unified language for modeling and executing business decisions syntaxial and graphically that takes advantage of a declarative approach to model and execute, rule-based, optimization, data processing, mathematical, reasoning, etc. all about business decisions.

Last updated March 7th, 2024 at 10:26 am Published March 5th, 2024 at 01:48 pm