This is an automated email from the ASF dual-hosted git repository.

tzimanyi pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new a8b1de3b77 [kie-issues#843] Replace random UUID generator with a 
deterministic random one. (#3394)
a8b1de3b77 is described below

commit a8b1de3b7707178b94ce006c3c6433a46e0a41c1
Author: Tibor Zimányi <[email protected]>
AuthorDate: Thu Feb 8 09:00:40 2024 +0100

    [kie-issues#843] Replace random UUID generator with a deterministic random 
one. (#3394)
---
 .../org/jbpm/bpmn2/xml/AbstractNodeHandler.java    |  4 +--
 .../compiler/canonical/WorkItemNodeVisitor.java    |  5 ++-
 .../impl/DefaultProcessInstanceManager.java        |  4 +--
 .../instance/impl/actions/HandleMessageAction.java |  4 +--
 .../impl/actions/SignalProcessInstanceAction.java  |  4 +--
 .../instance/impl/humantask/HumanTaskHelper.java   |  4 +--
 .../src/main/java/org/jbpm/util/UUIDGenerator.java | 37 ++++++++++++++++++++++
 .../jbpm/workflow/core/impl/DataDefinition.java    |  5 +--
 .../instance/impl/WorkflowProcessInstanceImpl.java |  6 ++--
 .../instance/node/CompositeNodeInstance.java       |  4 +--
 .../jbpm/workflow/instance/node/DynamicUtils.java  |  4 +--
 .../workflow/instance/node/TimerNodeInstance.java  |  4 +--
 .../instance/node/WorkItemNodeInstance.java        |  4 +--
 .../impl/DefaultProcessInstanceManagerTest.java    |  5 ++-
 .../impl/ProtobufProcessInstanceReader.java        |  4 +--
 15 files changed, 69 insertions(+), 29 deletions(-)

diff --git 
a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java 
b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
index f55df1f084..0fb420b4ca 100755
--- a/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
+++ b/jbpm/jbpm-bpmn2/src/main/java/org/jbpm/bpmn2/xml/AbstractNodeHandler.java
@@ -27,7 +27,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
-import java.util.UUID;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.regex.Matcher;
@@ -53,6 +52,7 @@ import org.jbpm.process.core.datatype.DataTypeResolver;
 import org.jbpm.process.core.impl.DataTransformerRegistry;
 import org.jbpm.ruleflow.core.RuleFlowProcess;
 import org.jbpm.util.PatternConstants;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.DroolsAction;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.NodeContainer;
@@ -650,7 +650,7 @@ public abstract class AbstractNodeHandler extends 
BaseAbstractHandler implements
     }
 
     private DataDefinition toDataExpression(String expression) {
-        DataDefinition dataSpec = new 
DataDefinition(UUID.randomUUID().toString(), "EXPRESSION (" + expression + ")", 
null);
+        DataDefinition dataSpec = new DataDefinition(UUIDGenerator.getID(), 
"EXPRESSION (" + expression + ")", null);
         dataSpec.setExpression(expression);
         return dataSpec;
 
diff --git 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
index 7d29ffcc54..c949079c75 100644
--- 
a/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
+++ 
b/jbpm/jbpm-flow-builder/src/main/java/org/jbpm/compiler/canonical/WorkItemNodeVisitor.java
@@ -18,6 +18,7 @@
  */
 package org.jbpm.compiler.canonical;
 
+import java.util.List;
 import java.util.Map.Entry;
 import java.util.Objects;
 
@@ -117,7 +118,9 @@ public class WorkItemNodeVisitor<T extends WorkItemNode> 
extends AbstractNodeVis
     }
 
     protected void addWorkItemParameters(Work work, BlockStmt body, String 
variableName) {
-        for (Entry<String, Object> entry : work.getParameters().entrySet()) {
+        // This is to ensure that each run of the generator produces the same 
code.
+        final List<Entry<String, Object>> sortedParameters = 
work.getParameters().entrySet().stream().sorted(Entry.comparingByKey()).toList();
+        for (Entry<String, Object> entry : sortedParameters) {
             if (entry.getValue() == null) {
                 continue; // interfaceImplementationRef ?
             }
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/DefaultProcessInstanceManager.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/DefaultProcessInstanceManager.java
index 0cf670c899..95a637649a 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/DefaultProcessInstanceManager.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/DefaultProcessInstanceManager.java
@@ -22,10 +22,10 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Objects;
-import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.jbpm.process.instance.ProcessInstanceManager;
+import org.jbpm.util.UUIDGenerator;
 import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
 
 public class DefaultProcessInstanceManager implements ProcessInstanceManager {
@@ -36,7 +36,7 @@ public class DefaultProcessInstanceManager implements 
ProcessInstanceManager {
 
     public void addProcessInstance(KogitoProcessInstance processInstance) {
         if (Objects.isNull(processInstance.getStringId())) {
-            ((org.jbpm.process.instance.ProcessInstance) 
processInstance).setId(UUID.randomUUID().toString());
+            ((org.jbpm.process.instance.ProcessInstance) 
processInstance).setId(UUIDGenerator.getID());
         }
         internalAddProcessInstance(processInstance);
     }
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleMessageAction.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleMessageAction.java
index 8a08420e2b..befceb0974 100644
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleMessageAction.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/HandleMessageAction.java
@@ -20,10 +20,10 @@ package org.jbpm.process.instance.impl.actions;
 
 import java.io.Serializable;
 import java.util.Map;
-import java.util.UUID;
 
 import org.jbpm.process.instance.impl.Action;
 import org.jbpm.ruleflow.core.Metadata;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.impl.NodeIoHelper;
 import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
@@ -45,7 +45,7 @@ public class HandleMessageAction implements Action, 
Serializable {
     @Override
     public void execute(KogitoProcessContext context) throws Exception {
         KogitoWorkItemImpl workItem = new KogitoWorkItemImpl();
-        workItem.setId(UUID.randomUUID().toString());
+        workItem.setId(UUIDGenerator.getID());
         workItem.setName("Send Task");
         workItem.setNodeInstanceId((context.getNodeInstance()).getStringId());
         
workItem.setProcessInstanceId((context.getProcessInstance()).getStringId());
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/SignalProcessInstanceAction.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/SignalProcessInstanceAction.java
index fe693e1cd7..a0e495dcb0 100644
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/SignalProcessInstanceAction.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/actions/SignalProcessInstanceAction.java
@@ -21,11 +21,11 @@ package org.jbpm.process.instance.impl.actions;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.UUID;
 import java.util.function.Function;
 
 import org.jbpm.process.instance.impl.Action;
 import org.jbpm.process.instance.impl.util.VariableUtil;
+import org.jbpm.util.UUIDGenerator;
 import org.kie.kogito.internal.process.runtime.KogitoNodeInstance;
 import org.kie.kogito.internal.process.runtime.KogitoProcessContext;
 import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
@@ -108,7 +108,7 @@ public class SignalProcessInstanceAction implements Action, 
Serializable {
             context.getProcessInstance().signalEvent(signalName, signal);
         } else if (EXTERNAL_SCOPE.equals(scope)) {
             KogitoWorkItemImpl workItem = new KogitoWorkItemImpl();
-            workItem.setId(UUID.randomUUID().toString());
+            workItem.setId(UUIDGenerator.getID());
             workItem.setName("External Send Task");
             
workItem.setNodeInstanceId(context.getNodeInstance().getStringId());
             
workItem.setProcessInstanceId(context.getProcessInstance().getStringId());
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/humantask/HumanTaskHelper.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/humantask/HumanTaskHelper.java
index 7647ab7af2..3e326ef941 100644
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/humantask/HumanTaskHelper.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/process/instance/impl/humantask/HumanTaskHelper.java
@@ -22,8 +22,8 @@ import java.io.Serializable;
 import java.nio.file.Paths;
 import java.util.Date;
 import java.util.Map;
-import java.util.UUID;
 
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.instance.NodeInstance;
 import org.jbpm.workflow.instance.node.WorkItemNodeInstance;
 import org.kie.kogito.MapOutput;
@@ -179,6 +179,6 @@ public class HumanTaskHelper {
     }
 
     private static String getNewId() {
-        return UUID.randomUUID().toString();
+        return UUIDGenerator.getID();
     }
 }
diff --git a/jbpm/jbpm-flow/src/main/java/org/jbpm/util/UUIDGenerator.java 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/util/UUIDGenerator.java
new file mode 100644
index 0000000000..b88fc1aafb
--- /dev/null
+++ b/jbpm/jbpm-flow/src/main/java/org/jbpm/util/UUIDGenerator.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.jbpm.util;
+
+import java.util.Random;
+import java.util.UUID;
+
+public final class UUIDGenerator {
+    private static final Random RANDOM = new Random(1);
+
+    private UUIDGenerator() {
+        // It is not allowed to create instances of a util class.
+    }
+
+    public static synchronized String getID() {
+        byte[] array = new byte[16];
+        RANDOM.nextBytes(array);
+        return String.valueOf(UUID.nameUUIDFromBytes(array));
+    }
+}
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataDefinition.java 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataDefinition.java
index e36b7a940d..7fec44dc78 100644
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataDefinition.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/core/impl/DataDefinition.java
@@ -19,7 +19,8 @@
 package org.jbpm.workflow.core.impl;
 
 import java.io.Serializable;
-import java.util.UUID;
+
+import org.jbpm.util.UUIDGenerator;
 
 public class DataDefinition implements Serializable {
 
@@ -31,7 +32,7 @@ public class DataDefinition implements Serializable {
     private String expression;
 
     public DataDefinition(String expression) {
-        this.id = UUID.randomUUID().toString();
+        this.id = UUIDGenerator.getID();
         this.label = "EXPRESSION - (" + expression + ")";
         this.type = "java.lang.Object";
         this.expression = expression;
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
index e13e3d5024..f77652b856 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/impl/WorkflowProcessInstanceImpl.java
@@ -30,7 +30,6 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
-import java.util.UUID;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.function.Function;
 import java.util.function.Predicate;
@@ -52,6 +51,7 @@ import 
org.jbpm.process.instance.context.variable.VariableScopeInstance;
 import org.jbpm.process.instance.impl.ProcessInstanceImpl;
 import org.jbpm.ruleflow.core.Metadata;
 import org.jbpm.util.PatternConstants;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.DroolsAction;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.impl.NodeImpl;
@@ -165,7 +165,7 @@ public abstract class WorkflowProcessInstanceImpl extends 
ProcessInstanceImpl im
         if (nodeInstance.getStringId() == null) {
             // assign new id only if it does not exist as it might already be 
set by marshalling
             // it's important to keep same ids of node instances as they might 
be references e.g. exclusive group
-            ((NodeInstanceImpl) 
nodeInstance).setId(UUID.randomUUID().toString());
+            ((NodeInstanceImpl) nodeInstance).setId(UUIDGenerator.getID());
         }
         this.nodeInstances.add(nodeInstance);
     }
@@ -563,7 +563,7 @@ public abstract class WorkflowProcessInstanceImpl extends 
ProcessInstanceImpl im
 
     private TimerInstance createDurationTimer(long duration) {
         TimerInstance timerInstance = new TimerInstance();
-        timerInstance.setId(UUID.randomUUID().toString());
+        timerInstance.setId(UUIDGenerator.getID());
         timerInstance.setTimerId("-1");
         timerInstance.setDelay(duration);
         timerInstance.setPeriod(0);
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/CompositeNodeInstance.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/CompositeNodeInstance.java
index f07a0bccc0..37c1d0fd28 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/CompositeNodeInstance.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/CompositeNodeInstance.java
@@ -25,10 +25,10 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.node.CompositeNode;
 import org.jbpm.workflow.core.node.EventNode;
@@ -191,7 +191,7 @@ public class CompositeNodeInstance extends 
StateBasedNodeInstance implements Nod
         if (nodeInstance.getStringId() == null) {
             // assign new id only if it does not exist as it might already be 
set by marshalling 
             // it's important to keep same ids of node instances as they might 
be references e.g. exclusive group
-            ((NodeInstanceImpl) 
nodeInstance).setId(UUID.randomUUID().toString());
+            ((NodeInstanceImpl) nodeInstance).setId(UUIDGenerator.getID());
         }
         this.nodeInstances.add(nodeInstance);
     }
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/DynamicUtils.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/DynamicUtils.java
index f7b0f23ab2..e67d04c0b9 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/DynamicUtils.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/DynamicUtils.java
@@ -21,13 +21,13 @@ package org.jbpm.workflow.instance.node;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.UUID;
 import java.util.regex.Matcher;
 
 import org.drools.core.common.InternalWorkingMemory;
 import org.jbpm.process.instance.InternalProcessRuntime;
 import org.jbpm.process.instance.ProcessInstance;
 import org.jbpm.util.PatternConstants;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.instance.WorkflowProcessInstance;
 import org.jbpm.workflow.instance.impl.MVELProcessHelper;
 import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
@@ -94,7 +94,7 @@ public class DynamicUtils {
             String workItemName,
             Map<String, Object> parameters) {
         final KogitoWorkItemImpl workItem = new KogitoWorkItemImpl();
-        workItem.setId(UUID.randomUUID().toString());
+        workItem.setId(UUIDGenerator.getID());
         workItem.setState(WorkItem.ACTIVE);
         workItem.setProcessInstanceId(processInstance.getStringId());
         workItem.setDeploymentId((String) 
ksession.getEnvironment().get(EnvironmentName.DEPLOYMENT_ID));
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/TimerNodeInstance.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/TimerNodeInstance.java
index c095d861bc..ebd9eb8df5 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/TimerNodeInstance.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/TimerNodeInstance.java
@@ -25,11 +25,11 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
-import java.util.UUID;
 
 import org.jbpm.process.core.context.exception.ExceptionScope;
 import org.jbpm.process.instance.InternalProcessRuntime;
 import org.jbpm.process.instance.context.exception.ExceptionScopeInstance;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.node.TimerNode;
 import org.kie.api.runtime.process.EventListener;
@@ -77,7 +77,7 @@ public class TimerNodeInstance extends StateBasedNodeInstance 
implements EventLi
         if (getTimerInstances() == null) {
             addTimerListener();
         }
-        internalSetTimerId(UUID.randomUUID().toString());
+        internalSetTimerId(UUIDGenerator.getID());
         final InternalProcessRuntime processRuntime = (InternalProcessRuntime) 
getProcessInstance().getKnowledgeRuntime().getProcessRuntime();
         //Deffer the timer scheduling to the end of current UnitOfWork 
execution chain
         processRuntime.getUnitOfWorkManager().currentUnitOfWork().intercept(
diff --git 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/WorkItemNodeInstance.java
 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/WorkItemNodeInstance.java
index a2399fba1f..8ce2c3a95d 100755
--- 
a/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/WorkItemNodeInstance.java
+++ 
b/jbpm/jbpm-flow/src/main/java/org/jbpm/workflow/instance/node/WorkItemNodeInstance.java
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.UUID;
 import java.util.function.Function;
 
 import org.drools.core.WorkItemHandlerNotFoundException;
@@ -47,6 +46,7 @@ import 
org.jbpm.process.instance.context.exception.ExceptionScopeInstance;
 import org.jbpm.process.instance.context.variable.VariableScopeInstance;
 import org.jbpm.process.instance.impl.ContextInstanceFactory;
 import org.jbpm.process.instance.impl.ContextInstanceFactoryRegistry;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.Node;
 import org.jbpm.workflow.core.impl.DataAssociation;
 import org.jbpm.workflow.core.impl.NodeIoHelper;
@@ -222,7 +222,7 @@ public class WorkItemNodeInstance extends 
StateBasedNodeInstance implements Even
     protected InternalKogitoWorkItem createWorkItem(WorkItemNode workItemNode) 
{
         Work work = workItemNode.getWork();
         workItem = newWorkItem();
-        workItem.setId(UUID.randomUUID().toString());
+        workItem.setId(UUIDGenerator.getID());
         workItem.setName(work.getName());
         workItem.setProcessInstanceId(getProcessInstance().getStringId());
         workItem.setProcessInstance(this.getKogitoProcessInstance());
diff --git 
a/jbpm/jbpm-flow/src/test/java/org/kie/kogito/process/impl/DefaultProcessInstanceManagerTest.java
 
b/jbpm/jbpm-flow/src/test/java/org/kie/kogito/process/impl/DefaultProcessInstanceManagerTest.java
index d56ece6ab0..de50c2d97b 100644
--- 
a/jbpm/jbpm-flow/src/test/java/org/kie/kogito/process/impl/DefaultProcessInstanceManagerTest.java
+++ 
b/jbpm/jbpm-flow/src/test/java/org/kie/kogito/process/impl/DefaultProcessInstanceManagerTest.java
@@ -18,9 +18,8 @@
  */
 package org.kie.kogito.process.impl;
 
-import java.util.UUID;
-
 import org.jbpm.process.instance.impl.DefaultProcessInstanceManager;
+import org.jbpm.util.UUIDGenerator;
 import org.junit.jupiter.api.Test;
 import org.kie.kogito.internal.process.runtime.KogitoProcessInstance;
 
@@ -34,7 +33,7 @@ public class DefaultProcessInstanceManagerTest {
     public void testCreateProcessInstance() {
         DefaultProcessInstanceManager pim = new 
DefaultProcessInstanceManager();
         final String processId = "processId";
-        final String instanceId = UUID.randomUUID().toString();
+        final String instanceId = UUIDGenerator.getID();
         KogitoProcessInstance kpi = mock(KogitoProcessInstance.class);
         when(kpi.getProcessId()).thenReturn(processId);
         when(kpi.getStringId()).thenReturn(instanceId);
diff --git 
a/jbpm/process-serialization-protobuf/src/main/java/org/kie/kogito/serialization/process/impl/ProtobufProcessInstanceReader.java
 
b/jbpm/process-serialization-protobuf/src/main/java/org/kie/kogito/serialization/process/impl/ProtobufProcessInstanceReader.java
index a182931c15..77e0c0acef 100644
--- 
a/jbpm/process-serialization-protobuf/src/main/java/org/kie/kogito/serialization/process/impl/ProtobufProcessInstanceReader.java
+++ 
b/jbpm/process-serialization-protobuf/src/main/java/org/kie/kogito/serialization/process/impl/ProtobufProcessInstanceReader.java
@@ -28,7 +28,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.UUID;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -42,6 +41,7 @@ import 
org.jbpm.process.instance.impl.humantask.HumanTaskWorkItemImpl;
 import org.jbpm.process.instance.impl.humantask.InternalHumanTaskWorkItem;
 import org.jbpm.process.instance.impl.humantask.Reassignment;
 import org.jbpm.ruleflow.instance.RuleFlowProcessInstance;
+import org.jbpm.util.UUIDGenerator;
 import org.jbpm.workflow.core.node.AsyncEventNodeInstance;
 import org.jbpm.workflow.instance.impl.NodeInstanceImpl;
 import org.jbpm.workflow.instance.node.CompositeContextNodeInstance;
@@ -566,7 +566,7 @@ public class ProtobufProcessInstanceReader {
         } else {
             WorkItemNodeInstance nodeInstance = new WorkItemNodeInstance();
             KogitoWorkItemImpl workItem = new KogitoWorkItemImpl();
-            workItem.setId(UUID.randomUUID().toString());
+            workItem.setId(UUIDGenerator.getID());
             nodeInstance.internalSetWorkItem(workItem);
             return nodeInstance;
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to