Friendly Enough Expression Language

Expressing Decisions' FEELings

FEEL

  • Friendly Enough Expression Language

  • An expression language to describe the value expression of decision logic by mapping the inputs to outputs

  • Simple enough for a wide audience to understand

  • Standardised executable semantics, grammar and rules

Characteristics

  • Inspired from multiple other languages

  • Names of variables and functions may contain spaces, apostrophes and other characters

  • Reference elements of compound variables with qualified names (x.y.z) syntax

  • Not a programming language

  • Simple but powerful data model

  • Side-effect free

  • Three valued logic (true, false, null)

  • Powerful built-in functions

Built-In Types

  • String ("Hello, World")

  • Boolean (true, false)

  • Number (2)

  • Time

    • Date (date("2023-07-08"))

    • Time (time("11:11:11"))

    • Date and Time (date and time("2023-05-27T16:30:52"))

    • Days and Time Duration (duration("P1DT2H33M"))

    • Years and Months Duration (duration("P3Y4M7D"))

  • Complex structures also possible by grouping the simple types and/or restricting values, strongly typed

Other FEEL Constructs

  • Negation, Ranges, Disjunction

    • not(>10)

    • [33..42)

    • 22,33,[42..64],>102

    • date and time("2023-12-05T12:00:00" .. date and time("2025-03-17T14:33:22")

  • Lists

  • If..then..else

  • For..return

  • Sort

More FEEL Constructs

  • Functions

    • Arithmetic (+, -)

    • String operations (+, substring, replace)

    • List functions (list contains, count, append, reverse)

  • And many, many more :)

FEEL in Practice

  • Simple expressions in input expressions

  • Simple expressions in input entries

  • Expressions in output entries

  • Literal expressions

  • Function parameter mappings