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]