A little DMN Table tester with the following Goals:
This is exactly the kind of tool that as soon as I saw it, I knew it was something I was missing.
I really enjoy being able to help people especially new people with modeling DMN, so I often have people sending me models to validate.
This tool’s fundamental helpfulness comes first from being able to quickly catch some of the simple common errors, but also in the way it makes it easy for business users to explore the wide variety of possible ways in DMN that decisions can be modeled. This was in fact the original goal of DMN and this is a strong step towards narrowing the Business IT Gap for the standard.
Niall Deehan Developer Relations Camunda
I work at a redesign at the moment and published it > Version > 0.15.*
.
Not all features are ready in the UI (mostly the test cases).
So if you need them stay on 0.14.0
.
I wrote two blog article that explains how you can use it:
And there is a Recording from Camunda Community Summit:
1 Test Mode
You can configure a DMN Table Test as:
2 Decision Id
The id of your table - be aware this is not the name
3 Path of the DMN
This path depends on your Docker Image (check runDmnTester.sh).
Example: -v $(pwd)/dmns:/opt/docker/dmns \
dmns/MyDmn.dmn
.4 Test Inputs
Add the following for each Input:
5 Test Variables
You can define Variables you use in your Rules. Usually one value is enough.
This projects builds on cool Open Source Projects. So my thanks go to:
Library to serialize and deserialize Json to communicate between the client and the server. The library works on both Scala and Scala.js.
Native Scala.js library for building user interfaces
Bindings that allows using Laminar with a decent Webcomponents library.
An engine to execute decisions according to the DMN 1.1 specification.
Typeful, functional, streaming HTTP for Scala.
A functional, composable ZIO interface to configuration
Type-safe, composable asynchronous and concurrent programming for Scala
Ammonite lets you use the Scala language for scripting purposes: in the REPL, as scripts, as a library to use in existing projects, or as a standalone systems shell.
Development
Server
sbt server/run
This starts the Web Server on Port 8883.
This copies the client assets to the classpath of the server. So make sure you run
npm run build
before.Or use the client as described in the next chapter.
In the sbt console: ~fastLinkJS
This creates the Javascript file from the Scala classes on the fly with every change.
In the terminal: npm run dev
This will watch all your changes in the client and automatically refresh your Browser Session. This uses Vite.
Open in the Browser http://localhost:5173.
Just run amm ./publish-release.sc VERSION
.
Due to problems with the "org.xerial.sbt" % "sbt-sonatype"
Plugin you have to release manually:
if you do not see any of the buttons or repository hit the refresh Button.
Just run amm ./publish-release.sc VERSION-SNAPSHOT
.
For now as soon as you publish a SNAPSHOT - it is always published locally.
There are 2 Docker Images:
The DMN Tester App:
sbt server/docker:publishLocal
creates a Docker Image - see also next chapter.
The Unit Test Creator: See its README.md
There are Docker Images you can use with an example in the demo
directory.
cd demo
See the according README