Integrating DMN and Business Process on Red Hat Process Automation Manager
DMN stands for Decision Model and Notation. According to Wikipedia it is a standard approach for describing and modeling repeatable decisions within organizations to ensure that decision models are interchangeable across organizations. It is another approach of creating a “decision” on RHPAM (Red Hat Process Automation Manager), other than Decision Table and DRL.
On RHPAM, DMN file can be deployed as a standalone dpeloyment, or as an embedded within a Business Process. On this writing, im trying to do both and we’ll see what are the benefit and weakness of each approach.
Lets try to create a simple DMN to calculate how much loan should one get based on his age and salary. Create “age” and “salary” as DMN Input Data, and two DMN Decisions. “Loan_limit” with Decision Table, and “result” with Context.
Save, Build and Deploy, and we can test it by using rest api. But first we need to check on DMN Namespace and Model Name which is highlighted on the first screenshot and then put is as json parameter.
curl -L -X POST 'http://localhost:8080/kie-server/services/rest/server/containers/loan_validation_1.0.0-SNAPSHOT/dmn' \ -H 'Authorization: Basic cGFtQWRtaW46cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ --data-raw '{ "model-namespace":"https://kiegroup.org/dmn/_43FF885A-C2FB-49A4-BFB4-0F007A2C1C4F", "model-name":"Validation", "dmn-context": { "age":50, "salary":1200 } }'
The next step is put this DMN into a workflow. We can start by crating a simple workflow, dont forget to add DMN Namespace and Model Name on Business Rule Task.
And run this curl ommand to create a new instance,
curl -L -X POST 'http://localhost:8080/kie-server/services/rest/server/containers/loan_validation_1.0.0-SNAPSHOT/processes/loan_workflow/instances/' \ -H 'Authorization: Basic cGFtQWRtaW46cGFzc3dvcmQ=' \ -H 'Content-Type: application/json' \ --data-raw '{ "age":50, "salary":1200 }'
And we can see the result on log,
12:58:08,486 INFO [stdout] (default task-17) ================ 12:58:08,486 INFO [stdout] (default task-17) you are eligible for 20000 12:58:08,486 INFO [stdout] (default task-17) ================
Code sample can be downloaded on below github repository,
https://github.com/edwin/rhpam-loan-validation-sample-with-dmn