Decision Model and Notation Toolkit
Overview
DMNTK is a set of tools for building, testing and evaluating decision models. DMNTK is based on the Decision Model and Notation (DMN™) specification, the industry standard led by the Object Management Group (OMG®), the institution behind such standards like UML®, BPMN™ and CORBA®. DMNTK is written in Rust, a programming language that empowers building reliable and efficient software. DMNTK aspires to be the fastest and fully compliant with DMN™ specification decision model evaluator.
Main DMNTK features:
- Evaluation of DMN models as a service.
- Evaluation of decision tables.
- Evaluation of FEEL expressions.
- Parsing and validating DMN models.
- Parsing and recognizing decision tables.
- Parsing and validating FEEL expressions.
- Testing DMN models.
- Testing decision tables.
- Testing FEEL expressions.
- Exporting DMN decision models to HTML.
- Exporting decision tables to HTML.
- Exporting FEEL expressions to HTML.
Installation
DMNTK ships as a single executable with no dependencies.
Binary version of DMNTK may be
- obtained directly from GitHub releases,
- built and installed from source using Cargo.
Installing DMNTK using Cargo:
$ cargo install dmntk
Getting started
DMNTK provides examples ready to play with.
To install the examples run:
$ dmntk exs
Evaluate FEEL expression
$ cd ./examples/e1
$ dmntk efe e1.ctx e1.feel
3
Evaluate DMN model
$ cd ./examples/e2
$ dmntk edm e2.ctx e2.dmn -i "Greeting Message"
"Hello John Doe"
Evaluate decision table
$ cd ./examples/e3
$ dmntk edt e3.ctx e3.dtb
0.15
Run as a service
$ cd ./examples/e2
$ dmntk srv -H 127.0.0.1 -D .
Loaded 1 file(s) from directory: .
dmntk 127.0.0.1:22022
Switch to another terminal window and run:
$ curl -s -d "{\"Full Name\":\"John Doe\"}" -H "Content-Type: application/json" -X POST http://127.0.0.1:22022/evaluate/compliance-level-2-test-0001/Greeting%20Message
{"data":"Hello John Doe"}
Documentation
DMNTK documentation can be found on dmntk.io.
License
Licensed under either of MIT license (LICENSE-MIT) or Apache License, Version 2.0 (LICENSE-APACHE) at your option.
Contribution
Unless you explicitly state otherwise, all contributions intentionally submitted for inclusion in the work by you, shall be dual licensed as above, without any additional terms or conditions.