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/orhandletrue,false, andnull(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.