A simple DMN service to evaluate a traffic violation.
You will need:
mvn clean compile spring-boot:run
mvn clean package java -jar ./target/dmn-springboot-example.jar
Validate the functionality of DMN models before deploying them into a production environment by defining test scenarios in Test Scenario Editor.
To define test scenarios you need to create a .scesim file inside your project and link it to the DMN model you want to be tested. Run all Test Scenarios, executing:
mvn clean test
See results in surefire test report target/surefire-reports
Once the service is up and running, you can use the following example to interact with the service.
Returns penalty information from the given inputs -- driver and violation: Given inputs:
{ "Driver":{ "Points":2 }, "Violation":{ "Type":"speed", "Actual Speed":120, "Speed Limit":100 } }
Curl command (using the JSON object above):
curl -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"Driver":{"Points":2},"Violation":{"Type":"speed","Actual Speed":120,"Speed Limit":100}}' http://localhost:8080/Traffic%20Violation
As response, penalty information is returned.
Example response:
{ "Violation":{ "Type":"speed", "Speed Limit":100, "Actual Speed":120 }, "Driver":{ "Points":2 }, "Fine":{ "Points":3, "Amount":500 }, "Should the driver be suspended?":"No" }
In order to have the DMN generated resources properly scanned by Spring Boot, please ensure the DMN model namespaces is included in the String application configuration.
The generated classes must be included in the annotation definitions of the main Application class:
@SpringBootApplication(scanBasePackages={"org.kie.kogito.**", "org.kie.kogito.app.**", "http*"})
public class KogitoSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(KogitoSpringbootApplication.class, args);
}
}