This is an automated email from the ASF dual-hosted git repository.
pefernan 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 7d47e6d310 [incubator-kie-issues#2194] Extract process information
from user task metadata Map (#4152)
7d47e6d310 is described below
commit 7d47e6d310493e56e226214b15e760fda3eb16d7
Author: Pere Fernández <[email protected]>
AuthorDate: Thu Dec 18 16:15:15 2025 +0100
[incubator-kie-issues#2194] Extract process information from user task
metadata Map (#4152)
* [incubator-kie-issues#2194] Extract process information from user task
metadata Map
* - licenses
* - licenses
* - fix tests
---------
Co-authored-by: Pere Fernández <[email protected]>
---
.../jpa/mapper/UserTaskInstanceEntityMapper.java | 35 +++++
.../usertask/jpa/model/TaskProcessInfoEntity.java | 96 ++++++++++++++
.../usertask/jpa/model/UserTaskInstanceEntity.java | 11 ++
.../h2/V1.0.5__jBPM_usertasks_add_process_info.sql | 104 +++++++++++++++
.../V1.0.5__jBPM_usertasks_add_process_info.sql | 61 +++++++++
.../UserTaskInstanceJobDescriptionBuilder.java | 34 ++++-
.../org/kie/kogito/usertask/UserTaskInstance.java | 8 +-
.../org/kie/kogito/usertask/model/ProcessInfo.java | 143 +++++++++++++++++++++
.../org/kie/kogito/usertask/view/UserTaskView.java | 13 ++
.../kogito/event/impl/adapter/AdapterHelper.java | 32 +++--
.../UserTaskStateEventDataEventAdapter.java | 7 +-
.../handler/UserTaskKogitoWorkItemHandler.java | 18 ++-
...erTaskKogitoWorkItemHandlerProcessListener.java | 2 +-
.../usertask/impl/DefaultUserTaskInstance.java | 23 +++-
.../kogito/usertask/impl/UserTaskServiceImpl.java | 1 +
.../org/jbpm/userTask/jpa/it/UserTaskInputs.java | 6 +-
.../jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java | 12 +-
.../jbpm/userTask/jpa/it/UserTaskOutputsIT.java | 6 +-
.../usertask/jpa/it/WsHumanTaskLifeCycleIT.java | 8 +-
.../org/jbpm/userTask/jpa/it/UserTaskInputs.java | 6 +-
.../jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java | 12 +-
.../jbpm/userTask/jpa/it/UserTaskOutputsIT.java | 6 +-
.../usertask/jpa/it/WsHumanTaskLifeCycleIT.java | 6 +-
23 files changed, 584 insertions(+), 66 deletions(-)
diff --git
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
index c183ad0f22..7a5cf9de13 100644
---
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
+++
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
@@ -23,10 +23,12 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import org.jbpm.usertask.jpa.model.TaskProcessInfoEntity;
import org.jbpm.usertask.jpa.model.UserTaskInstanceEntity;
import org.kie.kogito.usertask.UserTaskInstance;
import org.kie.kogito.usertask.impl.DefaultUserTaskInstance;
import org.kie.kogito.usertask.lifecycle.UserTaskState;
+import org.kie.kogito.usertask.model.ProcessInfo;
public class UserTaskInstanceEntityMapper {
@@ -47,6 +49,24 @@ public class UserTaskInstanceEntityMapper {
entity.setExternalReferenceId(userTaskInstance.getExternalReferenceId());
entity.setUserTaskId(userTaskInstance.getUserTaskId());
+ TaskProcessInfoEntity processInfoEntity = entity.getProcessInfo();
+
+ if (processInfoEntity == null) {
+ processInfoEntity = new TaskProcessInfoEntity();
+ entity.setProcessInfo(processInfoEntity);
+ }
+
+ ProcessInfo processInfo = userTaskInstance.getProcessInfo();
+ if (processInfo != null) {
+
processInfoEntity.setProcessInstanceId(processInfo.getProcessInstanceId());
+ processInfoEntity.setProcessId(processInfo.getProcessId());
+
processInfoEntity.setProcessVersion(processInfo.getProcessVersion());
+
+
processInfoEntity.setParentProcessInstanceId(processInfo.getParentProcessInstanceId());
+
processInfoEntity.setRootProcessInstanceId(processInfo.getRootProcessInstanceId());
+ processInfoEntity.setRootProcessId(processInfo.getRootProcessId());
+ }
+
entity.setActualOwner(userTaskInstance.getActualOwner());
entity.setPotentialUsers(Set.copyOf(userTaskInstance.getPotentialUsers()));
entity.setPotentialGroups(Set.copyOf(userTaskInstance.getPotentialGroups()));
@@ -70,6 +90,21 @@ public class UserTaskInstanceEntityMapper {
instance.setTaskDescription(entity.getTaskDescription());
instance.setTaskPriority(entity.getTaskPriority());
+ TaskProcessInfoEntity processInfoEntity = entity.getProcessInfo();
+
+ if (processInfoEntity != null) {
+ ProcessInfo processInfo = ProcessInfo.builder()
+
.withProcessInstanceId(processInfoEntity.getProcessInstanceId())
+ .withProcessId(processInfoEntity.getProcessId())
+ .withProcessVersion(processInfoEntity.getProcessVersion())
+
.withParentProcessInstanceId(processInfoEntity.getParentProcessInstanceId())
+
.withRootProcessInstanceId(processInfoEntity.getRootProcessInstanceId())
+ .withRootProcessId(processInfoEntity.getRootProcessId())
+ .build();
+
+ instance.setProcessInfo(processInfo);
+ }
+
UserTaskState.TerminationType terminationType =
entity.getTerminationType() == null ? null :
UserTaskState.TerminationType.valueOf(entity.getTerminationType());
instance.setStatus(UserTaskState.of(entity.getStatus(),
terminationType));
diff --git
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
new file mode 100644
index 0000000000..0aac9553fa
--- /dev/null
+++
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
@@ -0,0 +1,96 @@
+/*
+ * 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.usertask.jpa.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+
+@Embeddable
+public class TaskProcessInfoEntity {
+
+ @Column(name = "process_instance_id")
+ private String processInstanceId;
+
+ @Column(name = "process_id")
+ private String processId;
+
+ @Column(name = "process_version")
+ private String processVersion;
+
+ @Column(name = "parent_process_instance_id")
+ private String parentProcessInstanceId;
+
+ @Column(name = "root_process_instance_id")
+ private String rootProcessInstanceId;
+
+ @Column(name = "root_process_id")
+ private String rootProcessId;
+
+ public TaskProcessInfoEntity() {
+ }
+
+ public String getProcessInstanceId() {
+ return processInstanceId;
+ }
+
+ public void setProcessInstanceId(String processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ }
+
+ public String getProcessId() {
+ return processId;
+ }
+
+ public void setProcessId(String processId) {
+ this.processId = processId;
+ }
+
+ public String getProcessVersion() {
+ return processVersion;
+ }
+
+ public void setProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ }
+
+ public String getParentProcessInstanceId() {
+ return parentProcessInstanceId;
+ }
+
+ public void setParentProcessInstanceId(String parentProcessInstanceId) {
+ this.parentProcessInstanceId = parentProcessInstanceId;
+ }
+
+ public String getRootProcessInstanceId() {
+ return rootProcessInstanceId;
+ }
+
+ public void setRootProcessInstanceId(String rootProcessInstanceId) {
+ this.rootProcessInstanceId = rootProcessInstanceId;
+ }
+
+ public String getRootProcessId() {
+ return rootProcessId;
+ }
+
+ public void setRootProcessId(String rootProcessId) {
+ this.rootProcessId = rootProcessId;
+ }
+}
diff --git
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
index d8bb19991a..2f3e760c1a 100644
---
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
+++
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
@@ -74,6 +74,9 @@ public class UserTaskInstanceEntity {
@Column(name = "external_reference_id")
private String externalReferenceId;
+ @Embedded
+ private TaskProcessInfoEntity processInfo;
+
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "jbpm_user_tasks_potential_users", joinColumns =
@JoinColumn(name = "task_id", foreignKey = @ForeignKey(name =
"fk_jbpm_user_tasks_potential_users_tid")))
@Column(name = "user_id", nullable = false)
@@ -136,6 +139,14 @@ public class UserTaskInstanceEntity {
this.id = id;
}
+ public TaskProcessInfoEntity getProcessInfo() {
+ return processInfo;
+ }
+
+ public void setProcessInfo(TaskProcessInfoEntity taskProcessInfoEntity) {
+ this.processInfo = taskProcessInfoEntity;
+ }
+
public String getActualOwner() {
return actualOwner;
}
diff --git
a/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
new file mode 100644
index 0000000000..fb4c7c935a
--- /dev/null
+++
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_id VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_version VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN parent_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_id VARCHAR(255);
+
+UPDATE jbpm_user_tasks t
+SET t.process_instance_id = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessInstanceId'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessInstanceId'
+ AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.process_id = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessId'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessId'
+ AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.process_version = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessVersion'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ProcessVersion'
+ AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.parent_process_instance_id = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ParentProcessInstanceId'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'ParentProcessInstanceId'
+ AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.root_process_instance_id = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessInstanceId'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessInstanceId'
+ AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.root_process_id = (
+ SELECT TRIM(BOTH '"' FROM m.metadata_value)
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessId'
+)
+WHERE EXISTS (
+ SELECT 1
+ FROM jbpm_user_tasks_metadata m
+ WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessId'
+ AND m.metadata_value IS NOT NULL
+);
+
diff --git
a/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
new file mode 100644
index 0000000000..5c5249689d
--- /dev/null
+++
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_id VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_version VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN parent_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_id VARCHAR(255);
+
+UPDATE jbpm_user_tasks t
+SET process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessInstanceId'
+ AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET process_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessId'
+ AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET process_version = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessVersion'
+ AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET parent_process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ParentProcessInstanceId'
+ AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET root_process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'RootProcessInstanceId'
+ AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET root_process_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'RootProcessId'
+ AND m.metadata_value IS NOT NULL;
\ No newline at end of file
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 0f94d0a96c..2e03474447 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
@@ -22,6 +22,7 @@ import java.util.Map;
import java.util.UUID;
import org.kie.kogito.jobs.ExpirationTime;
+import org.kie.kogito.usertask.model.ProcessInfo;
public class UserTaskInstanceJobDescriptionBuilder {
@@ -29,6 +30,11 @@ public class UserTaskInstanceJobDescriptionBuilder {
private ExpirationTime expirationTime;
private Integer priority = ProcessInstanceJobDescription.DEFAULT_PRIORITY;
private String userTaskInstanceId;
+ private String processInstanceId;
+ private ProcessInfo processInfo;
+ private String processId;
+ private String rootProcessInstanceId;
+ private String rootProcessId;
private Map<String, Object> metadata;
public UserTaskInstanceJobDescriptionBuilder id(String id) {
@@ -55,6 +61,26 @@ public class UserTaskInstanceJobDescriptionBuilder {
return this;
}
+ public UserTaskInstanceJobDescriptionBuilder processInstanceId(String
processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ return this;
+ }
+
+ public UserTaskInstanceJobDescriptionBuilder processId(String processId) {
+ this.processId = processId;
+ return this;
+ }
+
+ public UserTaskInstanceJobDescriptionBuilder rootProcessInstanceId(String
rootProcessInstanceId) {
+ this.rootProcessInstanceId = rootProcessInstanceId;
+ return this;
+ }
+
+ public UserTaskInstanceJobDescriptionBuilder rootProcessId(String
rootProcessId) {
+ this.rootProcessId = rootProcessId;
+ return this;
+ }
+
public UserTaskInstanceJobDescriptionBuilder metadata(Map<String, Object>
metadata) {
this.metadata = metadata;
return this;
@@ -66,10 +92,10 @@ public class UserTaskInstanceJobDescriptionBuilder {
expirationTime,
priority,
userTaskInstanceId,
- (String) this.metadata.get("ProcessId"),
- (String) this.metadata.get("ProcessInstanceId"),
+ processId,
+ processInstanceId,
(String) this.metadata.get("NodeInstanceId"),
- (String) this.metadata.get("RootProcessInstanceId"),
- (String) this.metadata.get("RootProcessId"));
+ rootProcessInstanceId,
+ rootProcessId);
}
}
diff --git
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
index 49cd332bd2..45a507bb53 100644
--- a/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
+++ b/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
@@ -27,11 +27,7 @@ import org.kie.kogito.auth.IdentityProvider;
import org.kie.kogito.jobs.descriptors.UserTaskInstanceJobDescription;
import org.kie.kogito.usertask.lifecycle.UserTaskLifeCycle;
import org.kie.kogito.usertask.lifecycle.UserTaskState;
-import org.kie.kogito.usertask.model.Attachment;
-import org.kie.kogito.usertask.model.Comment;
-import org.kie.kogito.usertask.model.DeadlineInfo;
-import org.kie.kogito.usertask.model.Notification;
-import org.kie.kogito.usertask.model.Reassignment;
+import org.kie.kogito.usertask.model.*;
public interface UserTaskInstance {
@@ -41,6 +37,8 @@ public interface UserTaskInstance {
UserTaskState getStatus();
+ ProcessInfo getProcessInfo();
+
String getUserTaskId();
boolean hasActualOwner();
diff --git
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java
new file mode 100644
index 0000000000..f6eb13c0f9
--- /dev/null
+++
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java
@@ -0,0 +1,143 @@
+/*
+ * 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.kie.kogito.usertask.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ProcessInfo {
+ private String processInstanceId;
+ private String processId;
+ private String processVersion;
+
+ private String parentProcessInstanceId;
+ private String rootProcessId;
+ private String rootProcessInstanceId;
+
+ private ProcessInfo() {
+ }
+
+ private ProcessInfo(String processInstanceId, String processId, String
processVersion) {
+ this.processInstanceId = processInstanceId;
+ this.processId = processId;
+ this.processVersion = processVersion;
+ }
+
+ public String getProcessInstanceId() {
+ return processInstanceId;
+ }
+
+ public void setProcessInstanceId(String processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ }
+
+ public String getProcessId() {
+ return processId;
+ }
+
+ public void setProcessId(String processId) {
+ this.processId = processId;
+ }
+
+ public String getProcessVersion() {
+ return processVersion;
+ }
+
+ public void setProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ }
+
+ public String getParentProcessInstanceId() {
+ return parentProcessInstanceId;
+ }
+
+ public void setParentProcessInstanceId(String parentProcessInstanceId) {
+ this.parentProcessInstanceId = parentProcessInstanceId;
+ }
+
+ public String getRootProcessId() {
+ return rootProcessId;
+ }
+
+ public void setRootProcessId(String rootProcessId) {
+ this.rootProcessId = rootProcessId;
+ }
+
+ public String getRootProcessInstanceId() {
+ return rootProcessInstanceId;
+ }
+
+ public void setRootProcessInstanceId(String rootProcessInstanceId) {
+ this.rootProcessInstanceId = rootProcessInstanceId;
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ private String processId;
+ private String processVersion;
+ private String processInstanceId;
+
+ private String parentProcessInstanceId;
+ private String rootProcessId;
+ private String rootProcessInstanceId;
+
+ public Builder withProcessId(String processId) {
+ this.processId = processId;
+ return this;
+ }
+
+ public Builder withProcessVersion(String processVersion) {
+ this.processVersion = processVersion;
+ return this;
+ }
+
+ public Builder withProcessInstanceId(String processInstanceId) {
+ this.processInstanceId = processInstanceId;
+ return this;
+ }
+
+ public Builder withParentProcessInstanceId(String
parentProcessInstanceId) {
+ this.parentProcessInstanceId = parentProcessInstanceId;
+ return this;
+ }
+
+ public Builder withRootProcessId(String rootProcessId) {
+ this.rootProcessId = rootProcessId;
+ return this;
+ }
+
+ public Builder withRootProcessInstanceId(String rootProcessInstanceId)
{
+ this.rootProcessInstanceId = rootProcessInstanceId;
+ return this;
+ }
+
+ public ProcessInfo build() {
+ ProcessInfo processInfo = new ProcessInfo(processInstanceId,
processId, processVersion);
+
+ processInfo.setRootProcessInstanceId(rootProcessInstanceId);
+ processInfo.setRootProcessId(rootProcessId);
+ processInfo.setParentProcessInstanceId(parentProcessInstanceId);
+ return processInfo;
+ }
+ }
+
+}
diff --git
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
index 6c7c47f345..1d0922a2ee 100644
---
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
+++
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
@@ -22,7 +22,11 @@ import java.util.Map;
import java.util.Set;
import org.kie.kogito.usertask.lifecycle.UserTaskState;
+import org.kie.kogito.usertask.model.ProcessInfo;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserTaskView {
private String id;
@@ -30,6 +34,7 @@ public class UserTaskView {
private String userTaskId;
private UserTaskState status;
+ private ProcessInfo processInfo;
private String taskName;
private String taskDescription;
@@ -55,6 +60,14 @@ public class UserTaskView {
this.id = id;
}
+ public ProcessInfo getProcessInfo() {
+ return processInfo;
+ }
+
+ public void setProcessInfo(ProcessInfo processInfo) {
+ this.processInfo = processInfo;
+ }
+
public String getUserTaskId() {
return userTaskId;
}
diff --git
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
index 5fe0c4f1c8..11ec932068 100644
---
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
+++
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
@@ -21,11 +21,13 @@ package org.kie.kogito.event.impl.adapter;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import org.kie.kogito.event.process.ProcessInstanceEventMetadata;
import org.kie.kogito.event.usertask.UserTaskInstanceEventMetadata;
import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
import org.kie.kogito.usertask.UserTaskInstance;
+import org.kie.kogito.usertask.model.ProcessInfo;
public class AdapterHelper {
@@ -42,21 +44,27 @@ public class AdapterHelper {
return metadata;
}
- public static Map<String, Object> buildUserTaskMetadata(UserTaskInstance
pi) {
+ public static Map<String, Object> buildUserTaskMetadata(UserTaskInstance
uti) {
Map<String, Object> metadata = new HashMap<>();
-
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA,
pi.getMetadata().get("ProcessInstanceId"));
- metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA,
pi.getMetadata().get("ProcessVersion"));
- metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA,
pi.getMetadata().get("ProcessId"));
-
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA,
String.valueOf(pi.getMetadata().get("ProcessInstanceState")));
- metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA,
pi.getMetadata().get("ProcessType"));
-
metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA,
pi.getMetadata().get("ParentProcessInstanceId"));
- metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA,
pi.getMetadata().get("RootProcessId"));
-
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA,
pi.getMetadata().get("RootProcessInstanceId"));
-
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA,
pi.getId());
-
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_REFERENCE_ID_META_DATA,
pi.getUserTask().getReferenceName());
-
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA,
pi.getStatus().getName());
+ Optional<ProcessInfo> optionalProcessInfo =
Optional.ofNullable(uti.getProcessInfo());
+
+ // Conditionally adding process info metadata, it will only be
available after the user task has been completely initialized
+ optionalProcessInfo.ifPresent(processInfo -> {
+
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA,
processInfo.getProcessInstanceId());
+
metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA,
processInfo.getProcessVersion());
+ metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA,
processInfo.getProcessId());
+
metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA,
processInfo.getParentProcessInstanceId());
+
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA,
processInfo.getRootProcessId());
+
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA,
processInfo.getRootProcessInstanceId());
+
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA,
String.valueOf(uti.getMetadata().get("ProcessInstanceState")));
+ metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA,
uti.getMetadata().get("ProcessType"));
+ });
+
+
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA,
uti.getId());
+
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_REFERENCE_ID_META_DATA,
uti.getUserTask().getReferenceName());
+
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA,
uti.getStatus().getName());
return metadata;
}
diff --git
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
index 9df94e473d..5c6c0d4f8a 100644
---
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
+++
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
@@ -21,11 +21,13 @@ package org.kie.kogito.event.impl.adapter;
import java.util.Date;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import org.kie.kogito.event.DataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent;
import org.kie.kogito.event.usertask.UserTaskInstanceStateEventBody;
import org.kie.kogito.usertask.events.UserTaskStateEvent;
+import org.kie.kogito.usertask.model.ProcessInfo;
public class UserTaskStateEventDataEventAdapter extends
AbstractDataEventAdapter {
@@ -55,12 +57,13 @@ public class UserTaskStateEventDataEventAdapter extends
AbstractDataEventAdapter
.state(event.getNewStatus().getName())
.actualOwner(event.getUserTaskInstance().getActualOwner())
.eventType(isTransition(event) ?
event.getNewStatus().getName() : "Modify")
- .processInstanceId((String)
event.getUserTaskInstance().getMetadata().get("ProcessInstanceId"))
+
.processInstanceId(Optional.ofNullable(event.getUserTaskInstance().getProcessInfo()).map(ProcessInfo::getProcessInstanceId).orElse(null))
.slaDueDate(event.getUserTaskInstance().getSlaDueDate());
UserTaskInstanceStateEventBody body = builder.build();
UserTaskInstanceStateDataEvent utEvent =
- new
UserTaskInstanceStateDataEvent(AdapterHelper.buildSource(getConfig().service(),
(String) event.getUserTaskInstance().getMetadata().get("ProcessId")),
+ new UserTaskInstanceStateDataEvent(
+ AdapterHelper.buildSource(getConfig().service(),
Optional.ofNullable(event.getUserTaskInstance().getProcessInfo()).map(ProcessInfo::getProcessId).orElse(null)),
getConfig().addons().toString(),
event.getEventUser(),
metadata, body);
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 39692cda5c..9495f7859e 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
@@ -35,6 +35,7 @@ import org.kie.kogito.usertask.UserTasks;
import org.kie.kogito.usertask.impl.DefaultUserTaskInstance;
import org.kie.kogito.usertask.impl.lifecycle.DefaultUserTaskLifeCycle;
import org.kie.kogito.usertask.impl.model.DeadlineHelper;
+import org.kie.kogito.usertask.model.ProcessInfo;
import static java.util.Collections.emptyMap;
import static java.util.Optional.ofNullable;
@@ -92,15 +93,20 @@ public class UserTaskKogitoWorkItemHandler extends
DefaultKogitoWorkItemHandler
task.setTaskPriority(priority != null ? priority.toString() :
null);
task.setSlaDueDate(workItem.getNodeInstance().getSlaDueDate());
+ ProcessInfo processInfo = ProcessInfo.builder()
+
.withProcessInstanceId(workItem.getProcessInstance().getId())
+
.withProcessId(workItem.getProcessInstance().getProcessId())
+
.withProcessVersion(workItem.getProcessInstance().getProcessVersion())
+
.withRootProcessInstanceId(workItem.getProcessInstance().getRootProcessInstanceId())
+
.withRootProcessId(workItem.getProcessInstance().getRootProcessId())
+
.withParentProcessInstanceId(workItem.getProcessInstance().getParentProcessInstanceId())
+ .build();
+
+ instance.setProcessInfo(processInfo);
+
Map<String, Object> metadata = new HashMap<>();
- metadata.put("ProcessId",
workItem.getProcessInstance().getProcessId());
metadata.put("ProcessType",
workItem.getProcessInstance().getProcess().getType());
- metadata.put("ProcessVersion",
workItem.getProcessInstance().getProcessVersion());
- metadata.put("ProcessInstanceId",
workItem.getProcessInstance().getId());
metadata.put("ProcessInstanceState",
workItem.getProcessInstance().getState());
- metadata.put("RootProcessId",
workItem.getProcessInstance().getRootProcessId());
- metadata.put("RootProcessInstanceId",
workItem.getProcessInstance().getRootProcessInstanceId());
- metadata.put("ParentProcessInstanceId",
workItem.getProcessInstance().getParentProcessInstanceId());
metadata.put("NodeInstanceId", workItem.getNodeInstance().getId());
metadata.put("Skippable", workItem.getParameters().get(SKIPPABLE));
diff --git
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
index 8f5a2de5d6..b4c89d7c1b 100644
---
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
+++
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
@@ -53,7 +53,7 @@ public class UserTaskKogitoWorkItemHandlerProcessListener
implements UserTaskEve
}
LOG.debug("onUserTaskState {} on complete work item", event);
- String processInstanceId = (String)
event.getUserTaskInstance().getMetadata().get("ProcessInstanceId");
+ String processInstanceId =
event.getUserTaskInstance().getProcessInfo().getProcessInstanceId();
processes.processByProcessInstanceId(processInstanceId).get().instances().findById(processInstanceId).ifPresent(pi
-> {
Map<String, Object> data = new
HashMap<>(event.getUserTaskInstance().getOutputs());
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 15fc3d721f..f6a6733b0b 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
@@ -46,12 +46,7 @@ import org.kie.kogito.usertask.impl.model.DeadlineHelper;
import org.kie.kogito.usertask.lifecycle.UserTaskLifeCycle;
import org.kie.kogito.usertask.lifecycle.UserTaskState;
import org.kie.kogito.usertask.lifecycle.UserTaskTransitionToken;
-import org.kie.kogito.usertask.model.Attachment;
-import org.kie.kogito.usertask.model.Comment;
-import org.kie.kogito.usertask.model.DeadlineInfo;
-import org.kie.kogito.usertask.model.Notification;
-import org.kie.kogito.usertask.model.Reassignment;
-import org.kie.kogito.usertask.model.ScheduleInfo;
+import org.kie.kogito.usertask.model.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -72,6 +67,8 @@ public class DefaultUserTaskInstance implements
UserTaskInstance {
private String userTaskId;
+ private ProcessInfo processInfo;
+
private UserTaskState status;
private String actualOwner;
private String taskName;
@@ -212,6 +209,16 @@ public class DefaultUserTaskInstance implements
UserTaskInstance {
return this.id;
}
+ @Override
+ public ProcessInfo getProcessInfo() {
+ return this.processInfo;
+ }
+
+ public void setProcessInfo(ProcessInfo processInfo) {
+ this.processInfo = processInfo;
+ updatePersistence();
+ }
+
public void setStatus(UserTaskState status) {
this.status = status;
}
@@ -712,6 +719,10 @@ public class DefaultUserTaskInstance implements
UserTaskInstance {
.generateId()
.expirationTime(expirationTime)
.userTaskInstanceId(this.id)
+ .processId(this.processInfo.getProcessId())
+ .processInstanceId(this.processInfo.getProcessInstanceId())
+
.rootProcessInstanceId(this.processInfo.getRootProcessInstanceId())
+ .rootProcessId(this.processInfo.getRootProcessId())
.metadata(this.metadata)
.build());
}
diff --git
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
index 675ea6d943..8e36786592 100644
---
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
+++
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
@@ -57,6 +57,7 @@ public class UserTaskServiceImpl implements UserTaskService {
private UserTaskView toUserTaskView(UserTaskInstance instance) {
UserTaskView view = new UserTaskView();
view.setId(instance.getId());
+ view.setProcessInfo(instance.getProcessInfo());
view.setUserTaskId(instance.getUserTaskId());
view.setStatus(instance.getStatus());
view.setTaskName(instance.getTaskName());
diff --git
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
index 13084ed839..115fba7609 100644
---
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
+++
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
@@ -71,10 +71,10 @@ public class UserTaskInputs extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
Traveller newTraveller = new Traveller("Ned", "Stark",
"[email protected]", "Northern", new Address("main street", "Winterfell",
"10005", "WF"));
diff --git
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
index 5cdfaaf939..6e70e50c5d 100644
---
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
+++
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
@@ -78,10 +78,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1))
.body("metadata.Lifecycle", equalTo("kogito"));
@@ -137,10 +137,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
// Manager is excluded for the secondLineApproval Task, he shouldn't
be able to work on the task
diff --git
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
index 1192545ac6..6ff84d23f3 100644
---
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
+++
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
@@ -71,10 +71,10 @@ public class UserTaskOutputsIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
Traveller newTraveller = new Traveller("Ned", "Stark",
"[email protected]", "Northern", new Address("main street", "Winterfell",
"10005", "WF"));
diff --git
a/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
b/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
index aeadea89fc..34e3addab3 100644
---
a/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
+++
b/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
import org.kie.kogito.testcontainers.quarkus.PostgreSqlQuarkusTestResource;
import org.kie.kogito.usertask.model.TransitionInfo;
+import io.quarkus.test.TestTransaction;
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusIntegrationTest;
import io.restassured.RestAssured;
@@ -41,6 +42,7 @@ import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.Matchers.emptyOrNullString;
@QuarkusIntegrationTest
+@TestTransaction
@QuarkusTestResource(value = PostgreSqlQuarkusTestResource.class,
restrictToAnnotatedClass = true)
public class WsHumanTaskLifeCycleIT {
public static final String USER_TASKS_ENDPOINT = "/usertasks/instance";
@@ -525,12 +527,12 @@ public class WsHumanTaskLifeCycleIT {
.body("status.name", equalTo(state))
.body("taskName", equalTo("Task"))
.body("potentialUsers", hasItems(potentialUsers))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(processId))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.Skippable", equalTo("true"))
.body("metadata.Lifecycle", equalTo("ws-human-task"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(processId))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
}
diff --git
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
index 0357f04023..0565ba610c 100644
---
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
+++
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
@@ -72,10 +72,10 @@ public class UserTaskInputs extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
Traveller newTraveller = new Traveller("Ned", "Stark",
"[email protected]", "Northern", new Address("main street", "Winterfell",
"10005", "WF"));
diff --git
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
index 483035f87c..35614a5768 100644
---
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
+++
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
@@ -79,10 +79,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1))
.body("metadata.Lifecycle", equalTo("kogito"));
@@ -138,10 +138,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
// Manager is excluded for the secondLineApproval Task, he shouldn't
be able to work on the task
diff --git
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
index b89e19989a..35cffb144d 100644
---
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
+++
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
@@ -72,10 +72,10 @@ public class UserTaskOutputsIT extends BaseUserTaskIT {
.body("inputs.traveller.lastName",
equalTo(traveller.getLastName()))
.body("inputs.traveller.email", equalTo(traveller.getEmail()))
.body("inputs.traveller.nationality",
equalTo(traveller.getNationality()))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(PROCESS_ID))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(PROCESS_ID))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
Traveller newTraveller = new Traveller("Ned", "Stark",
"[email protected]", "Northern", new Address("main street", "Winterfell",
"10005", "WF"));
diff --git
a/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
b/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
index 3e5e605131..22eb5fcaa3 100644
---
a/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
+++
b/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
@@ -536,12 +536,12 @@ public class WsHumanTaskLifeCycleIT {
.body("status.name", equalTo(state))
.body("taskName", equalTo("Task"))
.body("potentialUsers", hasItems(potentialUsers))
+ .body("processInfo.processInstanceId", equalTo(pid))
+ .body("processInfo.processId", equalTo(processId))
+ .body("processInfo.processVersion", equalTo("1.0"))
.body("metadata.Skippable", equalTo("true"))
.body("metadata.Lifecycle", equalTo("ws-human-task"))
.body("metadata.ProcessType", equalTo("BPMN"))
- .body("metadata.ProcessVersion", equalTo("1.0"))
- .body("metadata.ProcessId", equalTo(processId))
- .body("metadata.ProcessInstanceId", equalTo(pid))
.body("metadata.ProcessInstanceState", equalTo(1));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]