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-drools.git


The following commit(s) were added to refs/heads/main by this push:
     new a811f3e435 [incubator-kie-issues#2083] Fix correct overrides of 
expressionLanguage (#6443)
a811f3e435 is described below

commit a811f3e435aa5ac40d342cdc19eb227533de6b7d
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Thu Sep 4 15:27:37 2025 +0200

    [incubator-kie-issues#2083] Fix correct overrides of expressionLanguage 
(#6443)
    
    * [incubator-kie-issues#2083] Fix correct overrides of expressionLanguage
    
    * [incubator-kie-issues#2083] Split test
    
    ---------
    
    Co-authored-by: Gabriele-Cardosi <[email protected]>
---
 .../dmn/core/compiler/DMNEvaluatorCompiler.java    |   5 +-
 .../org/kie/dmn/core/DMNInputRuntimeBFEELTest.java |  39 ++++++++
 .../core/compiler/DMNEvaluatorCompilerTest.java    |  58 ++++++++---
 .../dmn/model/api/DMNModelInstrumentedBase.java    |   5 +
 .../java/org/kie/dmn/model/api/Definitions.java    |   6 +-
 ...ortedValues.java => HasExpressionLanguage.java} |  12 +--
 .../java/org/kie/dmn/model/api/ImportedValues.java |   6 +-
 .../org/kie/dmn/model/api/LiteralExpression.java   |   6 +-
 .../java/org/kie/dmn/model/api/UnaryTests.java     |   6 +-
 .../DMNv1_6/B-FEEL/bfeel-global-feel-local.dmn     | 107 +++++++++++++++++++++
 10 files changed, 211 insertions(+), 39 deletions(-)

diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNEvaluatorCompiler.java
 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNEvaluatorCompiler.java
index b4dca4ddde..33a7eae6d1 100644
--- 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNEvaluatorCompiler.java
+++ 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNEvaluatorCompiler.java
@@ -890,9 +890,10 @@ public class DMNEvaluatorCompiler implements 
DMNDecisionLogicCompiler {
      * @return
      */
     static FEEL getFEELDialectAdaptedFEEL(DMNCompilerContext ctx, 
LiteralExpression expression, String expressionLanguage) {
-        if (expressionLanguage == null ||
-                expressionLanguage.equals(expression.getURIFEEL())) {
+        if (expressionLanguage == null) {
             return ctx.getFeelHelper().newFEELInstance();
+        } else if (expressionLanguage.equals(expression.getURIFEEL())) {
+            return ctx.getFeelHelper().newFEELInstance(FEELDialect.FEEL);
         } else if 
(expressionLanguage.equals(FEELDialect.BFEEL.getNamespace())) {
             return ctx.getFeelHelper().newFEELInstance(FEELDialect.BFEEL);
         } else {
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNInputRuntimeBFEELTest.java
 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNInputRuntimeBFEELTest.java
index e248d061a1..23d00db6b3 100644
--- 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNInputRuntimeBFEELTest.java
+++ 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNInputRuntimeBFEELTest.java
@@ -18,22 +18,61 @@
  */
 package org.kie.dmn.core;
 
+import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.Collections;
 
+import java.util.List;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 import org.kie.dmn.api.core.DMNContext;
+import org.kie.dmn.api.core.DMNMessage;
 import org.kie.dmn.api.core.DMNModel;
 import org.kie.dmn.api.core.DMNResult;
 import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.dmn.core.api.DMNFactory;
 import org.kie.dmn.core.impl.DMNModelImpl;
 import org.kie.dmn.core.util.DMNRuntimeUtil;
 import org.kie.dmn.feel.lang.FEELDialect;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.kie.dmn.core.util.DynamicTypeUtils.entry;
+import static org.kie.dmn.core.util.DynamicTypeUtils.mapOf;
 
 public class DMNInputRuntimeBFEELTest extends BaseInterpretedVsCompiledTest {
 
+
+    @ParameterizedTest
+    @MethodSource("params")
+    void expressionLanguageOverridesBFEEL(boolean useExecModelCompiler) {
+        init(useExecModelCompiler);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntime("invalid_models/DMNv1_6/B-FEEL/bfeel-global-feel-local.dmn",
 this.getClass());
+        final DMNModel dmnModel = 
runtime.getModel("https://kie.org/dmn/_3A640A4E-08C2-4B09-BAAF-866504DC8750";, 
"DMN_1D8875EF-E77F-4A89-9495-113D22A02DBA");
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+
+        final DMNContext context = DMNFactory.newContext();
+        context.set("Person", mapOf(entry("Age", 30)));
+
+        final DMNResult dmnResult = runtime.evaluateAll(dmnModel, context);
+        
assertThat(dmnResult.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnResult.getMessages())).isTrue();
+        List<DMNMessage> errors = 
dmnResult.getMessages(DMNMessage.Severity.ERROR);
+        List<String> expectedErrors = Arrays.asList("Wrong Sum List", "Wrong 
Boolean",
+                                                    "Wrong decision based on 
Wrong Boolean");
+        List<String> unwantedErrors = Arrays.asList("Right Sum List", "Right 
Boolean",
+                                                    "Right decision based on 
Wrong Boolean");
+        assertThat(errors)
+                .anyMatch(message -> expectedErrors.stream().anyMatch(toTest 
-> message.getText().contains(toTest)))
+                .noneMatch(message -> unwantedErrors.stream().anyMatch(toTest 
-> message.getText().contains(toTest)));
+
+        final DMNContext result = dmnResult.getContext();
+
+        assertThat(result.get("Right Sum List")).isEqualTo(new 
BigDecimal("34"));
+        assertThat(result.get("Right Boolean")).isEqualTo(false);
+        assertThat(result.get("Right decision based on Wrong 
Boolean")).isEqualTo(true);
+
+    }
+
     @ParameterizedTest
     @MethodSource("params")
     void constraintsChecksBFEEL(boolean useExecModelCompiler) {
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 0d5c577351..0c20b3e349 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
@@ -54,18 +54,22 @@ import static 
org.kie.dmn.core.compiler.DMNEvaluatorCompiler.getEvaluatorIdentif
 class DMNEvaluatorCompilerTest {
 
     private static final FEELDialect DEFAULT_FEEL_DIALECT = FEELDialect.FEEL;
+    private static final FEELDialect B_FEEL_DIALECT = FEELDialect.BFEEL;
     private static final String IF_ELEMENT_ID = "IF_ELEMENT_ID";
     private static final String THEN_ELEMENT_ID = "THEN_ELEMENT_ID";
     private static final String ELSE_ELEMENT_ID = "ELSE_ELEMENT_ID";
-    private static DMNCompilerContext DMN_COMPILER_CONTEXT;
+    private static DMNCompilerContext DEFAULT_DMN_COMPILER_CONTEXT;
+    private static DMNCompilerContext B_FEEL_DMN_COMPILER_CONTEXT;
     private static DMNEvaluatorCompiler dmnEvaluatorCompiler;
-    private static DMNFEELHelper DMN_FEEL_HELPER;
+    private static DMNFEELHelper DEFAULT_DMN_FEEL_HELPER;
+    private static DMNFEELHelper B_FEEL_DMN_FEEL_HELPER;
 
     @BeforeAll
     static void setUp() {
-        DMN_FEEL_HELPER = new DMNFEELHelper(Collections.emptyList(), 
DEFAULT_FEEL_DIALECT, DMNVersion.getLatest());
-        DMN_COMPILER_CONTEXT = new DMNCompilerContext(DMN_FEEL_HELPER);
-
+        DEFAULT_DMN_FEEL_HELPER = new DMNFEELHelper(Collections.emptyList(), 
DEFAULT_FEEL_DIALECT, DMNVersion.getLatest());
+        DEFAULT_DMN_COMPILER_CONTEXT = new 
DMNCompilerContext(DEFAULT_DMN_FEEL_HELPER);
+        B_FEEL_DMN_FEEL_HELPER = new DMNFEELHelper(Collections.emptyList(), 
B_FEEL_DIALECT, DMNVersion.getLatest());
+        B_FEEL_DMN_COMPILER_CONTEXT = new 
DMNCompilerContext(B_FEEL_DMN_FEEL_HELPER);
         DMNCompilerImpl compiler = new DMNCompilerImpl();
         dmnEvaluatorCompiler = new DMNEvaluatorCompiler(compiler);
     }
@@ -74,16 +78,39 @@ class DMNEvaluatorCompilerTest {
     void getFEELDialectAdaptedFEELNoExpressionLanguage() {
         String expressionLanguage = null;
         LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
-        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DEFAULT_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
         assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
         assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(DEFAULT_FEEL_DIALECT);
+        //
+        retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(B_FEEL_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
+        assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(B_FEEL_DIALECT);
     }
 
+    @Test
+    void getFEELDialectAdaptedFEELNoExpressionLanguageDefault() {
+        String expressionLanguage = null;
+        LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DEFAULT_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
+        assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(DEFAULT_FEEL_DIALECT);
+    }
+
+    @Test
+    void getFEELDialectAdaptedFEELNoExpressionLanguageBFEEL() {
+        String expressionLanguage = null;
+        LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(B_FEEL_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
+        assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(B_FEEL_DIALECT);
+    }
+
+
     @Test
     void getFEELDialectAdaptedFEELFEELURIExpressionLanguage() {
         LiteralExpression expression = getLiteralExpression(null);
         String expressionLanguage = expression.getURIFEEL();
-        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DEFAULT_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
         assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
         assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(DEFAULT_FEEL_DIALECT);
     }
@@ -92,17 +119,26 @@ class DMNEvaluatorCompilerTest {
     void getFEELDialectAdaptedFEELBFEELExpressionLanguage() {
         String expressionLanguage = FEELDialect.BFEEL.getNamespace();
         LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
-        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DEFAULT_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
         assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
         assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(FEELDialect.BFEEL);
     }
 
+    @Test
+    void getFEELDialectAdaptedFEELSFEELExpressionLanguage() {
+        String expressionLanguage = 
"https://www.omg.org/spec/DMN/20230324/FEEL/";;
+        LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
+        FEEL retrieved = 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(B_FEEL_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage);
+        assertThat(retrieved).isNotNull().isInstanceOf(FEELImpl.class);
+        assertThat(((FEELImpl) 
retrieved).getFeelDialect()).isEqualTo(FEELDialect.FEEL);
+    }
+
     @Test
     void getFEELDialectAdaptedFEELWrongExpressionLanguage() {
         String expressionLanguage = "something-else";
         LiteralExpression expression = 
getLiteralExpression(expressionLanguage);
         String expectedMessage = String.format("Unsupported FEEL language 
'%s'; allowed values are `null`, %s, %s", expressionLanguage, 
expression.getURIFEEL(), FEELDialect.BFEEL.getNamespace());
-        assertThatThrownBy(() -> 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DMN_COMPILER_CONTEXT, 
expression, expressionLanguage))
+        assertThatThrownBy(() -> 
DMNEvaluatorCompiler.getFEELDialectAdaptedFEEL(DEFAULT_DMN_COMPILER_CONTEXT, 
expression, expressionLanguage))
                 .isInstanceOf(IllegalArgumentException.class)
                 .hasMessage(expectedMessage);
     }
@@ -129,7 +165,7 @@ class DMNEvaluatorCompilerTest {
         Conditional expr = (Conditional) retrieved;
         DMNBaseNode dmnBaseNode = getNodeByName(dmnModel, "B");
         DMNType numType = dmnBaseNode.getType();
-        DMNCompilerContext compilerContext = new 
DMNCompilerContext(DMN_FEEL_HELPER);;
+        DMNCompilerContext compilerContext = new 
DMNCompilerContext(DEFAULT_DMN_FEEL_HELPER);;
         compilerContext.setVariable("num", numType);
         DMNExpressionEvaluator ifEvaluator = 
dmnEvaluatorCompiler.compileExpression(compilerContext, (DMNModelImpl) 
dmnModel, dmnBaseNode, ifExprName, expr.getIf().getExpression());
         DMNExpressionEvaluator thenEvaluator = 
dmnEvaluatorCompiler.compileExpression(compilerContext, (DMNModelImpl) 
dmnModel, dmnBaseNode, thenExprName, expr.getThen().getExpression());
@@ -171,7 +207,7 @@ class DMNEvaluatorCompilerTest {
         assertThat(retrieved).isNotNull();
         DMNBaseNode dmnBaseNode = getNodeByName(dmnModel, "B");
         DMNType numType = dmnBaseNode.getType();
-        DMNCompilerContext compilerContext = new 
DMNCompilerContext(DMN_FEEL_HELPER);
+        DMNCompilerContext compilerContext = new 
DMNCompilerContext(DEFAULT_DMN_FEEL_HELPER);
         compilerContext.setVariable("num", numType);
         DMNExpressionEvaluator result = 
dmnEvaluatorCompiler.compileConditional(compilerContext, (DMNModelImpl) 
dmnModel, dmnBaseNode, exprName, (Conditional) retrieved);
         assertThat(result).isNotNull();
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/DMNModelInstrumentedBase.java
 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/DMNModelInstrumentedBase.java
index c498e19470..276f2121c1 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/DMNModelInstrumentedBase.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/DMNModelInstrumentedBase.java
@@ -52,6 +52,11 @@ public interface DMNModelInstrumentedBase {
 
     String getIdentifierString();
 
+    /**
+     * Returns the FEEL namespace mapped to the DMN version of the current 
<code>DMNModelInstrumentedBase</code>,
+     * e.g. any v1.6 concrete class will return the FEEL namespace used by DMN 
1.6
+     * @return
+     */
     String getURIFEEL();
 
     void setLocation(Location location);
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
index 4005f8f9eb..461d6ffe57 100644
--- a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
+++ b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
@@ -25,7 +25,7 @@ import javax.xml.namespace.QName;
 
 import org.kie.dmn.model.api.dmndi.DMNDI;
 
-public interface Definitions extends NamedElement {
+public interface Definitions extends NamedElement, HasExpressionLanguage {
 
     List<Import> getImport();
 
@@ -56,10 +56,6 @@ public interface Definitions extends NamedElement {
         }
     }
 
-    String getExpressionLanguage();
-
-    void setExpressionLanguage(String value);
-
     String getTypeLanguage();
 
     void setTypeLanguage(String value);
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/HasExpressionLanguage.java
similarity index 87%
copy from 
kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java
copy to 
kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/HasExpressionLanguage.java
index 1eb56d8e30..9d64556303 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/HasExpressionLanguage.java
@@ -18,14 +18,14 @@
  */
 package org.kie.dmn.model.api;
 
-public interface ImportedValues extends Import {
-
-    String getImportedElement();
-
-    void setImportedElement(String value);
+public interface HasExpressionLanguage {
 
+    /**
+     * This is the <b>expressionLanguage</b> attribute
+     * @return
+     */
     String getExpressionLanguage();
 
     void setExpressionLanguage(String value);
 
-}
+}
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java
index 1eb56d8e30..034044e785 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/ImportedValues.java
@@ -18,14 +18,10 @@
  */
 package org.kie.dmn.model.api;
 
-public interface ImportedValues extends Import {
+public interface ImportedValues extends Import, HasExpressionLanguage {
 
     String getImportedElement();
 
     void setImportedElement(String value);
 
-    String getExpressionLanguage();
-
-    void setExpressionLanguage(String value);
-
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/LiteralExpression.java
 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/LiteralExpression.java
index 57f0525caf..ec9abdb831 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/LiteralExpression.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/LiteralExpression.java
@@ -18,7 +18,7 @@
  */
 package org.kie.dmn.model.api;
 
-public interface LiteralExpression extends Expression {
+public interface LiteralExpression extends Expression, HasExpressionLanguage {
 
     String getText();
 
@@ -28,8 +28,4 @@ public interface LiteralExpression extends Expression {
 
     void setImportedValues(ImportedValues value);
 
-    String getExpressionLanguage();
-
-    void setExpressionLanguage(String value);
-
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/UnaryTests.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/UnaryTests.java
index 8b6e74eef3..130ebf08e4 100644
--- a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/UnaryTests.java
+++ b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/UnaryTests.java
@@ -20,16 +20,12 @@ package org.kie.dmn.model.api;
 
 import javax.xml.namespace.QName;
 
-public interface UnaryTests extends Expression {
+public interface UnaryTests extends Expression, HasExpressionLanguage {
 
     String getText();
 
     void setText(String value);
 
-    String getExpressionLanguage();
-
-    void setExpressionLanguage(String value);
-
     @Override
     default QName getTypeRef() {
         throw new UnsupportedOperationException("An instance of UnaryTests 
inherits an optional typeRef from Expression, which must not be used");
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/invalid_models/DMNv1_6/B-FEEL/bfeel-global-feel-local.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/invalid_models/DMNv1_6/B-FEEL/bfeel-global-feel-local.dmn
new file mode 100644
index 0000000000..9f36a2573d
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/invalid_models/DMNv1_6/B-FEEL/bfeel-global-feel-local.dmn
@@ -0,0 +1,107 @@
+<?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/B-FEEL/"; 
namespace="https://kie.org/dmn/_3A640A4E-08C2-4B09-BAAF-866504DC8750"; 
id="_95F556A6-B5F3-466F-9C55-63440FAC8AEE"
+             name="DMN_1D8875EF-E77F-4A89-9495-113D22A02DBA">
+  <itemDefinition id="_6265833E-19AD-40FA-9053-8C766C1FE415" name="tPerson" 
isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";>
+    <itemComponent id="_7DA957A9-8F14-4940-A61E-403A94BF546D" name="Age" 
isCollection="false" typeLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";>
+      <typeRef>number</typeRef>
+    </itemComponent>
+  </itemDefinition>
+  <decision name="Wrong Sum List" id="_D44300BE-2FE4-435C-B6FF-5236589EC0C2">
+    <variable id="_704A66D6-E45E-4D22-A183-0F3D1DB4A129" name="Wrong Sum List" 
typeRef="number" />
+    <informationRequirement id="_9AECBCC6-8333-47A9-BD06-47DA41D07FB4">
+      <requiredInput href="#_2A8EFAB9-E782-4993-9982-9D8D3E918EF8" />
+    </informationRequirement>
+    <literalExpression id="_40AA06F1-3ABD-4AEC-8F48-B7488181E33D" 
typeRef="number" label="Wrong Sum List" 
expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";>
+      <text>sum([Person.Age, &quot;1&quot;, 4])</text>
+    </literalExpression>
+  </decision>
+  <decision name="Wrong Boolean" id="_D44300BE-2FE4-435C-B6FF-5236589EC0C3">
+    <variable id="_704A66D6-E45E-4D22-A183-0F3D1DB4A130" name="Wrong Boolean" 
typeRef="boolean" />
+    <literalExpression id="_40AA06F1-3ABD-4AEC-8F48-B7488181E33E" 
typeRef="boolean" label="Wrong Boolean" 
expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/";>
+      <text>"a" = 1</text>
+    </literalExpression>
+  </decision>
+
+  <decision name="Right Sum List" id="_D44300BE-2FE4-435C-B6FF-5236589EC0C4">
+    <variable id="_704A66D6-E45E-4D22-A183-0F3D1DB4A131" name="Right Sum List" 
typeRef="number" />
+    <informationRequirement id="_9AECBCC6-8333-47A9-BD06-47DA41D07FB6">
+      <requiredInput href="#_2A8EFAB9-E782-4993-9982-9D8D3E918EF8" />
+    </informationRequirement>
+    <literalExpression id="_40AA06F1-3ABD-4AEC-8F48-B7488181E33F" 
typeRef="number" label="Right Sum List">
+      <text>sum([Person.Age, &quot;1&quot;, 4])</text>
+    </literalExpression>
+  </decision>
+
+  <decision name="Right Boolean" id="_D44300BE-2FE4-435C-B6FF-5236589EC0C5">
+    <variable id="_704A66D6-E45E-4D22-A183-0F3D1DB4A132" name="Right Boolean" 
typeRef="boolean" />
+    <literalExpression id="_40AA06F1-3ABD-4AEC-8F48-B7488181E33G" 
typeRef="boolean" label="Right Boolean">
+      <text>"a" = 1</text>
+    </literalExpression>
+  </decision>
+
+  <decision id="_fc1bff6c-b1ca-4a10-ba9a-23b8f5e86e6a" name="Wrong decision 
based on Wrong Boolean">
+    <variable name="Wrong decision based on Wrong Boolean" 
id="_2e323310-3d83-4c51-a256-3082e0ccacea" typeRef="boolean"/>
+    <informationRequirement id="_e848f84a-25ef-432b-b944-2848f11ea91c" >
+      <requiredDecision href="_D44300BE-2FE4-435C-B6FF-5236589EC0C3"/>
+    </informationRequirement>
+    <literalExpression id="_05fab753-c3c4-41a9-8984-e078f4aabe32" 
typeRef="boolean"   
expressionLanguage="https://www.omg.org/spec/DMN/20240513/FEEL/"; >
+      <text>is(Wrong Boolean) = true</text>
+    </literalExpression>
+  </decision>
+
+  <decision id="_fc1bff6c-b1ca-4a10-ba9a-23b8f5e86e6b" name="Right decision 
based on Wrong Boolean">
+    <variable name="Right decision based on Wrong Boolean" 
id="_2e323310-3d83-4c51-a256-3082e0ccaceb" typeRef="boolean"/>
+    <informationRequirement id="_e848f84a-25ef-432b-b944-2848f11ea91d" >
+      <requiredDecision href="_D44300BE-2FE4-435C-B6FF-5236589EC0C3"/>
+    </informationRequirement>
+    <literalExpression id="_05fab753-c3c4-41a9-8984-e078f4aabe33" 
typeRef="boolean" >
+      <text>is(Wrong Boolean) = false</text>
+    </literalExpression>
+  </decision>
+
+  <inputData name="Person" id="_2A8EFAB9-E782-4993-9982-9D8D3E918EF8">
+    <variable name="Person" id="_D8CC72F8-D10C-4A8B-B7AC-C74CA66D4272" 
typeRef="tPerson" />
+  </inputData>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_D3BA90EC-79E4-45E9-9F9E-540E47C4AE6B" name="Default 
DRD" useAlternativeInputDataShape="false">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths 
dmnElementRef="_40AA06F1-3ABD-4AEC-8F48-B7488181E33D">
+            <kie:width>190</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="_4E15F28B-2232-4F1E-8546-DAC813B4D4D2" 
dmnElementRef="_2A8EFAB9-E782-4993-9982-9D8D3E918EF8" isCollapsed="false" 
isListedInputData="false">
+        <dc:Bounds x="140" y="120" width="160" height="80" />
+      </dmndi:DMNShape>
+      <dmndi:DMNShape id="_0AB4DFDB-8B2F-4D4B-ACAA-53C987D1725E" 
dmnElementRef="_D44300BE-2FE4-435C-B6FF-5236589EC0C2" isCollapsed="false" 
isListedInputData="false">
+        <dc:Bounds x="380" y="120" width="160" height="80" />
+      </dmndi:DMNShape>
+      <dmndi:DMNEdge id="_787BC3EE-6C29-415A-9534-FC3A49F68B92-AUTO-TARGET" 
dmnElementRef="_9AECBCC6-8333-47A9-BD06-47DA41D07FB4" 
sourceElement="_4E15F28B-2232-4F1E-8546-DAC813B4D4D2" 
targetElement="_0AB4DFDB-8B2F-4D4B-ACAA-53C987D1725E">
+        <di:waypoint x="220" y="160" />
+        <di:waypoint x="460" y="160" />
+      </dmndi:DMNEdge>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</definitions>


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

Reply via email to