diff --git a/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/helper/MapHelper.java b/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/helper/MapHelper.java index d4c942c..35f8561 100644 --- a/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/helper/MapHelper.java +++ b/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/helper/MapHelper.java @@ -2,6 +2,7 @@ package com.lanyuanxiaoyao.flowable.core.helper; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import lombok.NoArgsConstructor; /** @@ -27,4 +28,19 @@ public class MapHelper { public static Map empty() { return new HashMap<>(0); } + + public static boolean isEmpty(Map map) { + return Objects.isNull(map) || map.isEmpty(); + } + + @SafeVarargs + public static Map concat(Map... maps) { + Map result = new HashMap<>(); + for (Map map : maps) { + if (Objects.nonNull(map)) { + result.putAll(map); + } + } + return result; + } } diff --git a/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/manager/FlowableManager.java b/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/manager/FlowableManager.java index f37a915..0699fb0 100644 --- a/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/manager/FlowableManager.java +++ b/flowable-core/src/main/java/com/lanyuanxiaoyao/flowable/core/manager/FlowableManager.java @@ -107,6 +107,7 @@ public abstract class FlowableManager { private void manualAction(String instanceId, FlowableAction action, String comment, Map metadata) { FlowableInstance instance = repository.getInstance(instanceId); FlowableNode node = repository.getNode(instance.getCurrentNodeId()); + metadata = MapHelper.isEmpty(metadata) ? instance.getMetadata() : MapHelper.concat(metadata, instance.getMetadata()); action(instance, node, action, comment, metadata); }