FEEL vs B-FEEL: every difference, engine-verified

B-FEEL is the business-friendly dialect of FEEL introduced with DMN 1.6, defined in chapter 11 of the OMG DMN specification. Where standard FEEL propagates null through type errors, B-FEEL substitutes type defaults (0 for numbers, the empty string, false, the empty list) and coerces mixed-type arithmetic, so a single missing value does not collapse a whole decision to null.

Every row below was computed by evaluating the expression in both dialects with the same engine that powers the free online FEEL evaluator. Use its FEEL / B-FEEL toggle to reproduce any of them.

Conversion

ExpressionFEELB-FEEL
number("abc")null0Try it →
date("invalid")null1970-01-01Try it →
duration("bad")nullP0DTry it →
time("25:00:00")null00:00:00ZTry it →

Boolean & misc

ExpressionFEELB-FEEL
not(null)nullfalseTry it →
true and nullnullfalseTry it →
null < 1nullfalseTry it →

String

ExpressionFEELB-FEEL
"total: " + 5nulltotal: 5Try it →
upper case(null)null(empty string)Try it →
contains("abc", null)nullfalseTry it →
split(null, ",")null[]Try it →

Numeric

ExpressionFEELB-FEEL
1 + nullnull1Try it →
1/0null0Try it →
"5" * 2null10Try it →
modulo(10, 0)null0Try it →

List

ExpressionFEELB-FEEL
sum([1, "2", 3])null4Try it →
index of(null, 1)null[]Try it →
sublist(null, 1)null[]Try it →

Temporal

ExpressionFEELB-FEEL
day of week(null)null(empty string)Try it →
month of year(null)null(empty string)Try it →

Range

ExpressionFEELB-FEEL
before(null, 5)nullfalseTry it →
includes([1..10], null)nullfalseTry it →
overlaps(null, [1..5])nullfalseTry it →

Context

ExpressionFEELB-FEEL
get entries(null)null[]Try it →
{a: 1}.b + 1null1Try it →

The function pages in the FEEL function reference document standard FEEL behavior.