You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by gi...@apache.org on 2026/10/12 13:17:37 UTC

(incubator-kie) branch main updated: fix(kie-dmn): typeRef on tUnaryTests silently broken for DMN 1.3–1.6 since 10.2.0 (#7184)

This is an automated email from the ASF dual-hosted git repository.

gitgabrio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie.git


The following commit(s) were added to refs/heads/main by this push:
     new db13861f88f fix(kie-dmn): typeRef on tUnaryTests silently broken for DMN 1.3–1.6 since 10.2.0 (#7184)
db13861f88f is described below

commit db13861f88f06b7a508c5f8b1996ed4c4a35ddff
Author: Yeser Amer <ye...@ibm.com>
AuthorDate: Mon Oct 12 15:17:32 2026 +0200

    fix(kie-dmn): typeRef on tUnaryTests silently broken for DMN 1.3–1.6 since 10.2.0 (#7184)
    
    * Fix typeRef on tUnaryTests broken for DMN 1.3-1.6 in 10.2.0
    
    The 10.2.0 refactor (kie-issues#853) collapsed v1_3–v1_6 TUnaryTests
    onto AbstractTUnaryTests, which carried throwing overrides of
    getTypeRef/setTypeRef guarding DMN 1.1/1.2. Those guards fired for
    every version, making typeRef on <inputValues> un-unmarshallable for
    DMN 1.3+.
    
    The DMN 1.3 XSD defines tUnaryTests extends tExpression, which carries
    an optional typeRef. The KIE DMN editor (10.1) writes typeRef on
    <inputValues> when the user sets a column type in the side panel,
    so models authored in the editor stopped loading on the 10.2 engine.
    
    Fix:
    - Remove the throwing overrides from AbstractTUnaryTests so all
      versions inherit the real typeRef field from AbstractTExpression.
    - Add the throwing overrides to v1_2.TUnaryTests (mirrors v1_1,
      which already had its own overrides).
    - Expand TUnaryTestsTest to cover all six concrete versions.
    - Add end-to-end regression test with the original reproducer DMN.
    
    * doc
    
    * doc
    
    * Fix marshalling of typeRef on tUnaryTests for DMN 1.3-1.6
    
    ExpressionConverter.writeAttributes in all versioned marshallers (v1_2
    through v1_6) had a guard that suppressed typeRef emission for any
    UnaryTests instance. This was correct for v1_2 (where tUnaryTests does
    not extend tExpression) but wrong for v1_3+ where the XSD defines
    tUnaryTests extends tExpression, making typeRef schema-valid.
    
    Remove the !(e instanceof UnaryTests) guard from the v1_3, v1_4, v1_5,
    and v1_6 ExpressionConverters so typeRef is emitted on marshal.
    The v1_1 and v1_2 converters are unchanged.
    
    Add a round-trip test (unmarshal → marshal → XSD validation → XML diff)
    for a DMN 1.6 model that carries typeRef on inputValues and outputValues.
---
 .../v1_3/xstream/ExpressionConverter.java          |   3 +-
 .../v1_4/xstream/ExpressionConverter.java          |   3 +-
 .../v1_5/xstream/ExpressionConverter.java          |   3 +-
 .../v1_6/xstream/ExpressionConverter.java          |   3 +-
 .../marshalling/v1_6/UnmarshalMarshalTest.java     |   5 +
 .../marshalling/v1_6/inputValuesTypeRef.dmn        |  64 +++++++
 .../core/compiler/DMNEvaluatorCompilerTest.java    |  13 ++
 .../kie/dmn/model/impl/AbstractTUnaryTests.java    |  12 --
 .../java/org/kie/dmn/model/v1_2/TUnaryTests.java   |  11 ++
 .../org/kie/dmn/model/api/TUnaryTestsTest.java     |  68 ++++---
 .../valid_models/DMNv1_6/inputValuesTypeRef.dmn    | 200 +++++++++++++++++++++
 11 files changed, 341 insertions(+), 44 deletions(-)

diff --git a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_3/xstream/ExpressionConverter.java b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_3/xstream/ExpressionConverter.java
index 31a8c769977..18d1c35833b 100644
--- a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_3/xstream/ExpressionConverter.java
+++ b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_3/xstream/ExpressionConverter.java
@@ -22,7 +22,6 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import org.kie.dmn.model.api.Expression;
-import org.kie.dmn.model.api.UnaryTests;
 
 public abstract class ExpressionConverter
         extends DMNElementConverter {
@@ -48,7 +47,7 @@ public abstract class ExpressionConverter
         super.writeAttributes(writer, parent);
         Expression e = (Expression) parent;
         
-        if (!(e instanceof UnaryTests) && e.getTypeRef() != null) {
+        if (e.getTypeRef() != null) {
             writer.addAttribute(TYPE_REF, MarshallingUtils.formatQName(e.getTypeRef(), e));
         }
     }
diff --git a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_4/xstream/ExpressionConverter.java b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_4/xstream/ExpressionConverter.java
index 6357f237864..f99d8a88fe0 100644
--- a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_4/xstream/ExpressionConverter.java
+++ b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_4/xstream/ExpressionConverter.java
@@ -22,7 +22,6 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import org.kie.dmn.model.api.Expression;
-import org.kie.dmn.model.api.UnaryTests;
 
 public abstract class ExpressionConverter
         extends DMNElementConverter {
@@ -48,7 +47,7 @@ public abstract class ExpressionConverter
         super.writeAttributes(writer, parent);
         Expression e = (Expression) parent;
         
-        if (!(e instanceof UnaryTests) && e.getTypeRef() != null) {
+        if (e.getTypeRef() != null) {
             writer.addAttribute(TYPE_REF, MarshallingUtils.formatQName(e.getTypeRef(), e));
         }
     }
diff --git a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_5/xstream/ExpressionConverter.java b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_5/xstream/ExpressionConverter.java
index 729c4cc0a5e..5d2593a6b84 100644
--- a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_5/xstream/ExpressionConverter.java
+++ b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_5/xstream/ExpressionConverter.java
@@ -22,7 +22,6 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import org.kie.dmn.model.api.Expression;
-import org.kie.dmn.model.api.UnaryTests;
 
 public abstract class ExpressionConverter
         extends DMNElementConverter {
@@ -48,7 +47,7 @@ public abstract class ExpressionConverter
         super.writeAttributes(writer, parent);
         Expression e = (Expression) parent;
         
-        if (!(e instanceof UnaryTests) && e.getTypeRef() != null) {
+        if (e.getTypeRef() != null) {
             writer.addAttribute(TYPE_REF, MarshallingUtils.formatQName(e.getTypeRef(), e));
         }
     }
diff --git a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_6/xstream/ExpressionConverter.java b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_6/xstream/ExpressionConverter.java
index eee8913e61d..00d66935322 100644
--- a/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_6/xstream/ExpressionConverter.java
+++ b/kie-dmn/kie-dmn-backend/src/main/java/org/kie/dmn/backend/marshalling/v1_6/xstream/ExpressionConverter.java
@@ -22,7 +22,6 @@ import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import org.kie.dmn.model.api.Expression;
-import org.kie.dmn.model.api.UnaryTests;
 
 public abstract class ExpressionConverter
         extends DMNElementConverter {
@@ -48,7 +47,7 @@ public abstract class ExpressionConverter
         super.writeAttributes(writer, parent);
         Expression e = (Expression) parent;
         
-        if (!(e instanceof UnaryTests) && e.getTypeRef() != null) {
+        if (e.getTypeRef() != null) {
             writer.addAttribute(TYPE_REF, MarshallingUtils.formatQName(e.getTypeRef(), e));
         }
     }
diff --git a/kie-dmn/kie-dmn-backend/src/test/java/org/kie/dmn/backend/marshalling/v1_6/UnmarshalMarshalTest.java b/kie-dmn/kie-dmn-backend/src/test/java/org/kie/dmn/backend/marshalling/v1_6/UnmarshalMarshalTest.java
index 33eb43f7113..5c2d5eb35ed 100644
--- a/kie-dmn/kie-dmn-backend/src/test/java/org/kie/dmn/backend/marshalling/v1_6/UnmarshalMarshalTest.java
+++ b/kie-dmn/kie-dmn-backend/src/test/java/org/kie/dmn/backend/marshalling/v1_6/UnmarshalMarshalTest.java
@@ -106,6 +106,11 @@ public class UnmarshalMarshalTest {
         testRoundTripV16("org/kie/dmn/backend/marshalling/v1_6/", "sampleFilter.dmn");
     }
 
+    @Test
+    void testv16_inputValuesTypeRef() throws Exception {
+        testRoundTripV16("org/kie/dmn/backend/marshalling/v1_6/", "inputValuesTypeRef.dmn");
+    }
+
     public void testRoundTripV16(String subdir, String xmlfile) throws Exception {
         testRoundTrip(subdir, xmlfile, MARSHALLER, DMN16_SCHEMA_SOURCE);
     }
diff --git a/kie-dmn/kie-dmn-backend/src/test/resources/org/kie/dmn/backend/marshalling/v1_6/inputValuesTypeRef.dmn b/kie-dmn/kie-dmn-backend/src/test/resources/org/kie/dmn/backend/marshalling/v1_6/inputValuesTypeRef.dmn
new file mode 100644
index 00000000000..334b08edbec
--- /dev/null
+++ b/kie-dmn/kie-dmn-backend/src/test/resources/org/kie/dmn/backend/marshalling/v1_6/inputValuesTypeRef.dmn
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+<!--
+  Regression fixture: tUnaryTests extends tExpression in DMN 1.3+ so typeRef
+  is schema-valid on inputValues/outputValues. This model exercises unmarshal
+  and re-marshal of that attribute (the round-trip must preserve it).
+-->
+<semantic:definitions
+        xmlns:semantic="https://www.omg.org/spec/DMN/20240513/MODEL/"
+        xmlns:feel="https://www.omg.org/spec/DMN/20240513/FEEL/"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        id="_inputValuesTypeRef"
+        name="inputValuesTypeRef"
+        namespace="https://kie.org/dmn/inputValuesTypeRef">
+    <semantic:decision id="_approval" name="Approval">
+        <semantic:variable name="Approval" typeRef="string"/>
+        <semantic:informationRequirement id="_ir1">
+            <semantic:requiredInput href="#_riskCategory"/>
+        </semantic:informationRequirement>
+        <semantic:decisionTable hitPolicy="UNIQUE" outputLabel="Approval">
+            <semantic:input id="_input1">
+                <semantic:inputExpression typeRef="string">
+                    <semantic:text>RiskCategory</semantic:text>
+                </semantic:inputExpression>
+                <semantic:inputValues id="_inputValues1" typeRef="string">
+                    <semantic:text>"High","Medium","Low"</semantic:text>
+                </semantic:inputValues>
+            </semantic:input>
+            <semantic:output id="_output1" typeRef="string">
+                <semantic:outputValues id="_outputValues1" typeRef="string">
+                    <semantic:text>"Approved","Review","Declined"</semantic:text>
+                </semantic:outputValues>
+            </semantic:output>
+            <semantic:rule id="_rule1">
+                <semantic:inputEntry id="_ie1"><semantic:text>"High"</semantic:text></semantic:inputEntry>
+                <semantic:outputEntry id="_oe1"><semantic:text>"Review"</semantic:text></semantic:outputEntry>
+            </semantic:rule>
+            <semantic:rule id="_rule2">
+                <semantic:inputEntry id="_ie2"><semantic:text>"Medium","Low"</semantic:text></semantic:inputEntry>
+                <semantic:outputEntry id="_oe2"><semantic:text>"Approved"</semantic:text></semantic:outputEntry>
+            </semantic:rule>
+        </semantic:decisionTable>
+    </semantic:decision>
+    <semantic:inputData id="_riskCategory" name="RiskCategory">
+        <semantic:variable name="RiskCategory" typeRef="string"/>
+    </semantic:inputData>
+</semantic:definitions>
diff --git a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNEvaluatorCompilerTest.java b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNEvaluatorCompilerTest.java
index 0c20b3e3492..de2c7a12846 100644
--- a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNEvaluatorCompilerTest.java
+++ b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNEvaluatorCompilerTest.java
@@ -192,6 +192,19 @@ class DMNEvaluatorCompilerTest {
         assertThat(elseEvaluatorIdentifier).isEqualTo(elseIdentifier);
     }
 
+    /**
+     * DMN 1.6 models with typeRef on inputValues must load without UnsupportedOperationException from AbstractTUnaryTests.setTypeRef.
+     */
+    @Test
+    void inputValuesWithTypeRefLoadsOnDMNv1_6() {
+        Resource resource = ResourceFactory.newClassPathResource("valid_models/DMNv1_6/inputValuesTypeRef.dmn");
+        DMNRuntime dmnRuntime = DMNRuntimeBuilder.fromDefaults().buildConfiguration()
+                .fromResources(Collections.singletonList(resource)).getOrElseThrow(RuntimeException::new);
+        assertThat(dmnRuntime).isNotNull();
+        assertThat(dmnRuntime.getModels()).hasSize(1);
+        assertThat(dmnRuntime.getModels().get(0).hasErrors()).isFalse();
+    }
+
     @Test
     void testCompileConditional() {
         String exprName = "testExpression";
diff --git a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/impl/AbstractTUnaryTests.java b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/impl/AbstractTUnaryTests.java
index 01293cd1e02..66590c4554c 100644
--- a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/impl/AbstractTUnaryTests.java
+++ b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/impl/AbstractTUnaryTests.java
@@ -18,8 +18,6 @@
  */
 package org.kie.dmn.model.impl;
 
-import javax.xml.namespace.QName;
-
 import org.kie.dmn.model.api.UnaryTests;
 
 public abstract class AbstractTUnaryTests extends AbstractTExpression implements UnaryTests {
@@ -46,14 +44,4 @@ public abstract class AbstractTUnaryTests extends AbstractTExpression implements
     public void setExpressionLanguage(String value) {
         this.expressionLanguage = value;
     }
-
-    @Override
-    public QName getTypeRef() {
-        throw new UnsupportedOperationException("Not on DMN v1.2");
-    }
-
-    @Override
-    public void setTypeRef(QName value) {
-        throw new UnsupportedOperationException("Not on DMN v1.2");
-    }
 }
diff --git a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TUnaryTests.java b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TUnaryTests.java
index 02adf79393e..549b230b680 100644
--- a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TUnaryTests.java
+++ b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TUnaryTests.java
@@ -18,8 +18,19 @@
  */
 package org.kie.dmn.model.v1_2;
 
+import javax.xml.namespace.QName;
+
 import org.kie.dmn.model.impl.AbstractTUnaryTests;
 
 public class TUnaryTests extends AbstractTUnaryTests implements URIFEELed {
 
+    @Override
+    public QName getTypeRef() {
+        throw new UnsupportedOperationException("Not on DMN v1.2");
+    }
+
+    @Override
+    public void setTypeRef(QName value) {
+        throw new UnsupportedOperationException("Not on DMN v1.2");
+    }
 }
diff --git a/kie-dmn/kie-dmn-model/src/test/java/org/kie/dmn/model/api/TUnaryTestsTest.java b/kie-dmn/kie-dmn-model/src/test/java/org/kie/dmn/model/api/TUnaryTestsTest.java
index 95ab121cb55..6720bf5e74d 100644
--- a/kie-dmn/kie-dmn-model/src/test/java/org/kie/dmn/model/api/TUnaryTestsTest.java
+++ b/kie-dmn/kie-dmn-model/src/test/java/org/kie/dmn/model/api/TUnaryTestsTest.java
@@ -18,44 +18,64 @@
  */
 package org.kie.dmn.model.api;
 
+import javax.xml.namespace.QName;
+
 import org.junit.jupiter.api.Test;
-import org.kie.dmn.model.v1_2.TDMNElement;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 
 class TUnaryTestsTest {
 
+    /**
+     * DMN v1.1 and v1.2: tUnaryTests does not extend tExpression, so typeRef must throw.
+     */
+    @Test
+    void typeRefThrowsOnDMNv1_1() {
+        UnaryTests ut = new org.kie.dmn.model.v1_1.TUnaryTests();
+        assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(ut::getTypeRef);
+        assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() -> ut.setTypeRef(null));
+    }
+
     @Test
-    void smokeTest() {
-        UnaryTests ut = new STUnaryTests();
-        assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() -> ut.getTypeRef());
+    void typeRefThrowsOnDMNv1_2() {
+        UnaryTests ut = new org.kie.dmn.model.v1_2.TUnaryTests();
+        assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(ut::getTypeRef);
         assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() -> ut.setTypeRef(null));
     }
 
     /**
-     * Up to DMNv1.2.
+     * DMN v1.3+: tUnaryTests extends tExpression, so typeRef must be readable/writable.
      */
-    private static class STUnaryTests extends TDMNElement implements UnaryTests {
-
-        @Override
-        public String getText() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void setText(String value) {
-            throw new UnsupportedOperationException();
-        }
+    @Test
+    void typeRefWorksOnDMNv1_3() {
+        UnaryTests ut = new org.kie.dmn.model.v1_3.TUnaryTests();
+        QName qname = new QName("string");
+        ut.setTypeRef(qname);
+        assertThat(ut.getTypeRef()).isEqualTo(qname);
+    }
 
-        @Override
-        public String getExpressionLanguage() {
-            throw new UnsupportedOperationException();
-        }
+    @Test
+    void typeRefWorksOnDMNv1_4() {
+        UnaryTests ut = new org.kie.dmn.model.v1_4.TUnaryTests();
+        QName qname = new QName("string");
+        ut.setTypeRef(qname);
+        assertThat(ut.getTypeRef()).isEqualTo(qname);
+    }
 
-        @Override
-        public void setExpressionLanguage(String value) {
-            throw new UnsupportedOperationException();
-        }
+    @Test
+    void typeRefWorksOnDMNv1_5() {
+        UnaryTests ut = new org.kie.dmn.model.v1_5.TUnaryTests();
+        QName qname = new QName("string");
+        ut.setTypeRef(qname);
+        assertThat(ut.getTypeRef()).isEqualTo(qname);
+    }
 
+    @Test
+    void typeRefWorksOnDMNv1_6() {
+        UnaryTests ut = new org.kie.dmn.model.v1_6.TUnaryTests();
+        QName qname = new QName("string");
+        ut.setTypeRef(qname);
+        assertThat(ut.getTypeRef()).isEqualTo(qname);
     }
 }
diff --git a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/inputValuesTypeRef.dmn b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/inputValuesTypeRef.dmn
new file mode 100644
index 00000000000..b70a7aaecd7
--- /dev/null
+++ b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/inputValuesTypeRef.dmn
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+
+<dmn:definitions xmlns:dmn="https://www.omg.org/spec/DMN/20240513/MODEL/" xmlns="jurisdiction-rules" xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/" xmlns:kie="https://kie.org/dmn/extensions/1.0" xmlns:feel="https://www.omg.org/spec/DMN/20240513/FEEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" id="_4d416cc1-1d3d-429d-9360-98e8340e1551" name="jurisdiction-rules" expressionLanguage="https://www.omg.org/spec/DMN/202405 [...]
+  <dmn:description>jurisdiction-rules</dmn:description>
+  <dmn:extensionElements>
+    <x-gw-dmn:visibility xmlns:x-gw-dmn="https://www.guidewire.com/rules/1.0" />
+  </dmn:extensionElements>
+  <dmn:itemDefinition id="_6E43707E-EAA9-458E-A5CA-E7FB781084C0" name="Policy Info" isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+    <dmn:itemComponent id="_50922129-2C62-4834-960D-851095F734D3" name="Total Loss" isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+      <dmn:typeRef>boolean</dmn:typeRef>
+    </dmn:itemComponent>
+    <dmn:itemComponent id="_D9E52622-3651-4213-B251-6C5F419DE6B0" name="Jurisdiction" isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+      <dmn:typeRef>string</dmn:typeRef>
+    </dmn:itemComponent>
+  </dmn:itemDefinition>
+  <dmn:itemDefinition id="_F788B8AD-68DC-48BA-AA6A-A465247C3951" name="UW Questions" isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+    <dmn:itemComponent id="_5726F584-7D73-4502-8916-3ECFA2DC6C6B" name="Questions" isCollection="true" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+      <dmn:typeRef>string</dmn:typeRef>
+    </dmn:itemComponent>
+    <dmn:itemComponent id="_E3EB33F3-4836-4617-BADB-A56CE26AE11F" name="Processing Date" isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+      <dmn:typeRef>date and time</dmn:typeRef>
+    </dmn:itemComponent>
+  </dmn:itemDefinition>
+  <dmn:decision name="Questions" id="_AEDE88F0-9D5A-4569-AE7B-70FC44FCABBA">
+    <dmn:variable name="Questions" id="_8B0C547F-DBE0-4261-B100-1D54B10DBC28" typeRef="UW Questions" />
+    <dmn:informationRequirement id="_AD17F32A-68B5-4EE2-9DA2-DC3746B0A9DB">
+      <dmn:requiredInput href="#_B292D9B8-370B-49BA-B8F3-278A61A7BC22" />
+    </dmn:informationRequirement>
+    <dmn:context id="_AE97790B-10DB-4A92-9798-F0CF5D643FCB" typeRef="UW Questions" label="Questions">
+      <dmn:contextEntry id="_DA586786-81A9-456A-8024-2F0FDA967933">
+        <dmn:variable id="_EC06E9CD-5A7B-4980-AC7D-0667AF98ED77" name="Questions" typeRef="Any" />
+        <dmn:decisionTable id="_2298BCDA-9D67-4301-A817-1BDB9C5AD200" typeRef="Any" hitPolicy="COLLECT" label="Questions">
+          <dmn:input id="_0459985D-B03B-40E6-8C69-011E6454AABE">
+            <dmn:inputExpression id="_A1785E87-6ECC-4C75-A098-8BE83361926E" typeRef="boolean">
+              <dmn:text>Policy Info.Total Loss</dmn:text>
+            </dmn:inputExpression>
+          </dmn:input>
+          <dmn:input id="_48DBFD12-8AEA-4754-9B9D-2D0781C9185B">
+            <dmn:inputExpression id="_95012A8C-D3A1-4E37-B8AD-A4691E7579D7" typeRef="string" expressionLanguage="https://www.omg.org/spec/DMN/20240513/B-FEEL/">
+              <dmn:text>Policy Info.Jurisdiction</dmn:text>
+            </dmn:inputExpression>
+            <dmn:inputValues id="_152EE573-A0AC-4D65-9E44-27D495BFBF99" typeRef="string">
+              <dmn:text></dmn:text>
+            </dmn:inputValues>
+          </dmn:input>
+          <dmn:output id="_D6FA5003-AEBF-49C9-BF5E-81C6180AE945" />
+          <dmn:annotation name="Annotations" />
+          <dmn:rule id="_00DE08BD-1D3E-4FD6-852C-75EDBB90E574">
+            <dmn:inputEntry id="_C0BDB2D1-DB39-4D93-82A9-817E6460F919">
+              <dmn:text>true</dmn:text>
+            </dmn:inputEntry>
+            <dmn:inputEntry id="_8E2EDB74-9D2B-4612-8175-D7967D5C1EA7">
+              <dmn:text>&quot;CA&quot;</dmn:text>
+            </dmn:inputEntry>
+            <dmn:outputEntry id="_5961AD26-5A89-4365-99DB-A829B81BF40A">
+              <dmn:text>&quot;Please complete the loss evaulation questionnarie for total loss claims.&quot;</dmn:text>
+            </dmn:outputEntry>
+            <dmn:annotationEntry>
+              <dmn:text>// Your annotations here</dmn:text>
+            </dmn:annotationEntry>
+          </dmn:rule>
+          <dmn:rule id="_7BA156AE-4264-4AEC-9C89-A97264697F45">
+            <dmn:inputEntry id="_B45C051C-F7B6-4CC0-888B-5DB7395882AC">
+              <dmn:text>true</dmn:text>
+            </dmn:inputEntry>
+            <dmn:inputEntry id="_A789ABF8-DD19-4805-996C-68CF8A0466AD">
+              <dmn:text>&quot;&quot;</dmn:text>
+            </dmn:inputEntry>
+            <dmn:outputEntry id="_AF35DABD-ECB3-4E21-8A2A-61146CDC3A77">
+              <dmn:text>&quot;IS there special equipment installed or included in the samage to the commercial vehicle?&quot;</dmn:text>
+            </dmn:outputEntry>
+            <dmn:annotationEntry>
+              <dmn:text></dmn:text>
+            </dmn:annotationEntry>
+          </dmn:rule>
+          <dmn:rule id="_DABCDE4A-EF36-4013-8AC8-744249516792">
+            <dmn:inputEntry id="_B9322D33-99CE-4600-8AE7-0B6DB047E5F2">
+              <dmn:text>true</dmn:text>
+            </dmn:inputEntry>
+            <dmn:inputEntry id="_4125B926-E4E2-4FD8-906D-C3FDA57924CB">
+              <dmn:text>&quot;&quot;</dmn:text>
+            </dmn:inputEntry>
+            <dmn:outputEntry id="_6E063DA6-4D02-42BD-9A6E-3E07C6E59D87">
+              <dmn:text>&quot;Please compelte the loss evaulation questionnarie for total claims&quot;</dmn:text>
+            </dmn:outputEntry>
+            <dmn:annotationEntry>
+              <dmn:text></dmn:text>
+            </dmn:annotationEntry>
+          </dmn:rule>
+          <dmn:rule id="_C61379DD-15D6-475C-A4A0-3B2535AA4233">
+            <dmn:inputEntry id="_4BCCF7E5-D3E1-45B5-8352-6D39B57F3C9A">
+              <dmn:text>true</dmn:text>
+            </dmn:inputEntry>
+            <dmn:inputEntry id="_8A636C9F-00AE-4A0D-9ABF-ADD880061E77">
+              <dmn:text>&quot;&quot;</dmn:text>
+            </dmn:inputEntry>
+            <dmn:outputEntry id="_ED029832-316E-4E4C-8F6B-5B9921E7D4AF">
+              <dmn:text>&quot;Was this a commercial verhicle licensed in Colorado?&quot;</dmn:text>
+            </dmn:outputEntry>
+            <dmn:annotationEntry>
+              <dmn:text></dmn:text>
+            </dmn:annotationEntry>
+          </dmn:rule>
+          <dmn:rule id="_C5A0B660-D6C9-4B75-9626-D090299B3F55">
+            <dmn:inputEntry id="_DF0AAEDA-2C45-4FEB-97F8-C539B0B4B92D">
+              <dmn:text>false</dmn:text>
+            </dmn:inputEntry>
+            <dmn:inputEntry id="_F9FA44DC-73B1-457C-B12A-892F0280A399">
+              <dmn:text>-</dmn:text>
+            </dmn:inputEntry>
+            <dmn:outputEntry id="_69CA537A-66B3-45CC-8985-2044221B6E0A">
+              <dmn:text></dmn:text>
+            </dmn:outputEntry>
+            <dmn:annotationEntry>
+              <dmn:text></dmn:text>
+            </dmn:annotationEntry>
+          </dmn:rule>
+        </dmn:decisionTable>
+      </dmn:contextEntry>
+      <dmn:contextEntry id="_1976A876-E8E4-4AA6-985C-168D7FA21FAA">
+        <dmn:variable id="_E35BB9D2-B9F3-4CA1-AC54-D6B2454075F4" name="Processing Date" typeRef="date and time" />
+        <dmn:literalExpression id="_8957D16B-96C4-4A17-BC20-17DC679A154F" typeRef="date and time" label="Processing Date" expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/">
+          <dmn:text>now()</dmn:text>
+        </dmn:literalExpression>
+      </dmn:contextEntry>
+      <dmn:contextEntry id="_25CE5588-3821-46A1-BC29-E2B5A15F16BF">
+        <dmn:literalExpression id="_0E73C8A3-76CF-4BD5-9F1C-04BBEE1E9C47" typeRef="UW Questions" label="Questions">
+          <dmn:text>{ &quot;Questions&quot;: Questions, &quot;Processing Date&quot; : Processing Date }</dmn:text>
+        </dmn:literalExpression>
+      </dmn:contextEntry>
+    </dmn:context>
+  </dmn:decision>
+  <dmn:inputData name="Policy Info" id="_B292D9B8-370B-49BA-B8F3-278A61A7BC22">
+    <dmn:variable name="Policy Info" id="_0AD96AA2-AEEB-47B6-92FB-CFDA91BC3249" typeRef="Policy Info" />
+  </dmn:inputData>
+  <dmn:decisionService name="Jurisdictionspecificqns" id="_D1AEAA87-21DF-4E13-BFAA-B0CC360B9DB6">
+    <dmn:variable name="Jurisdictionspecificqns" id="_2814B9CD-3F89-4DE0-842C-D9BE624A6ED7" typeRef="UW Questions" />
+    <dmn:outputDecision href="#_AEDE88F0-9D5A-4569-AE7B-70FC44FCABBA" />
+    <dmn:inputData href="#_B292D9B8-370B-49BA-B8F3-278A61A7BC22" />
+  </dmn:decisionService>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_3B9B10C0-B37C-4846-8E1E-AEAE8D8F42C3" name="Default DRD" useAlternativeInputDataShape="false">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths dmnElementRef="_AE97790B-10DB-4A92-9798-F0CF5D643FCB">
+            <kie:width>120</kie:width>
+          </kie:ComponentWidths>
+          <kie:ComponentWidths dmnElementRef="_0E73C8A3-76CF-4BD5-9F1C-04BBEE1E9C47">
+            <kie:width>1262</kie:width>
+          </kie:ComponentWidths>
+          <kie:ComponentWidths dmnElementRef="_2298BCDA-9D67-4301-A817-1BDB9C5AD200">
+            <kie:width>60</kie:width>
+            <kie:width>181</kie:width>
+            <kie:width>117</kie:width>
+            <kie:width>554</kie:width>
+            <kie:width>370</kie:width>
+          </kie:ComponentWidths>
+          <kie:ComponentWidths dmnElementRef="_8957D16B-96C4-4A17-BC20-17DC679A154F">
+            <kie:width>190</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="_B1829D3D-4415-4A38-8D37-386AD7B36723" dmnElementRef="_D1AEAA87-21DF-4E13-BFAA-B0CC360B9DB6" isCollapsed="false" isListedInputData="false">
+        <dc:Bounds x="560" y="100" width="320" height="320" />
+        <dmndi:DMNDecisionServiceDividerLine id="_E3A97D25-84EA-456D-AC54-F5B1F575C23E">
+          <di:waypoint x="560" y="260" />
+          <di:waypoint x="880" y="260" />
+        </dmndi:DMNDecisionServiceDividerLine>
+      </dmndi:DMNShape>
+      <dmndi:DMNShape id="_8FE40767-DAAC-4FB8-81B5-82BDBEBE64AF" dmnElementRef="_AEDE88F0-9D5A-4569-AE7B-70FC44FCABBA" isCollapsed="false" isListedInputData="false">
+        <dc:Bounds x="640" y="160" width="160" height="80" />
+      </dmndi:DMNShape>
+      <dmndi:DMNShape id="_65CF5115-6EF2-446D-9B28-C0315F803F42" dmnElementRef="_B292D9B8-370B-49BA-B8F3-278A61A7BC22" isCollapsed="false" isListedInputData="false">
+        <dc:Bounds x="320" y="180" width="160" height="80" />
+      </dmndi:DMNShape>
+      <dmndi:DMNEdge id="_BE264634-A2C4-4BFB-8F04-99305D9164E6" dmnElementRef="_AD17F32A-68B5-4EE2-9DA2-DC3746B0A9DB" sourceElement="_65CF5115-6EF2-446D-9B28-C0315F803F42" targetElement="_8FE40767-DAAC-4FB8-81B5-82BDBEBE64AF">
+        <di:waypoint x="400" y="220" />
+        <di:waypoint x="640" y="200" />
+      </dmndi:DMNEdge>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</dmn:definitions>
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org