FEEL

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

B-FEEL is the business-friendly dialect of FEEL, 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.