This is an automated email from the ASF dual-hosted git repository.
mweiler 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 09b10a6e9b [kie-issues#2014] Ensure user tasks gets completed after
PIM (#3967)
09b10a6e9b is described below
commit 09b10a6e9bb50c06932b9c8faf7dd3bfa29993be
Author: Martin Weiler <[email protected]>
AuthorDate: Mon Jul 14 13:41:50 2025 -0600
[kie-issues#2014] Ensure user tasks gets completed after PIM (#3967)
* [kie-issues#2014] Ensure user tasks gets completed after PIM
* Test case for PIM with tasks
---
.../jdbc/AbstractProcessInstancesIT.java | 34 ++++++++++++++++++++++
...erTaskKogitoWorkItemHandlerProcessListener.java | 3 +-
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git
a/addons/common/persistence/jdbc/src/test/java/org/kie/persistence/jdbc/AbstractProcessInstancesIT.java
b/addons/common/persistence/jdbc/src/test/java/org/kie/persistence/jdbc/AbstractProcessInstancesIT.java
index db89f60c6e..02e0fe0d6f 100644
---
a/addons/common/persistence/jdbc/src/test/java/org/kie/persistence/jdbc/AbstractProcessInstancesIT.java
+++
b/addons/common/persistence/jdbc/src/test/java/org/kie/persistence/jdbc/AbstractProcessInstancesIT.java
@@ -251,6 +251,40 @@ abstract class AbstractProcessInstancesIT {
}
+ @Test
+ void testMigrateTaskFlow() {
+ BpmnProcess processV1 = createProcess(getDataSource(), lock(),
"BPMN2-UserTask.bpmn2");
+ BpmnProcess processV2 = createProcess(getDataSource(), lock(),
"BPMN2-UserTask-v2.bpmn2");
+ ProcessInstance<BpmnVariables> processInstance =
processV1.createInstance(BpmnVariables.create(singletonMap("test", "test")));
+ processInstance.start();
+
+ assertThat(processInstance.status()).isEqualTo(STATE_ACTIVE);
+ assertThat(processInstance.description()).isEqualTo("BPMN2-UserTask");
+
+ JDBCProcessInstances processInstancesV1 = (JDBCProcessInstances)
processV1.instances();
+ assertThat(processInstancesV1.exists(processInstance.id())).isTrue();
+ verify(processInstancesV1).create(any(), any());
+
+ assertThat(processInstance.description()).isEqualTo("BPMN2-UserTask");
+
+ processV1.instances().migrateProcessInstances("BPMN2_UserTask", "2.0",
processInstance.id());
+
+ JDBCProcessInstances processInstancesV2 = (JDBCProcessInstances)
processV2.instances();
+ assertThat(processInstancesV2.exists(processInstance.id())).isTrue();
+
+ processInstance = (ProcessInstance<BpmnVariables>)
processInstancesV2.findById(processInstance.id()).get();
+ WorkItem workItem = processInstance.workItems(securityPolicy).get(0);
+ assertThat(workItem).isNotNull();
+ assertThat(workItem.getParameters()).containsEntry("ActorId", "john");
+
+ processInstance.completeWorkItem(workItem.getId(), null,
securityPolicy);
+ assertThat(processInstance.status()).isEqualTo(STATE_COMPLETED);
+
+ processInstancesV2 = (JDBCProcessInstances) processV2.instances();
+ verify(processInstancesV2, times(1)).remove(processInstance.id());
+ assertEmpty(processV2.instances());
+ }
+
@Test
public void testRemove() {
BpmnProcess process = createProcess(getDataSource(), lock(),
"BPMN2-UserTask.bpmn2");
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 116eb8716f..8f5a2de5d6 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,10 +53,9 @@ public class UserTaskKogitoWorkItemHandlerProcessListener
implements UserTaskEve
}
LOG.debug("onUserTaskState {} on complete work item", event);
- String processId = (String)
event.getUserTaskInstance().getMetadata().get("ProcessId");
String processInstanceId = (String)
event.getUserTaskInstance().getMetadata().get("ProcessInstanceId");
-
processes.processById(processId).instances().findById(processInstanceId).ifPresent(pi
-> {
+
processes.processByProcessInstanceId(processInstanceId).get().instances().findById(processInstanceId).ifPresent(pi
-> {
Map<String, Object> data = new
HashMap<>(event.getUserTaskInstance().getOutputs());
data.put("ActorId", event.getUserTaskInstance().getActualOwner());
data.put("Notify", false);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]