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.

DMN_FEEL_Expression

Using a FEEL expression as part of a Decision Requirements Diagram

Decision Model and Notation with introducing FEEL is a reasonable step forward to enable expression capability to a no-code behavior (i.e. DRD and DRG and Decision Table). But when it comes to expression complex behaviors that require assignments, state management, data processing it lacks.

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.

DecisionLang is a superset of Decision Model and Notation that enables modeling and executing complex decisioning scenarios. 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.

DecisionLang is a fifth-generation language that unifies math, data, AI, procedural, and functional paradigms into a clean, declarative model purposefully built for decision modeling, decision orchestration and decision execution. It is designed for participation across roles, from data scientists and engineers to analysts and business users.

Architecturally, it provides 3 layers:

  • No-Code Layer
  • Business Logic Layer
  • Expression Layer

There are several characteristics to the DecisionLang:

  • Expression – allowing presenting complex behavior using an easy-to-understand declarative expressions
  • Composability and Extensibility – allows building more complex units of expression with chaining similar to functional languages i.e. monadic operators
  • Visual representation – allows building visual representation of complex decision model and logic (or even expressions)

 

boxed-expressions-dmn-run

Expression editor with understanding of context of expression

 

The editor of DecisionLang enables even non-technical members of team decompose complex behavior in more reusable units and it guides them to write expressions. DecisionLang by design is composable and allows formulation of complex behavior using its easy and intuitive expression language. With supporting a very wide ranges of data types, data operators, built in functions and data processing and manipulation capabilities.

Make Complex Simple

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).

Pyhton-vs-DecisionLang

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.

Although the above example is a Python in optimization, but the same principal applies for other scenarios such as decisions and rules development. DecisionLang provides more concise way of expressing complex behaviors than other generic programming languages such as Java, C#, .Net etc. when it comes to business decisions and business rules.

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.
  • Code Independence: Advanced expression language that is superset of FEEL (Decision Model and Notation) makes decision and rules developer more productive. It enables them to use DecisionLang based on Open Standard, rather Java, .Net, Python or other programming languages to express what should be done. This makes the whole development of decisions and rules a breeze, and delightful and understandable for non-technical teams.

Book a Custom Demo

First or last name is too short






Therefore, the DecisionLang model leverages declarative and high-level abstractions, rule-based formulations, code 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 and rules syntaxial and graphically that takes advantage of a declarative approach to model and execute, rule-based, optimization, data processing, mathematical, reasoning, data operations, etc. all about business decisions.

Last updated November 3rd, 2025 at 11:26 am Published March 5th, 2024 at 01:48 pm