/feel-scala

FEEL parser and interpreter written in Scala

Primary LanguageScalaApache License 2.0Apache-2.0

FEEL Scala

A community extension for Camunda BPM which replaces the built-in FEEL engine of the Camunda DMN engine.

Features:

  • full support for unary tests and expressions
  • support all data types
  • include built-in functions
  • extensible by own functions

What is FEEL?

FEEL (Friendly Enough Expression Language) is a part of the DMN specification of the OMG. It is designed to write expressions for decision tables and literal expressions in a simple way what can easily understand by business professionals and developers.

How to use it?

Requirements:

  • Java 8

You can integrate the FEEL engine in different ways

Then, you can use FEEL expressions in decision tables and decision literal expressions.

See the Wiki for more information about the FEEL engine and the supported FEEL expressions.

Examples

Unary Tests

< 7                                                 // input less than 7

not(2,4)                                            // input is not 2 or 4

[date("2015-09-17")..date("2015-09-19")]            // input is between '2015-09-17' and '2015-09-19'

<= duration("P1D")                                  // input is less or equal one day    

Expression

applicant.monthly.income * 12                                           

if applicant.maritalStatus in ("M","S") then "valid" else "not valid"    

sum( [applicant.monthly.repayments, applicant.monthly.expenses] )        

sum( credit_history[record_date > date("2011-01-01")].weight )           

some ch in credit_history satisfies ch.event = "bankruptcy"      

See more examples.

Contribution

Found a bug? Please report it using Github Issues.

Want to extend, improve or fix a bug in the extension? Pull Requests are very welcome.

Want to discuss something? The Camunda Forum might be the best place for it.

License

Apache License, Version 2.0