From b19e234dafac4bf3df07691519be7e38a4eab323 Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 16 Mar 2026 14:55:39 +0100 Subject: [PATCH 1/2] Adds fallback code to read 1.x task variables * Since DSF 2.x uses different names for API v1 task variables, process instances started with DSF 1.x fail to continue on DSF 2.x. * Adds fallback code to read old DSF 1.x task variables in case no variables with the new 2.x names are found. --- .../dsf/bpe/v1/variables/VariablesImpl.java | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java index 774f58308..1902558cd 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.function.Supplier; import java.util.stream.Stream; import org.hl7.fhir.r4.model.QuestionnaireResponse; @@ -42,7 +43,9 @@ public class VariablesImpl implements Variables, ListenerVariables private static final Logger logger = LoggerFactory.getLogger(VariablesImpl.class); private static final String TASKS_PREFIX = VariablesImpl.class.getName() + ".tasks."; + private static final String TASKS_PREFIX_DSF_1 = "dev.dsf.bpe.variables.VariablesImpl.tasks."; private static final String START_TASK = VariablesImpl.class.getName() + ".startTask"; + private static final String START_TASK_DSF_1 = "dev.dsf.bpe.variables.VariablesImpl.startTask"; private static final class DistinctTask { @@ -170,10 +173,10 @@ public List getResourceList(String variableName) return list != null ? list.getResourcesAndCast() : null; } - private List getResourceListOrDefault(String variableName, List defaultList) + private List getResourceListOrDefault(String variableName, Supplier> defaultList) { List list = getResourceList(variableName); - return list != null ? list : defaultList; + return list != null ? list : defaultList.get(); } @Override @@ -197,7 +200,12 @@ public Task getStartTask() logger.trace("getStartTask - parentActivityInstanceId: {}, parentId: {}", execution.getParentActivityInstanceId(), execution.getParentId()); - return getResource(START_TASK); + Task resource = getResource(START_TASK); + + if (resource == null) + resource = getResource(START_TASK_DSF_1); + + return resource; } @Override @@ -218,7 +226,8 @@ public List getTasks() List tasks = Stream .concat(Stream.of(getStartTask()), - execution.getVariables().keySet().stream().filter(k -> k.startsWith(TASKS_PREFIX)) + execution.getVariables().keySet().stream() + .filter(k -> k.startsWith(TASKS_PREFIX) || k.startsWith(TASKS_PREFIX_DSF_1)) .map(this::getResourceList).flatMap(List::stream).filter(r -> r instanceof Task) .map(r -> (Task) r)) .filter(t -> t != null).map(DistinctTask::new).distinct().map(DistinctTask::getTask).toList(); @@ -234,7 +243,9 @@ public List getCurrentTasks() Stream start = execution.getParentId() == null ? Stream.of(getStartTask()) : Stream.empty(); Stream current = getResourceListOrDefault(TASKS_PREFIX + execution.getParentActivityInstanceId(), - List. of()).stream(); + () -> getResourceListOrDefault(TASKS_PREFIX_DSF_1 + execution.getParentActivityInstanceId(), + List:: of)) + .stream(); return Collections.unmodifiableList(Stream.concat(start, current).toList()); } @@ -252,7 +263,8 @@ public void updateTask(Task task) else { String instanceId = execution.getParentActivityInstanceId(); - List tasks = getResourceListOrDefault(TASKS_PREFIX + instanceId, List.of()); + List tasks = getResourceListOrDefault(TASKS_PREFIX + instanceId, + () -> getResourceListOrDefault(TASKS_PREFIX_DSF_1 + instanceId, List::of)); if (tasks.stream().anyMatch(t -> t.getIdElement().getIdPart().equals(task.getIdElement().getIdPart()))) setResourceList(TASKS_PREFIX + instanceId, tasks); @@ -307,7 +319,8 @@ public void onContinue(Task task) { String instanceId = execution.getParentActivityInstanceId(); - List tasks = new ArrayList<>(getResourceListOrDefault(TASKS_PREFIX + instanceId, List.of())); + List tasks = new ArrayList<>(getResourceListOrDefault(TASKS_PREFIX + instanceId, + () -> getResourceListOrDefault(TASKS_PREFIX_DSF_1 + instanceId, List::of))); tasks.add(task); setResourceList(TASKS_PREFIX + instanceId, tasks); @@ -322,7 +335,8 @@ public void onEnd() logger.trace("onEnd"); String instanceId = execution.getParentActivityInstanceId(); - List tasks = new ArrayList<>(getResourceListOrDefault(TASKS_PREFIX + instanceId, List.of())); + List tasks = new ArrayList<>(getResourceListOrDefault(TASKS_PREFIX + instanceId, + () -> getResourceListOrDefault(TASKS_PREFIX_DSF_1 + instanceId, List::of))); tasks.removeAll(getCurrentTasks()); setResourceList(TASKS_PREFIX + instanceId, tasks); } From 060aaf6dc2294aaec6ecd1499d31a27f4012c8cd Mon Sep 17 00:00:00 2001 From: Hauke Hund Date: Mon, 16 Mar 2026 15:19:17 +0100 Subject: [PATCH 2/2] renamed variable --- .../main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java index 1902558cd..392cd630e 100644 --- a/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java +++ b/dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/variables/VariablesImpl.java @@ -200,12 +200,12 @@ public Task getStartTask() logger.trace("getStartTask - parentActivityInstanceId: {}, parentId: {}", execution.getParentActivityInstanceId(), execution.getParentId()); - Task resource = getResource(START_TASK); + Task task = getResource(START_TASK); - if (resource == null) - resource = getResource(START_TASK_DSF_1); + if (task == null) + task = getResource(START_TASK_DSF_1); - return resource; + return task; } @Override