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

porcelli 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 561a31b0cb [incubator-kie-issues#1858] Fixed missing data in jobs 
associated with User Tasks Part 1 (#3857)
561a31b0cb is described below

commit 561a31b0cb38ad9f0e99e902fd0e702f23fbf993
Author: Deepak Joseph <[email protected]>
AuthorDate: Thu Mar 13 19:57:44 2025 +0530

    [incubator-kie-issues#1858] Fixed missing data in jobs associated with User 
Tasks Part 1 (#3857)
    
    * Fixed missing data in jobs associated with User Tasks
    
    * Added root fields
    
    * Fixed rootProcessInstanceId and rootProcessId not present for usertasks 
with sla
---
 .../UserTaskInstanceJobDescription.java            | 43 +++++++++++++++++++++-
 .../UserTaskInstanceJobDescriptionBuilder.java     | 41 +++++++++------------
 .../impl/InMemoryUserTaskJobExecutorFactory.java   |  2 +-
 .../instance/impl/WorkflowProcessInstanceImpl.java |  2 +
 .../handler/UserTaskKogitoWorkItemHandler.java     |  1 +
 .../usertask/impl/DefaultUserTaskInstance.java     |  1 +
 6 files changed, 64 insertions(+), 26 deletions(-)

diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescription.java
 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescription.java
index 5fbe5f29ed..242e9648b9 100644
--- 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescription.java
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescription.java
@@ -27,16 +27,35 @@ public class UserTaskInstanceJobDescription implements 
JobDescription {
     private ExpirationTime expirationTime;
     private Integer priority = ProcessInstanceJobDescription.DEFAULT_PRIORITY;
     private String userTaskInstanceId;
+    private String processId;
+    private String processInstanceId;
+    private String nodeInstanceId;
+    private String rootProcessInstanceId;
+    private String rootProcessId;
 
     public UserTaskInstanceJobDescription() {
         // do nothing
     }
 
-    public UserTaskInstanceJobDescription(String id, ExpirationTime 
expirationTime, Integer priority, String userTaskInstanceId) {
+    public UserTaskInstanceJobDescription(
+            String id,
+            ExpirationTime expirationTime,
+            Integer priority,
+            String userTaskInstanceId,
+            String processId,
+            String processInstanceId,
+            String nodeInstanceId,
+            String rootProcessInstanceId,
+            String rootProcessId) {
         this.id = id;
         this.expirationTime = expirationTime;
         this.priority = priority;
         this.userTaskInstanceId = userTaskInstanceId;
+        this.processId = processId;
+        this.processInstanceId = processInstanceId;
+        this.nodeInstanceId = nodeInstanceId;
+        this.rootProcessInstanceId = rootProcessInstanceId;
+        this.rootProcessId = rootProcessId;
     }
 
     @Override
@@ -59,10 +78,30 @@ public class UserTaskInstanceJobDescription implements 
JobDescription {
         return null;
     }
 
-    public String getUserTaskInstanceId() {
+    public String userTaskInstanceId() {
         return userTaskInstanceId;
     }
 
+    public String processId() {
+        return processId;
+    }
+
+    public String processInstanceId() {
+        return processInstanceId;
+    }
+
+    public String nodeInstanceId() {
+        return nodeInstanceId;
+    }
+
+    public String rootProcessInstanceId() {
+        return rootProcessInstanceId;
+    }
+
+    public String rootProcessId() {
+        return rootProcessId;
+    }
+
     public static UserTaskInstanceJobDescriptionBuilder 
newUserTaskInstanceJobDescriptionBuilder() {
         return new UserTaskInstanceJobDescriptionBuilder();
     }
diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
index ad8a4bfba2..0f94d0a96c 100644
--- 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
@@ -18,37 +18,18 @@
  */
 package org.kie.kogito.jobs.descriptors;
 
+import java.util.Map;
 import java.util.UUID;
 
 import org.kie.kogito.jobs.ExpirationTime;
-import org.kie.kogito.jobs.JobDescription;
 
-public class UserTaskInstanceJobDescriptionBuilder implements JobDescription {
+public class UserTaskInstanceJobDescriptionBuilder {
 
     private String id;
     private ExpirationTime expirationTime;
     private Integer priority = ProcessInstanceJobDescription.DEFAULT_PRIORITY;
     private String userTaskInstanceId;
-
-    @Override
-    public String id() {
-        return id;
-    }
-
-    @Override
-    public ExpirationTime expirationTime() {
-        return expirationTime;
-    }
-
-    @Override
-    public Integer priority() {
-        return priority;
-    }
-
-    @Override
-    public String path() {
-        return null;
-    }
+    private Map<String, Object> metadata;
 
     public UserTaskInstanceJobDescriptionBuilder id(String id) {
         this.id = id;
@@ -74,7 +55,21 @@ public class UserTaskInstanceJobDescriptionBuilder 
implements JobDescription {
         return this;
     }
 
+    public UserTaskInstanceJobDescriptionBuilder metadata(Map<String, Object> 
metadata) {
+        this.metadata = metadata;
+        return this;
+    }
+
     public UserTaskInstanceJobDescription build() {
-        return new UserTaskInstanceJobDescription(id, expirationTime, 
priority, userTaskInstanceId);
+        return new UserTaskInstanceJobDescription(
+                id,
+                expirationTime,
+                priority,
+                userTaskInstanceId,
+                (String) this.metadata.get("ProcessId"),
+                (String) this.metadata.get("ProcessInstanceId"),
+                (String) this.metadata.get("NodeInstanceId"),
+                (String) this.metadata.get("RootProcessInstanceId"),
+                (String) this.metadata.get("RootProcessId"));
     }
 }
diff --git 
a/api/kogito-services/src/main/java/org/kie/kogito/services/jobs/impl/InMemoryUserTaskJobExecutorFactory.java
 
b/api/kogito-services/src/main/java/org/kie/kogito/services/jobs/impl/InMemoryUserTaskJobExecutorFactory.java
index 1381928eba..57636aa3b9 100644
--- 
a/api/kogito-services/src/main/java/org/kie/kogito/services/jobs/impl/InMemoryUserTaskJobExecutorFactory.java
+++ 
b/api/kogito-services/src/main/java/org/kie/kogito/services/jobs/impl/InMemoryUserTaskJobExecutorFactory.java
@@ -94,7 +94,7 @@ class SignalUserTaskInstanceOnExpiredTimer implements 
Runnable {
     @Override
     public void run() {
         String jobId = userTaskInstanceJobDescription.id();
-        String userTaskInstanceId = 
userTaskInstanceJobDescription.getUserTaskInstanceId();
+        String userTaskInstanceId = 
userTaskInstanceJobDescription.userTaskInstanceId();
         try {
             Optional<UserTaskInstance> userTaskInstance = 
jobsConfiguration.userTasks().instances().findById(userTaskInstanceId);
             if (userTaskInstance.isEmpty()) {
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 ad63a5c319..905d2f7092 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
@@ -614,6 +614,8 @@ public abstract class WorkflowProcessInstanceImpl extends 
ProcessInstanceImpl im
                         .processInstanceId(getStringId())
                         .processId(getProcessId())
                         .nodeInstanceId(nodeInstanceId)
+                        .rootProcessId(getRootProcessId())
+                        .rootProcessInstanceId(getRootProcessInstanceId())
                         .build();
         JobsService jobsService = 
InternalProcessRuntime.asKogitoProcessRuntime(getKnowledgeRuntime().getProcessRuntime()).getJobsService();
         jobsService.scheduleJob(description);
diff --git 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
index 02b46ecd56..4dabe08091 100644
--- 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
+++ 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
@@ -98,6 +98,7 @@ public class UserTaskKogitoWorkItemHandler extends 
DefaultKogitoWorkItemHandler
         instance.setMetadata("RootProcessId", 
workItem.getProcessInstance().getRootProcessId());
         instance.setMetadata("RootProcessInstanceId", 
workItem.getProcessInstance().getRootProcessInstanceId());
         instance.setMetadata("ParentProcessInstanceId", 
workItem.getProcessInstance().getParentProcessInstanceId());
+        instance.setMetadata("NodeInstanceId", 
workItem.getNodeInstance().getId());
 
         instance.fireInitialStateChange();
         workItem.getParameters().entrySet().stream().filter(e -> 
!HumanTaskNode.TASK_PARAMETERS.contains(e.getKey())).forEach(e -> 
instance.setInput(e.getKey(), e.getValue()));
diff --git 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
index bf60df7187..84ee337f7f 100644
--- 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
+++ 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
@@ -688,6 +688,7 @@ public class DefaultUserTaskInstance implements 
UserTaskInstance {
                     .generateId()
                     .expirationTime(expirationTime)
                     .userTaskInstanceId(this.id)
+                    .metadata(this.metadata)
                     .build());
         }
         return jobs;


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

Reply via email to