DMN engine written in Scala
Switch branches/tags
Nothing to show
Clone or download
Latest commit eff0687 Nov 8, 2018

README.md

DMN Scala

An engine to execute decisions according to the DMN 1.1 specification.

The engine uses the Camunda DMN model api for parsing DMN files and the FEEL-Scala engine to evaluate FEEL expressions.

Features:

  • support for DMN 1.1 (Compliance Level 3)¹
    • Decision Table
    • Business Knowledge Model
    • Context
    • Literal Expression
    • List
    • Relation
    • Function Definition
    • Invocation
  • evaluation of parsed DMN models
  • extensible by own functions and types

¹ the DMN coverage is measured by the DMN TCK

How to use it?

You can use the DMN engine in different ways

Extensions

You can customize the DMN engine in the following ways.

Provide Custom Functions

The engine comes with a bunch of built-in functions which are defined by the DMN specification. And it allows you to define own functions as FEEL expressions (using the keyword function) or as context entry element.

However, the engine provides also a SPI to add custom functions which are written in Scala / Java. The classes are loaded via Java's service loader mechanism. Please have a look at the Wiki to see how to implement the SPI.

Transform Custom Types

The engine has a transformer (aka ValueMapper) to transform the incoming variables into FEEL types and to transform the decision result back into regular Scala types.

If you need to transform custom types or change the result types then you can implement a SPI. The implementation is loaded via Java's service loader mechanism. Please have a look at the Wiki to see how to implement the SPI.

Contribution

Found a bug? Please report it using Github Issues.

Want to extend, improve or fix a bug? 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