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

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


The following commit(s) were added to refs/heads/main by this push:
     new 84a0f9d168 [incubator-kie-issues#2021] DMN boxed filter behavior in 
relation to implicit conversions (#6393)
84a0f9d168 is described below

commit 84a0f9d168b56d008f641446294e9e3a4b1ab02b
Author: ChinchuAjith <[email protected]>
AuthorDate: Thu Jul 17 16:12:18 2025 +0530

    [incubator-kie-issues#2021] DMN boxed filter behavior in relation to 
implicit conversions (#6393)
---
 .../dmn/core/compiler/DMNTypeRegistryAbstract.java |  47 +++++----
 .../test/java/org/kie/dmn/core/DMNRuntimeTest.java | 115 ++++++++++++++++++++-
 .../core/compiler/DMNTypeRegistryAbstractTest.java |  77 ++++++++++++++
 .../resources/valid_models/DMNv1_6/BoxedFilter.dmn |  63 +++++++++++
 .../valid_models/DMNv1_6/BoxedIterator.dmn         |  62 +++++++++++
 5 files changed, 339 insertions(+), 25 deletions(-)

diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstract.java
 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstract.java
index a9a3faf314..9a4c233e7f 100644
--- 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstract.java
+++ 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstract.java
@@ -46,35 +46,42 @@ public abstract class DMNTypeRegistryAbstract implements 
DMNTypeRegistry, FEELTy
     protected ScopeImpl feelTypesScope = new ScopeImpl(); // no parent scope, 
intentional.
     protected Map<TupleIdentifier, ScopeImpl> feelTypesScopeChildLU = new 
HashMap<>();
 
-
     public DMNTypeRegistryAbstract(Map<TupleIdentifier, QName> aliases) {
         this.aliases = aliases;
         String feelNamespace = feelNS();
-        Map<String, DMNType> feelTypes = new HashMap<>(  );
+        Map<String, DMNType> feelTypes = new HashMap<>();
         types.put( feelNamespace, feelTypes );
+        DMNType unknownType = unknown();
+        this.feelTypesScope = getScopeImpl(feelNamespace, unknownType, 
feelTypes);
+    }
 
-        for (String name : BuiltInType.UNKNOWN.getNames()) {
-            feelTypes.put(name, unknown());
-            feelTypesScope.define(new TypeSymbol(name, BuiltInType.UNKNOWN));
-        }
-
+    static ScopeImpl getScopeImpl(String feelNamespace, DMNType unknownType, 
Map<String, DMNType> feelTypes) {
+        ScopeImpl feelTypesScope = new ScopeImpl();
         for( BuiltInType type : BuiltInType.values() ) {
+            boolean isUnknown = type == BuiltInType.UNKNOWN;
             for( String name : type.getNames() ) {
-                DMNType feelPrimitiveType;
-                if( type == BuiltInType.UNKNOWN ) {
-                    // already added, skip it
-                    continue;
-                } else if( type == BuiltInType.LIST ) {
-                    feelPrimitiveType = new SimpleTypeImpl(feelNamespace, 
name, null, false, null, null, unknown(), type);
-                } else if( type == BuiltInType.CONTEXT ) {
-                    feelPrimitiveType = new CompositeTypeImpl( feelNamespace, 
name, null, false, Collections.emptyMap(), null, type );
-                } else {
-                    feelPrimitiveType = new SimpleTypeImpl( feelNamespace, 
name, null, false, null, null, null, type );
-                }
-                feelTypes.put( name, feelPrimitiveType );
-                feelTypesScope.define(new TypeSymbol(name, type));
+                manageAllTypes(isUnknown, unknownType, name, type, 
feelNamespace, feelTypes, feelTypesScope );
             }
         }
+        return feelTypesScope;
+    }
+
+    static void manageAllTypes(boolean isUnknown, DMNType unknownType, String 
name, BuiltInType type, String feelNamespace, Map<String, DMNType> feelTypes, 
ScopeImpl feelTypesScope  ) {
+        DMNType feelPrimitiveType = isUnknown ? unknownType : 
getFeelPrimitiveType(name, type, feelNamespace, unknownType);
+        feelTypes.put( name, feelPrimitiveType );
+        feelTypesScope.define(new TypeSymbol(name, type));
+    }
+
+    static DMNType getFeelPrimitiveType(String name, BuiltInType type, String 
feelNamespace, DMNType unknownType) {
+        DMNType feelPrimitiveType;
+        if( type == BuiltInType.LIST ) {
+            feelPrimitiveType = new SimpleTypeImpl(feelNamespace, name, null, 
true, null, null, unknownType, type);
+        } else if( type == BuiltInType.CONTEXT ) {
+            feelPrimitiveType = new CompositeTypeImpl( feelNamespace, name, 
null, false, Collections.emptyMap(), null, type );
+        } else {
+            feelPrimitiveType = new SimpleTypeImpl( feelNamespace, name, null, 
false, null, null, null, type );
+        }
+        return feelPrimitiveType;
     }
 
     @Override
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
index c1d1f8a781..34ffe5cbe5 100644
--- a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
+++ b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
@@ -29,17 +29,18 @@ import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 import java.time.chrono.ChronoPeriod;
 import java.time.temporal.ChronoUnit;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.concurrent.TimeUnit;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
-
+import java.util.UUID;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -62,7 +63,6 @@ import 
org.kie.dmn.api.core.event.BeforeEvaluateContextEntryEvent;
 import org.kie.dmn.api.core.event.BeforeEvaluateDecisionEvent;
 import org.kie.dmn.api.core.event.BeforeEvaluateDecisionTableEvent;
 import org.kie.dmn.api.core.event.DMNRuntimeEventListener;
-import org.kie.dmn.api.feel.runtime.events.FEELEvent;
 import org.kie.dmn.core.api.DMNFactory;
 import org.kie.dmn.api.core.EvaluatorResult;
 import org.kie.dmn.core.ast.DMNContextEvaluator;
@@ -77,7 +77,6 @@ import org.kie.dmn.feel.lang.FEELProperty;
 import org.kie.dmn.feel.lang.types.BuiltInType;
 import org.kie.dmn.feel.lang.types.impl.ComparablePeriod;
 import org.kie.dmn.feel.marshaller.FEELStringMarshaller;
-import org.kie.dmn.feel.runtime.events.FEELEventBase;
 import org.kie.dmn.feel.util.BuiltInTypeUtils;
 import org.kie.dmn.feel.util.Msg;
 import org.kie.dmn.feel.util.NumberEvalHelper;
@@ -463,6 +462,112 @@ public class DMNRuntimeTest extends 
BaseInterpretedVsCompiledTest {
         assertThat((Map<String, Object>) 
dmnResult.getContext().get("Math")).containsEntry("Product", 
BigDecimal.valueOf(50));
     }
 
+    @ParameterizedTest
+    @MethodSource("params")
+    void boxedFilter(boolean useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("valid_models/DMNv1_6/BoxedFilter.dmn", 
this.getClass());
+        final DMNModel dmnModel = runtime.getModel(
+                "https://kie.org/dmn/_42BAF435-BAF7-460A-8C5D-351ABB98403C";,
+                "DMN_DFD7A647-6D67-4014-834B-E7559668C4B5"
+        );
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("fruit", "Mango");
+
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        assertThat(dmnResult).isNotNull();
+        
assertThat(dmnResult.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnResult.getMessages())).isFalse();
+        
assertThat(dmnResult.getContext().get("BoxedFilter")).isEqualTo(Collections.singletonList("Mango"));
+    }
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void boxedFilterInvalidCondition(boolean useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("valid_models/DMNv1_6/BoxedFilter.dmn", 
this.getClass());
+        final DMNModel dmnModel = runtime.getModel(
+                "https://kie.org/dmn/_42BAF435-BAF7-460A-8C5D-351ABB98403C";,
+                "DMN_DFD7A647-6D67-4014-834B-E7559668C4B5"
+        );
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("fruit", "Kiwi");
+
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        assertThat(dmnResult).isNotNull();
+        
assertThat(dmnResult.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnResult.getMessages())).isFalse();
+        
assertThat(dmnResult.getContext().get("BoxedFilter")).isEqualTo(Collections.emptyList());
+    }
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void boxedIterator(boolean useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("valid_models/DMNv1_6/BoxedIterator.dmn", 
this.getClass());
+        final DMNModel dmnModel = runtime.getModel(
+                "https://kie.org/dmn/_60C30701-AFB7-49C5-9B23-A0167DDC6795";,
+                "DMN_A15DEB5A-841F-4AC0-8C09-2403F5707373"
+        );
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("singleNumber", 5);
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        assertThat(dmnResult).isNotNull();
+        
assertThat(dmnResult.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnResult.getMessages())).isFalse();
+        
assertThat(dmnResult.getContext().get("BoxedIterator")).isEqualTo(Collections.singletonList(BigDecimal.valueOf(30)));
+    }
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void boxedIteratorInvalidConditionWithInvalidInput(boolean 
useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("valid_models/DMNv1_6/BoxedIterator.dmn", 
this.getClass());
+        final DMNModel dmnModel = runtime.getModel(
+                "https://kie.org/dmn/_60C30701-AFB7-49C5-9B23-A0167DDC6795";,
+                "DMN_A15DEB5A-841F-4AC0-8C09-2403F5707373"
+        );
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("singleNumber", "invalid");
+
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        assertThat(dmnResult).isNotNull();
+        assertThat(dmnResult.hasErrors()).isTrue();
+        assertThat(dmnResult.getContext().get("BoxedIterator")).isNull();
+        
assertThat(dmnResult.getMessages(Severity.ERROR).get(0).getMessageType()).isEqualTo(DMNMessageType.ERROR_EVAL_NODE);
+    }
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void boxedIteratorInvalidConditionWithNonNumeric(boolean 
useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("valid_models/DMNv1_6/BoxedIterator.dmn", 
this.getClass());
+        final DMNModel dmnModel = runtime.getModel(
+                "https://kie.org/dmn/_60C30701-AFB7-49C5-9B23-A0167DDC6795";,
+                "DMN_A15DEB5A-841F-4AC0-8C09-2403F5707373"
+        );
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("singleNumber", List.of(1, 2, 3));
+
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        assertThat(dmnResult).isNotNull();
+        assertThat(dmnResult.hasErrors()).isTrue();
+        assertThat(dmnResult.getContext().get("BoxedIterator")).isNull();
+        
assertThat(dmnResult.getMessages(Severity.ERROR).get(0).getMessageType()).isEqualTo(DMNMessageType.ERROR_EVAL_NODE);
+    }
+
     @ParameterizedTest
     @MethodSource("params")
     void functionDefAndInvocation(boolean useExecModelCompiler) {
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstractTest.java
 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstractTest.java
new file mode 100644
index 0000000000..531d598eca
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/DMNTypeRegistryAbstractTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+package org.kie.dmn.core.compiler;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.kie.dmn.api.core.DMNType;
+import org.kie.dmn.core.impl.SimpleTypeImpl;
+import org.kie.dmn.feel.lang.types.BuiltInType;
+import org.kie.dmn.feel.lang.types.ScopeImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Stream;
+
+public class DMNTypeRegistryAbstractTest {
+
+    public static final Logger LOG = 
LoggerFactory.getLogger(DMNTypeRegistryAbstractTest.class);
+
+    @Test
+    void getScopeImpl() {
+        String feelNamespace = "feel";
+        DMNType unknownType = new SimpleTypeImpl(feelNamespace, "unknown", 
null, false, null, null, null, BuiltInType.UNKNOWN);
+        Map<String, DMNType> feelTypes = new HashMap<>();
+        ScopeImpl feelTypesScope = 
DMNTypeRegistryAbstract.getScopeImpl(feelNamespace, unknownType, feelTypes);
+
+        assertThat(feelTypesScope).isNotNull();
+        assertThat(feelTypesScope.resolve("list").getId()).isEqualTo("list");
+        
assertThat(feelTypesScope.resolve("list").getType()).isEqualTo(BuiltInType.LIST);
+    }
+
+    @Test
+    void manageAllTypes() {
+        DMNType unknownType = new SimpleTypeImpl("feel", "unknown", null, 
false, null, null, null, BuiltInType.UNKNOWN);
+        ScopeImpl feelTypesScope = new ScopeImpl();
+        Map<String, DMNType> feelTypes = new HashMap<>();
+        DMNTypeRegistryAbstract.manageAllTypes(false, unknownType, "list", 
BuiltInType.LIST, "feel", feelTypes, feelTypesScope);
+        assertThat(feelTypes).containsKey("list");
+    }
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void testAllBuiltInTypes(BuiltInType builtInType, boolean isCollection, 
String name) {
+        DMNType result = DMNTypeRegistryAbstract.getFeelPrimitiveType(name, 
builtInType, "feel", null);
+
+        assertThat(result).isNotNull();
+        assertThat(result.isCollection()).isEqualTo(isCollection);
+        assertThat(result.getName()).isEqualTo(name);
+    }
+
+    static Stream<Arguments> params() {
+        return Arrays.stream(BuiltInType.values()).flatMap(type -> 
Arrays.stream(type.getNames()).map(name -> Arguments.of(type, type == 
BuiltInType.LIST, name)));
+    }
+}
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedFilter.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedFilter.dmn
new file mode 100644
index 0000000000..955ca6ed7b
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedFilter.dmn
@@ -0,0 +1,63 @@
+<?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.
+  -->
+
+<definitions xmlns="https://www.omg.org/spec/DMN/20240513/MODEL/";
+                xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                xmlns:kie="https://kie.org/dmn/extensions/1.0";
+                
expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";
+                
namespace="https://kie.org/dmn/_42BAF435-BAF7-460A-8C5D-351ABB98403C";
+                id="_3AC6172C-DFA4-4A63-A74A-2F44CD4874FC"
+                name="DMN_DFD7A647-6D67-4014-834B-E7559668C4B5">
+   <decision name="BoxedFilter" id="_8594A31A-A112-424E-B7DA-16A50FF9F126">
+      <variable name="BoxedFilter" id="_1FE53B3D-7EC4-48AF-9C09-CC1814FFFB1A" 
typeRef="list" />
+      <informationRequirement id="_7DF29C72-BDF0-4360-8B7F-9C7948E299D3">
+         <requiredInput href="#_6469745D-B5A7-439E-8893-584F5F69EDF1" />
+      </informationRequirement>
+      <literalExpression id="_03F7B046-C322-42B3-92C2-765AE21388E9" 
typeRef="list" label="BoxedFilter">
+         <text>[fruit][item = &quot;Mango&quot;]</text>
+      </literalExpression>
+   </decision>
+   <inputData name="fruit" id="_6469745D-B5A7-439E-8893-584F5F69EDF1">
+      <variable name="fruit" id="_35AC7E18-9978-4077-856E-456ADCEEDB5B" 
typeRef="string" />
+   </inputData>
+   <dmndi:DMNDI>
+      <dmndi:DMNDiagram id="_F2A74F0B-D336-40DC-84CC-CFBE768F10CF" 
name="Default DRD" useAlternativeInputDataShape="false">
+         <di:extension>
+            <kie:ComponentsWidthsExtension>
+               <kie:ComponentWidths 
dmnElementRef="_03F7B046-C322-42B3-92C2-765AE21388E9">
+                  <kie:width>190</kie:width>
+               </kie:ComponentWidths>
+            </kie:ComponentsWidthsExtension>
+         </di:extension>
+         <dmndi:DMNShape id="_714E9689-AF7C-4F9F-890D-E875702283A4" 
dmnElementRef="_8594A31A-A112-424E-B7DA-16A50FF9F126" isCollapsed="false" 
isListedInputData="false">
+            <dc:Bounds x="340" y="60" width="160" height="80" />
+         </dmndi:DMNShape>
+         <dmndi:DMNShape id="_510E6D99-11A8-475B-9D76-D9C7D3096EEA" 
dmnElementRef="_6469745D-B5A7-439E-8893-584F5F69EDF1" isCollapsed="false" 
isListedInputData="false">
+            <dc:Bounds x="340" y="280" width="160" height="80" />
+         </dmndi:DMNShape>
+         <dmndi:DMNEdge id="_885D05BB-D421-47C4-91AB-25AD654D5A5C" 
dmnElementRef="_7DF29C72-BDF0-4360-8B7F-9C7948E299D3" 
sourceElement="_510E6D99-11A8-475B-9D76-D9C7D3096EEA" 
targetElement="_714E9689-AF7C-4F9F-890D-E875702283A4">
+            <di:waypoint x="420" y="320" />
+            <di:waypoint x="420" y="140" />
+         </dmndi:DMNEdge>
+      </dmndi:DMNDiagram>
+   </dmndi:DMNDI>
+</definitions>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedIterator.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedIterator.dmn
new file mode 100644
index 0000000000..25ec91f186
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_6/BoxedIterator.dmn
@@ -0,0 +1,62 @@
+<?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.
+  -->
+<definitions xmlns="https://www.omg.org/spec/DMN/20240513/MODEL/";
+             xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+             xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+             xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+             xmlns:kie="https://kie.org/dmn/extensions/1.0";
+             expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";
+             
namespace="https://kie.org/dmn/_60C30701-AFB7-49C5-9B23-A0167DDC6795";
+             id="_84B669EF-2509-46B3-8DD0-BD8F85F2F391"
+             name="DMN_A15DEB5A-841F-4AC0-8C09-2403F5707373">
+    <decision name="BoxedIterator" id="_F1D4C42F-0773-40CB-A00F-364F0FE64711">
+        <variable name="BoxedIterator" 
id="_2BAE0C1E-8FD4-48D2-BC8E-9E608655AED0" typeRef="list" />
+        <informationRequirement id="_76DC365E-2C89-4AE4-9B76-83D723618967">
+            <requiredInput href="#_2EA9C640-68A1-40F9-8821-2672CE5246A8" />
+        </informationRequirement>
+        <literalExpression id="_7625D3F8-9265-4A4D-AD38-0D50F5E169B6" 
typeRef="list" label="BoxedIterator">
+            <text>for x in [singleNumber] return x * 6</text>
+        </literalExpression>
+    </decision>
+    <inputData name="singleNumber" id="_2EA9C640-68A1-40F9-8821-2672CE5246A8">
+        <variable name="singleNumber" 
id="_83BA9A62-F23F-41DA-8A87-6C9A31CC40E7" typeRef="number" />
+    </inputData>
+    <dmndi:DMNDI>
+        <dmndi:DMNDiagram id="_283671AD-E04D-4FFA-B2FF-3A9DAE25AF5B" 
name="Default DRD" useAlternativeInputDataShape="false">
+            <di:extension>
+                <kie:ComponentsWidthsExtension>
+                    <kie:ComponentWidths 
dmnElementRef="_7625D3F8-9265-4A4D-AD38-0D50F5E169B6">
+                        <kie:width>190</kie:width>
+                    </kie:ComponentWidths>
+                </kie:ComponentsWidthsExtension>
+            </di:extension>
+            <dmndi:DMNShape id="_AA7E494B-C709-47DD-8589-B447D1A744AE" 
dmnElementRef="_F1D4C42F-0773-40CB-A00F-364F0FE64711" isCollapsed="false" 
isListedInputData="false">
+                <dc:Bounds x="320" y="60" width="160" height="80" />
+            </dmndi:DMNShape>
+            <dmndi:DMNShape id="_DDE3929A-748C-4DBA-8EEA-B2592B9AF96D" 
dmnElementRef="_2EA9C640-68A1-40F9-8821-2672CE5246A8" isCollapsed="false" 
isListedInputData="false">
+                <dc:Bounds x="320" y="220" width="160" height="80" />
+            </dmndi:DMNShape>
+            <dmndi:DMNEdge id="_8DCD192A-C91D-4FBE-A471-A4E0FDE9953B" 
dmnElementRef="_76DC365E-2C89-4AE4-9B76-83D723618967" 
sourceElement="_DDE3929A-748C-4DBA-8EEA-B2592B9AF96D" 
targetElement="_AA7E494B-C709-47DD-8589-B447D1A744AE">
+                <di:waypoint x="400" y="260" />
+                <di:waypoint x="400" y="140" />
+            </dmndi:DMNEdge>
+        </dmndi:DMNDiagram>
+    </dmndi:DMNDI>
+</definitions>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to