1use bpmnkit::dmn::evaluate_decision_graph;
4use bpmnkit::prelude::*;
5
6const DMN: &str = r#"<?xml version="1.0" encoding="UTF-8"?>
7<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" id="d" name="d" namespace="http://example.com">
8 <decision id="tier" name="tier">
9 <decisionTable id="t" hitPolicy="FIRST">
10 <input id="i"><inputExpression id="ie" typeRef="number"><text>amount</text></inputExpression></input>
11 <output id="o" typeRef="string"/>
12 <rule id="r1"><inputEntry id="ie1"><text>> 1000</text></inputEntry><outputEntry id="oe1"><text>"manager"</text></outputEntry></rule>
13 <rule id="r2"><inputEntry id="ie1"><text></text></inputEntry><outputEntry id="oe1"><text>"auto"</text></outputEntry></rule>
14 </decisionTable>
15 </decision>
16</definitions>"#;
17
18fn main() -> Result<(), Box<dyn std::error::Error>> {
19 let Document::Dmn(definitions) = load(DMN)? else {
20 unreachable!("the input is DMN");
21 };
22 let mut vars = Context::new();
23 vars.insert("amount", 1500);
24 let out = evaluate_decision_graph(&definitions, "tier", &vars)?;
25 println!("tier = {}", out.result);
26 Ok(())
27}