Given an xml file containing a some DMN decisions, I need to retrieve all of to the variable names process them. If i can't do this then I can't know what the name of the variables given by the user are, just the value. I've been using the camunda java library and it doens't seem very straight forward
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" id="definitions" name="definitions" namespace="http://camunda.org/schema/1.0/dmn">
<decision id="decision" name="Dish">
<decisionTable id="decisionTable">
<input id="input1" label="Season">
<inputExpression id="inputExpression1" typeRef="string">
<text>season</text>
</inputExpression>
</input>
<input id="InputClause_0hmkumv" label="How many guests">
<inputExpression id="LiteralExpression_0m7s53h" typeRef="integer">
<text>guestCount</text>
</inputExpression>
</input>
<output id="output1" label="Dish" name="desiredDish" typeRef="string" />
<rule id="row-950612891-1">
<inputEntry id="UnaryTests_0c1o054">
<text><![CDATA["Fall"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_1lod0sz">
<text><![CDATA[<= 8]]></text>
</inputEntry>
<outputEntry id="LiteralExpression_065u3ym">
<text><![CDATA["Spareribs"]]></text>
</outputEntry>
</rule>
<rule id="row-950612891-2">
<inputEntry id="UnaryTests_0u1z4ho">
<text><![CDATA["Winter"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_1euytqf">
<text><![CDATA[<= 8]]></text>
</inputEntry>
<outputEntry id="LiteralExpression_198frve">
<text><![CDATA["Roastbeef"]]></text>
</outputEntry>
</rule>
<rule id="row-950612891-3">
<inputEntry id="UnaryTests_1vn9t5c">
<text><![CDATA["Spring"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_1bbbmvu">
<text><![CDATA[<= 4]]></text>
</inputEntry>
<outputEntry id="LiteralExpression_1bewepn">
<text><![CDATA["Dry Aged Gourmet Steak"]]></text>
</outputEntry>
</rule>
<rule id="row-950612891-4">
<description>Save money</description>
<inputEntry id="UnaryTests_0ogofox">
<text><![CDATA["Spring"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_0c60gjz">
<text>[5..8]</text>
</inputEntry>
<outputEntry id="LiteralExpression_1lahvj7">
<text><![CDATA["Steak"]]></text>
</outputEntry>
</rule>
<rule id="row-950612891-5">
<description>Less effort</description>
<inputEntry id="UnaryTests_1774yme">
<text><![CDATA["Fall", "Winter", "Spring"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_01rn17i">
<text><![CDATA[> 8]]></text>
</inputEntry>
<outputEntry id="LiteralExpression_0jpd7hr">
<text><![CDATA["Stew"]]></text>
</outputEntry>
</rule>
<rule id="row-950612891-6">
<description>Hey, why not!?</description>
<inputEntry id="UnaryTests_0ifdx8k">
<text><![CDATA["Summer"]]></text>
</inputEntry>
<inputEntry id="UnaryTests_0c8ym7l">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_08d4mb6">
<text><![CDATA["Light Salad and a nice Steak"]]></text>
</outputEntry>
</rule>
</decisionTable>
</decision>
</definitions>```
above is the following dmn file I took from the internet.
It contains 2 variables; Season and guestCount
I already knew this so in my java file I simply did
VariableMap variables = Variables
.putValue("season", season)
.putValue("guestCount", guestCount);```
But what if I didn't do this? Every example i come accross on camunda's github already has the names of the variables hard-coded into the example. No example I saw fetched the number and the name of these variables. Do you know if there is any built-in function for the camunda-engine in java?
Went online trying to see some examples of people fetching these automatically from a java file. Asked AI to help me only to be given
List<DecisionInputImpl> decisionInputs = decisionDefinition.getInputs();
Where the path of their "DecisionInputImpl" was non-existent
(example of non existent path : import org.camunda.bpm.engine.DecisionService;
)
scoured the forums and saw someone advise someone else to do a rest something but I didn't really understood
I have found an answer to my question. This works with camunda name schemes. I don't know if it is a definitive answer but it works well enough for me. Here is the signature of the java fuction
the 'inputStream' in question is the Stream made from the dmn file in my local machine. Once I had all the names of the variables, I only had to associate them with the values passed by the user and then it went smoothly enough.