Skip to main content

FEEL Overview

Friendly Enough Expression Language (FEEL) is the standardized expression language for the Decision Model and Notation (DMN) standard. It is designed to be executable while remaining readable for business users.

Introduction

FEEL provides a standard syntax for defining decision logic in DMN models. Whether you are defining a complex decision table rule or a simple literal calculation, you are likely using FEEL. Its syntax draws inspiration from Java, JavaScript, and Excel formulas but is optimized for decision logic.

Key Characteristics

  • Side-Effect Free: FEEL expressions are purely functional. They calculate a value based on inputs and return a result without interacting with external systems or changing state.
  • Rich Data Types: Built-in support for numbers, strings, booleans, dates, times, durations, lists, and contexts (objects).
  • Three-Valued Logic: Logic operations like and/or handle true, false, and null (unknown), ensuring robust handling of missing data.

Where is FEEL Used?

FEEL is the default language for most expressions in DMN:

  • Decision Tables: Input entries (unary tests) and output entries.
  • Literal Expressions: The core logic of a decision node.
  • Input Data: defining constraints or default values.
  • Boxed Expressions: Context entries, list definitions, and function invocations.

Examples

Simple Calculation

(Monthly Income * 12) + Bonus

Conditional Logic

if Age < 18 then "Minor" else "Adult"

Working with Dates

date("2023-12-25") + duration("P1D") // Returns 2023-12-26

List Operations

sum([10, 20, 30]) // Returns 60

Next Steps

Explore the detailed specific of the language in the Syntax Guide.