Source:
<code>public void testImport3Levels() { DMNRuntime runtime = DMNRuntimeUtil.createRuntimeWithAdditionalResources("L3_Do_say_hello.dmn", this.getClass(), "Do_say_hello_with_2_bkms.dmn", "Saying_hello_2_bkms.dmn"); runtime.addListener(DMNRuntimeUtil.createListener()); DMNModel importedModel = runtime.getModel("<LINK_0>", "Saying hello 2 bkms"); assertThat(importedModel, notNullValue()); for (DMNMessage message : importedModel.getMessages()) { LOG.debug("{}", message); } DMNModel dmnModel = runtime.getModel("<LINK_1>", "Do say hello with 2 bkms"); assertThat(dmnModel, notNullValue()); for (DMNMessage message : dmnModel.getMessages()) { LOG.debug("{}", message); } DMNModel dmnModelL3 = runtime.getModel("<LINK_2>", "L3 Do say hello"); assertThat(dmnModelL3, notNullValue()); for (DMNMessage message : dmnModelL3.getMessages()) { LOG.debug("{}", message); } DMNContext context = runtime.newContext(); context.set("Another Name", "Bob"); <START> context.set("L2import", mapOf(entry("Person name", "John"))); <END> DMNResult evaluateAll = runtime.evaluateAll(dmnModelL3, context); for (DMNMessage message : evaluateAll.getMessages()) { LOG.debug("{}", message); } LOG.debug("{}", evaluateAll); assertThat(evaluateAll.getDecisionResultByName("L3 decision").getResult(), is("Hello, Bob")); assertThat(evaluateAll.getDecisionResultByName("L3 view on M2").getResult(), is("Hello, John")); assertThat(evaluateAll.getDecisionResultByName("L3 what about hello").getResult(), is("Hello")); }</code><technical_language>I personally approach dotted key: context.set("L2import.Person name", "John"); more user friendly me</technical_language>

Target:
public void testImport3Levels() { DMNRuntime runtime = DMNRuntimeUtil.createRuntimeWithAdditionalResources("L3_Do_say_hello.dmn", this.getClass(), "Do_say_hello_with_2_bkms.dmn", "Saying_hello_2_bkms.dmn"); if (LOG.isDebugEnabled()) { runtime.addListener(DMNRuntimeUtil.createListener()); } DMNModel importedModel = runtime.getModel("<LINK_0>", "Saying hello 2 bkms"); assertThat(importedModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(importedModel.getMessages()), importedModel.hasErrors(), is(false)); DMNModel dmnModel = runtime.getModel("<LINK_1>", "Do say hello with 2 bkms"); assertThat(dmnModel, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModel.getMessages()), dmnModel.hasErrors(), is(false)); DMNModel dmnModelL3 = runtime.getModel("<LINK_2>", "L3 Do say hello"); assertThat(dmnModelL3, notNullValue()); assertThat(DMNRuntimeUtil.formatMessages(dmnModelL3.getMessages()), dmnModelL3.hasErrors(), is(false)); DMNContext context = runtime.newContext(); context.set("Another Name", "Bob"); context.set("L2import", mapOf(entry("Person name", "John"))); DMNResult evaluateAll = runtime.evaluateAll(dmnModelL3, context); assertThat(DMNRuntimeUtil.formatMessages(evaluateAll.getMessages()), evaluateAll.hasErrors(), is(false)); LOG.debug("{}", evaluateAll); assertThat(evaluateAll.getDecisionResultByName("L3 decision").getResult(), is("Hello, Bob")); assertThat(evaluateAll.getDecisionResultByName("L3 view on M2").getResult(), is("Hello, John")); assertThat(evaluateAll.getDecisionResultByName("L3 what about hello").getResult(), is("Hello")); }