FEEL Engine Type Handling

This documentation covers supported types of variable values when used in a FEEL expression and supported output types.

In DMN, when defining a typeRef attribute on a Variable, Input or Output element, the DMN Engine tries to convert the result value of the corresponding Literal Expression, Input Expression or the Output Entry. When no typeRef attribute is specified, the DMN Engine passes the return value of the FEEL Engine directly without any conversion. Please see the documentation about Supported Data Types in DMN to learn more about the typeRef attribute.

The FEEL Engine might support more types than listed below. However, this page defines which of the types are known for being…

  • …well integrable in EximeeBPMS
  • …covered by automated tests

Supported Variable Value Types

The variable value types listed in this section can be handled by the FEEL Engine when passing.

Java Native Types

  • java.lang.String
  • java.lang.Float
  • java.lang.Double
  • java.lang.Integer
  • java.lang.Long
  • java.lang.Boolean
  • java.util.Date
  • java.util.Map
  • java.util.List

Spin Types

  • org.eximeebpms.spin.json.SpinJsonNode
  • org.eximeebpms.spin.xml.SpinXmlElement

For more information about the EximeeBPMS Spin integration, please see the documentation about FEEL Engine Spin Integration.

Return Types

The table displays:

  • Which return value of a FEEL Expression maps to which Java type
  • Which EximeeBPMS specific variable type is assigned for the respective Java type
FEEL Expression ExampleFEEL Engine Return TypeEximeeBPMS Variable Type
nullnullnull
"foo"java.lang.Stringstring
3.1415java.lang.Doubledouble
3java.lang.Longlong
truejava.lang.Booleanboolean
time("11:45:30")java.time.LocalTimeobject
time("11:45:30+02:00")
time("10:31:10@Europe/Paris")
org.eximeebpms.feel.syntaxtree.ZonedTimeobject
date("2017-03-10")java.time.LocalDateobject
date and time("2019-08-12T22:22:22")java.time.LocalDateTimeobject
date and time("2019-08-12T22:22:22+02:00")
date and time("2019-08-12T22:22:22@Europe/Berlin")
java.time.ZonedDateTimeobject
duration("P4D")java.time.Durationobject
duration("P1Y6M")java.time.Periodobject
{ "foo": "bar" }java.util.Map *object
[ "foo", "bar", "baz" ]java.util.List *object

* Since the FEEL Engine is based on the Scala Library, a Scala-specific implementation type for Map and List is used