Skip to main content
DMN (Decision Model and Notation) provides a powerful set of expression types that can be combined to model complex decision logic. When defining decision logic in the DMN editor, you’ll select from these expression types through the “Select expression” menu.

Expression Types

Detailed Expression Type Examples

Literal Expression

The simplest expression type in DMN, used for direct values or FEEL expressions.

Relation

The most widely used DMN expression type, with columns for input conditions and output conclusions.

Decision Table

The most widely used DMN expression type, with columns for input conditions and output conclusions.

Context

Defines key-value pairs that can be used for multi-step calculations.

List

Creates an ordered collection of values or expressions.

Invocation

Calls a Business Knowledge Model (BKM) or function.

Function

Defines a reusable function with parameters.

Conditional

Creates branching logic with if-then-else statements.

For Loop

Iterates over items in a list or collection.

Every

Tests if a condition is true for every item in a collection.

Some

Tests if a condition is true for at least one item.

Filter

Filters a collection based on a condition.

Hit Policies in Decision Tables

Decision tables use hit policies to determine how rules are applied:

FEEL Operators and Functions

When writing expressions, you’ll often use FEEL operators and functions:

Comparison Operators

  • =, !=: Equal, not equal
  • >, <, >=, <=: Greater than, less than, etc.
  • [..], (..): Inclusive and exclusive ranges (e.g., [5..10])

Logical Operators

  • and, or, not: Logical operators

Collection Operators

  • in: Membership test (e.g., x in [1,2,3])
  • satisfies: Test if collection elements meet a condition

Common Functions

  • count(collection): Count elements
  • sum(collection): Sum numeric values
  • min(collection), max(collection): Find minimum/maximum
  • substring(string, start, length): Extract substring
  • contains(collection, element): Test for element
  • list contains(collection, element): Test if list contains element

Combining Expression Types

DMN’s power comes from combining these expression types to create sophisticated decision logic. For example:
This context expression combines filtering, some, conditional, for loop, and mathematical operations to calculate a discount based on complex criteria.