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]

Reply via email to