DRD Evaluation - Question concerning gathering intermediate results

Introduction

I’ve deployed a DRD in Operaton and can’t figure out if and how I can collect the evaluation (interim) results via the API.

I’ll try to explain with the Postman call used for evaluation.

POST https://operatondev.open-regels.nl/engine-rest/decision-definition/key/HeusdenpasAanvraagEindresultaat/evaluate 

With body

{
    "variables": {
        "dagVanAanvraag": { "value": "2025-07-16", "type": "String" },
        "geboortedatumAanvrager": { "value": "1987-12-20", "type": "String" },
        "geboortedatumPartner": { "value": null, "type": "String" },
        "aanvragerHeeftKinderen": { "value": true, "type": "Boolean" },
        "aanvragerAlleenstaand": { "value": true, "type": "Boolean" },
        "aanvragerInwonerHeusden": { "value": true, "type": "Boolean" },
        "aanvragerDitKalenderjaarAlAangevraagd": { "value": false, "type": "Boolean" },
        "aanvragerAanmerkingStudieFinanciering": { "value": false, "type": "Boolean" },
        "aanvragerUitkeringBaanbrekers": { "value": false, "type": "Boolean" },
        "aanvragerVoedselbankpasDenBosch": { "value": false, "type": "Boolean" },
        "aanvragerKwijtscheldingGemeentelijkeBelastingen": { "value": false, "type": "Boolean" },
        "aanvragerSchuldhulptrajectKredietbankNederland": { "value": false, "type": "Boolean" },
        "aanvragerHeeftKind4Tm17": { "value": true, "type": "Boolean" },
        "maandelijksBrutoInkomenAanvrager": { "value": 1250, "type": "Integer" }
    }
}

Will provide the response

[
    {
        "aanmerkingKindPakket": {
            "type": "Boolean",
            "value": true,
            "valueInfo": {}
        },
        "aanmerkingHeusdenPas": {
            "type": "Boolean",
            "value": true,
            "valueInfo": {}
        }
    }
]

So far, so good. This is a basic eligible case - low income single parent with children qualified for both Heusdenpas and Kindpakket.

But I don’t just want the final result; I also want all the intermediate results. And those are readily available when I look in the Operaton cockpit. Below are two examples.

Deployed DRD in Operaton

The Deployment of the DRD illustrated in Cockpit

The decision table at the very top provides the final result of the aforementioned body input. That is Eindresutaat Heusdenpas aanvraag. The output below is what the response is shared previously above.

Now I go back to the deployed DRD and select the Leeftijden table.

In the Leeftijden page I select the applicable Decision Instance that matches the Postman call.

From that Decision Instance, I can easily get the in- and output values of this specific evaluation.

For your convenience, I copy/pasted the output here

[
    {
        "leeftijd aanvrager": {
            "type": "Integer",
            "value": 37
        },
        "leeftijd partner": {
            "type": "Null",
            "value": null
        },
        "AOW ingangsdatum partner": {
            "type": "Null",
            "value": null
        },
        "AOW ingangsdatum aanvrager": {
            "type": "String",
            "value": "2054-12-20"
        }
    }
]

Another example is Bijstandsnormbedrag. When I follow the same procedure, I end up with the 1369.06 allowance.

Question

What I can’t figure out is whether this information, which involves a single evaluation for each intermediate decision table with its corresponding input and output, can also be queried via the API.

For testing purposes, I have a NodeJS script that simply loops through all the tables and collects the results. That’s all well and good, but I’m not satisfied, and I can’t and don’t want to use it with the Gravity Forms I’ve already got up and running.

Gravity Forms implementation

Here’s a screenshot of the live demo (WIP) I’m working on for this DMN. The Heusden Pas assignment is evident from the true value populated in the designated field.

In the third step of this form, I want to show the summary of all intermediate results in the set of decision tables. So, the output of the Leeftijden and Bijstandsnormbedrag examples above, supplemented with the rest.

Found the answer.
I need to:

  1. Deploy a simple process alongside the DMN
  2. Start process instances instead of calling decisions directly:
POST /process-definition/key/HeusdenpasEvaluationProcess/start
  1. Query historic data with process instance IDs for complete audit trails

Query Intermediate Results with Process Context

Once we have a process instance ID, we can get all related decision instances:

# Get all decisions executed in a process instance
GET /history/decision-instance?processInstanceId={processInstanceId}

# Get specific decision details
GET /history/decision-instance/{decisionInstanceId}/inputs
GET /history/decision-instance/{decisionInstanceId}/outputs

I will now try this approach and adopt it in the Operaton DMN Evaluator plugin for Gravity Forms.

It’s done.

Built it. Code is not ready for merge en release as v1.0.0-beta.9. Watch this space: Releases · Showcases / Operaton DMN Evaluator · GitLab

Demo to try yourself https://owc-gemeente.test.open-regels.nl/

  • :white_check_mark: Direct Decision Evaluation for simple cases
  • :white_check_mark: Process Execution with Decision Flow for complex workflows
  • :white_check_mark: Professional Excel-style Decision Summary on the final page

A simple BPMN process

Instead of calling the decision directly, a simple BPMN process will:

  • Takes input variables
  • Has a Business Rule Task that calls the decision
  • This will automatically provide process context in Cockpit

Decision Summary

Top

Scrolling down