This is an automated email from the ASF dual-hosted git repository. gitgabrio pushed a commit to branch incubator-kie-issues#1497 in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
commit 7685790f608a48cc60fefe533d37eb1d613b7d60 Author: Gabriele-Cardosi <[email protected]> AuthorDate: Tue Oct 8 10:39:35 2024 +0200 [incubator-kie-issues#1497] Using the getSerializableNodeInstances inside ProtobufProcessInstanceWriter --- .../instance/node/ForEachNodeInstance.java | 23 +++++++++++++--------- .../impl/ProtobufProcessInstanceWriter.java | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java index 339f48d3f2..5f665df485 100755 --- a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java +++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/ForEachNodeInstance.java @@ -18,14 +18,8 @@ */ package org.jbpm.workflow.instance.node; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; +import java.util.stream.*; import org.jbpm.process.core.ContextContainer; import org.jbpm.process.core.context.variable.VariableScope; @@ -48,7 +42,7 @@ import org.jbpm.workflow.instance.impl.MVELProcessHelper; import org.jbpm.workflow.instance.impl.NodeInstanceImpl; import org.jbpm.workflow.instance.impl.NodeInstanceResolverFactory; import org.kie.api.definition.process.Connection; -import org.kie.kogito.internal.process.runtime.KogitoNodeInstance; +import org.kie.kogito.internal.process.runtime.*; import org.mvel2.integration.VariableResolver; import org.mvel2.integration.impl.SimpleValueResolver; @@ -58,6 +52,8 @@ import org.mvel2.integration.impl.SimpleValueResolver; public class ForEachNodeInstance extends CompositeContextNodeInstance { private static final long serialVersionUID = 510L; + private static final List<Class<? extends org.kie.api.runtime.process.NodeInstance>> NOT_SERIALIZABLE_CLASSES = Arrays.asList(ForEachJoinNodeInstance.class); // using Arrays.asList to allow multiple exclusions + public static final String TEMP_OUTPUT_VAR = "foreach_output"; private int totalInstances; @@ -131,6 +127,11 @@ public class ForEachNodeInstance extends CompositeContextNodeInstance { return getForEachNode().getCompositeNode(); } + @Override + public Collection<org.kie.api.runtime.process.NodeInstance> getSerializableNodeInstances() { + return getNodeInstances().stream().filter(this::isSerializable).collect(Collectors.toUnmodifiableList()); + } + private boolean isSequential() { return getForEachNode().isSequential() || hasAsyncInstances; } @@ -350,6 +351,10 @@ public class ForEachNodeInstance extends CompositeContextNodeInstance { return 1; } + private boolean isSerializable(org.kie.api.runtime.process.NodeInstance toCheck) { + return !NOT_SERIALIZABLE_CLASSES.contains(toCheck.getClass()); + } + private class ForEachNodeInstanceResolverFactory extends NodeInstanceResolverFactory { private static final long serialVersionUID = -8856846610671009685L; diff --git a/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/impl/ProtobufProcessInstanceWriter.java b/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/impl/ProtobufProcessInstanceWriter.java index b0f67430db..7b76171f04 100644 --- a/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/impl/ProtobufProcessInstanceWriter.java +++ b/jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/impl/ProtobufProcessInstanceWriter.java @@ -249,7 +249,7 @@ public class ProtobufProcessInstanceWriter { } private <T extends NodeInstanceContainer & ContextInstanceContainer & ContextableInstance> WorkflowContext buildWorkflowContext(T nodeInstance) { - List<NodeInstance> nodeInstances = new ArrayList<>(nodeInstance.getNodeInstances()); + List<NodeInstance> nodeInstances = new ArrayList<>(nodeInstance.getSerializableNodeInstances()); List<ContextInstance> exclusiveGroupInstances = nodeInstance.getContextInstances(ExclusiveGroup.EXCLUSIVE_GROUP); VariableScopeInstance variableScopeInstance = (VariableScopeInstance) nodeInstance.getContextInstance(VariableScope.VARIABLE_SCOPE); List<Map.Entry<String, Object>> variables = (variableScopeInstance != null) ? new ArrayList<>(variableScopeInstance.getVariables().entrySet()) : Collections.emptyList(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
