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

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


The following commit(s) were added to refs/heads/main by this push:
     new ff89364f4 [Fix #1995] Setting last update when pi is created (#1996)
ff89364f4 is described below

commit ff89364f4d1950c71d0fc9589985ad2589450f1d
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Wed Feb 21 14:33:54 2024 +0100

    [Fix #1995] Setting last update when pi is created (#1996)
---
 .../merger/ProcessInstanceErrorDataEventMerger.java        |  2 +-
 .../index/storage/merger/ProcessInstanceEventMerger.java   |  5 ++++-
 .../storage/merger/ProcessInstanceNodeDataEventMerger.java |  2 +-
 .../merger/ProcessInstanceStateDataEventMerger.java        |  2 +-
 .../merger/ProcessInstanceVariableDataEventMerger.java     |  7 +------
 .../index/jpa/storage/ProcessInstanceEntityStorage.java    | 14 ++++++++------
 6 files changed, 16 insertions(+), 16 deletions(-)

diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceErrorDataEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceErrorDataEventMerger.java
index 6466c4e71..87b656643 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceErrorDataEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceErrorDataEventMerger.java
@@ -30,8 +30,8 @@ public class ProcessInstanceErrorDataEventMerger extends 
ProcessInstanceEventMer
 
     @Override
     public ProcessInstance merge(ProcessInstance pi, 
ProcessInstanceDataEvent<?> data) {
-        pi = getOrNew(pi, data);
         ProcessInstanceErrorDataEvent event = (ProcessInstanceErrorDataEvent) 
data;
+        pi = getOrNew(pi, data, event.getData().getEventDate());
         ProcessInstanceError error = new ProcessInstanceError();
         error.setMessage(event.getData().getErrorMessage());
         error.setNodeDefinitionId(event.getData().getNodeDefinitionId());
diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceEventMerger.java
index 7da0072eb..440d4d6c1 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceEventMerger.java
@@ -19,17 +19,20 @@
 package org.kie.kogito.index.storage.merger;
 
 import java.util.ArrayList;
+import java.util.Date;
 
 import org.kie.kogito.event.process.ProcessInstanceDataEvent;
+import org.kie.kogito.index.DateTimeUtils;
 import org.kie.kogito.index.model.ProcessInstance;
 
 public abstract class ProcessInstanceEventMerger implements 
Merger<ProcessInstanceDataEvent<?>, ProcessInstance> {
 
-    protected ProcessInstance getOrNew(ProcessInstance pi, 
ProcessInstanceDataEvent<?> event) {
+    protected ProcessInstance getOrNew(ProcessInstance pi, 
ProcessInstanceDataEvent<?> event, Date date) {
         if (pi == null) {
             pi = new ProcessInstance();
             pi.setId(event.getKogitoProcessInstanceId());
             pi.setProcessId(event.getKogitoProcessId());
+            pi.setLastUpdate(DateTimeUtils.toZonedDateTime(date));
             pi.setMilestones(new ArrayList<>());
             pi.setNodes(new ArrayList<>());
         }
diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
index f3442d24b..d800dfd22 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceNodeDataEventMerger.java
@@ -47,8 +47,8 @@ public class ProcessInstanceNodeDataEventMerger extends 
ProcessInstanceEventMerg
 
     @Override
     public ProcessInstance merge(ProcessInstance pi, 
ProcessInstanceDataEvent<?> data) {
-        pi = getOrNew(pi, data);
         ProcessInstanceNodeDataEvent event = (ProcessInstanceNodeDataEvent) 
data;
+        pi = getOrNew(pi, data, event.getData().getEventDate());
 
         List<NodeInstance> nodeInstances = 
Optional.ofNullable(pi.getNodes()).orElse(new ArrayList<>());
 
diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceStateDataEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceStateDataEventMerger.java
index db8096540..b49036fb0 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceStateDataEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceStateDataEventMerger.java
@@ -39,8 +39,8 @@ public class ProcessInstanceStateDataEventMerger extends 
ProcessInstanceEventMer
 
     @Override
     public ProcessInstance merge(ProcessInstance pi, 
ProcessInstanceDataEvent<?> data) {
-        pi = getOrNew(pi, data);
         ProcessInstanceStateDataEvent event = (ProcessInstanceStateDataEvent) 
data;
+        pi = getOrNew(pi, data, event.getData().getEventDate());
         LOGGER.debug("Value before merging: {}", pi);
         pi.setId(event.getData().getProcessInstanceId());
         pi.setVersion(event.getData().getProcessVersion());
diff --git 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceVariableDataEventMerger.java
 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceVariableDataEventMerger.java
index d6102ec7b..b536a15f0 100644
--- 
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceVariableDataEventMerger.java
+++ 
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceVariableDataEventMerger.java
@@ -23,22 +23,17 @@ import 
org.kie.kogito.event.process.ProcessInstanceVariableDataEvent;
 import org.kie.kogito.event.process.ProcessInstanceVariableEventBody;
 import org.kie.kogito.index.json.JsonUtils;
 import org.kie.kogito.index.model.ProcessInstance;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
 public class ProcessInstanceVariableDataEventMerger extends 
ProcessInstanceEventMerger {
 
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(ProcessInstanceVariableDataEventMerger.class);
-
-    @SuppressWarnings("unchecked")
     @Override
     public ProcessInstance merge(ProcessInstance pi, 
ProcessInstanceDataEvent<?> data) {
-        pi = getOrNew(pi, data);
         ProcessInstanceVariableDataEvent event = 
(ProcessInstanceVariableDataEvent) data;
         ProcessInstanceVariableEventBody body = event.getData();
+        pi = getOrNew(pi, data, body.getEventDate());
         pi.setVariables(JsonUtils.mergeVariable(body.getVariableName(), 
body.getVariableValue(), pi.getVariables()));
         return pi;
     }
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
index 5ae222d0b..5ea98dda3 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessInstanceEntityStorage.java
@@ -20,6 +20,7 @@ package org.kie.kogito.index.jpa.storage;
 
 import java.time.ZonedDateTime;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.Set;
 
 import org.kie.kogito.event.process.ProcessInstanceErrorDataEvent;
@@ -93,11 +94,12 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
         indexVariable(event.getData());
     }
 
-    private ProcessInstanceEntity findOrInit(String processId, String 
processInstanceId) {
+    private ProcessInstanceEntity findOrInit(String processId, String 
processInstanceId, Date date) {
         return repository.findByIdOptional(processInstanceId).orElseGet(() -> {
             ProcessInstanceEntity pi = new ProcessInstanceEntity();
             pi.setProcessId(processId);
             pi.setId(processInstanceId);
+            pi.setLastUpdate(toZonedDateTime(date));
             pi.setNodes(new ArrayList<>());
             pi.setMilestones(new ArrayList<>());
             repository.persist(pi);
@@ -106,7 +108,7 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
     }
 
     private void indexError(ProcessInstanceErrorEventBody error) {
-        ProcessInstanceEntity pi = findOrInit(error.getProcessId(), 
error.getProcessInstanceId());
+        ProcessInstanceEntity pi = findOrInit(error.getProcessId(), 
error.getProcessInstanceId(), error.getEventDate());
         ProcessInstanceErrorEntity errorEntity = pi.getError();
         if (errorEntity == null) {
             errorEntity = new ProcessInstanceErrorEntity();
@@ -118,7 +120,7 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
     }
 
     private void indexNode(ProcessInstanceNodeEventBody data) {
-        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId());
+        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId(), data.getEventDate());
         pi.getNodes().stream().filter(n -> 
n.getId().equals(data.getNodeInstanceId())).findAny().ifPresentOrElse(n -> 
updateNode(n, data), () -> createNode(pi, data));
         if ("MilestoneNode".equals(data.getNodeType())) {
             pi.getMilestones().stream().filter(n -> 
n.getId().equals(data.getNodeInstanceId())).findAny().ifPresentOrElse(n -> 
updateMilestone(n, data), () -> createMilestone(pi, data));
@@ -171,12 +173,12 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
     }
 
     private void indexSLA(ProcessInstanceSLAEventBody data) {
-        findOrInit(data.getProcessId(), data.getProcessInstanceId());
+        findOrInit(data.getProcessId(), data.getProcessInstanceId(), 
data.getEventDate());
         repository.flush();
     }
 
     private void indexState(ProcessInstanceStateEventBody data, Set<String> 
addons, String endpoint) {
-        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId());
+        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId(), data.getEventDate());
         pi.setVersion(data.getProcessVersion());
         pi.setProcessName(data.getProcessName());
         pi.setRootProcessInstanceId(data.getRootProcessInstanceId());
@@ -199,7 +201,7 @@ public class ProcessInstanceEntityStorage extends 
AbstractJPAStorageFetcher<Stri
     }
 
     private void indexVariable(ProcessInstanceVariableEventBody data) {
-        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId());
+        ProcessInstanceEntity pi = findOrInit(data.getProcessId(), 
data.getProcessInstanceId(), data.getEventDate());
         pi.setVariables(JsonUtils.mergeVariable(data.getVariableName(), 
data.getVariableValue(), pi.getVariables()));
         repository.flush();
     }


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

Reply via email to