This is an automated email from the ASF dual-hosted git repository.
egonzalez 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 42d3a4ed23 [incubator-kie-issues-1518] Testing external reference
between user tasks and processes. (#3702)
42d3a4ed23 is described below
commit 42d3a4ed2301d675d61015343a6cb7237770c1dc
Author: Enrique <[email protected]>
AuthorDate: Mon Oct 14 10:13:17 2024 +0200
[incubator-kie-issues-1518] Testing external reference between user tasks
and processes. (#3702)
---
.../process/impl/AbstractProcessInstance.java | 2 +-
.../org/kie/kogito/codegen/tests/UserTaskIT.java | 53 +++++++++++++++++-----
2 files changed, 42 insertions(+), 13 deletions(-)
diff --git
a/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java
b/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java
index 99f32900da..106208afb0 100644
---
a/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java
+++
b/jbpm/jbpm-flow/src/main/java/org/kie/kogito/process/impl/AbstractProcessInstance.java
@@ -539,7 +539,7 @@ public abstract class AbstractProcessInstance<T extends
Model> implements Proces
workItem.getPhaseStatus(),
workItem.getParameters(),
workItem.getResults(),
- workItem.getParameter(KogitoWorkItem.PARAMETER_UNIQUE_TASK_ID)
+ ":" + workItem.getExternalReferenceId());
+ workItem.getExternalReferenceId());
}
private boolean enforce(KogitoWorkItem kogitoWorkItem, Policy... policies)
{
diff --git
a/kogito-codegen-modules/kogito-codegen-processes-integration-tests/src/test/java/org/kie/kogito/codegen/tests/UserTaskIT.java
b/kogito-codegen-modules/kogito-codegen-processes-integration-tests/src/test/java/org/kie/kogito/codegen/tests/UserTaskIT.java
index 01f5b50521..150c3d62ba 100644
---
a/kogito-codegen-modules/kogito-codegen-processes-integration-tests/src/test/java/org/kie/kogito/codegen/tests/UserTaskIT.java
+++
b/kogito-codegen-modules/kogito-codegen-processes-integration-tests/src/test/java/org/kie/kogito/codegen/tests/UserTaskIT.java
@@ -47,7 +47,6 @@ import org.kie.kogito.process.ProcessInstance;
import org.kie.kogito.process.Processes;
import org.kie.kogito.process.VariableViolationException;
import org.kie.kogito.process.WorkItem;
-import org.kie.kogito.usertask.UserTask;
import org.kie.kogito.usertask.UserTaskConfig;
import org.kie.kogito.usertask.UserTaskInstance;
import org.kie.kogito.usertask.UserTaskInstanceNotAuthorizedException;
@@ -108,17 +107,16 @@ public class UserTaskIT extends AbstractCodegenIT {
UserTasks userTasks = app.get(UserTasks.class);
- UserTask userTask_1 =
userTasks.userTaskById(getUserTaskId(wi_1.getExternalReferenceId()));
- UserTaskInstance userTaskInstance_1 =
userTask_1.instances().findById(getUserTaskInstanceId(wi_1.getExternalReferenceId())).get();
+ UserTaskInstance userTaskInstance_1 =
userTasks.instances().findById(wi_1.getExternalReferenceId()).get();
assertThat(userTaskInstance_1).isNotNull();
List<UserTaskInstance> userTaskList =
userTasks.instances().findByIdentity(IdentityProviders.of("mary"));
assertThat(userTaskList).hasSize(1);
- userTaskList =
userTask_1.instances().findByIdentity(IdentityProviders.of("invalid"));
+ userTaskList =
userTasks.instances().findByIdentity(IdentityProviders.of("invalid"));
assertThat(userTaskList).hasSize(0);
- userTaskList =
userTask_1.instances().findByIdentity(IdentityProviders.of("john"));
+ userTaskList =
userTasks.instances().findByIdentity(IdentityProviders.of("john"));
assertThat(userTaskList).hasSize(1);
userTaskInstance_1 = userTaskList.get(0);
@@ -132,8 +130,7 @@ public class UserTaskIT extends AbstractCodegenIT {
assertThat(workItems.get(0).getName()).isEqualTo("SecondTask");
WorkItem wi_2 = workItems.get(0);
- UserTask userTask_2 =
userTasks.userTaskById(getUserTaskId(wi_2.getExternalReferenceId()));
- UserTaskInstance userTaskInstance_2 =
userTask_2.instances().findById(getUserTaskInstanceId(wi_2.getExternalReferenceId())).get();
+ UserTaskInstance userTaskInstance_2 =
userTasks.instances().findById(wi_2.getExternalReferenceId()).get();
assertThat(userTaskInstance_2).isNotNull();
userTaskList =
userTasks.instances().findByIdentity(IdentityProviders.of("john"));
@@ -147,12 +144,44 @@ public class UserTaskIT extends AbstractCodegenIT {
assertThat(workItemTransitionEvents).hasSize(8);
}
- private String getUserTaskInstanceId(String externalReference) {
- return externalReference.split(":")[1];
- }
+ @Test
+ public void testDoubleLinkUserTaskProcesses() throws Exception {
+
+ Application app =
generateCodeProcessesOnly("usertask/UserTasksProcess.bpmn2");
+ assertThat(app).isNotNull();
+
+ // we wired user tasks and processes
+
app.config().get(UserTaskConfig.class).userTaskEventListeners().listeners().add(new
UserTaskKogitoWorkItemHandlerProcessListener(app.get(Processes.class)));
+
+ Process<? extends Model> p =
app.get(Processes.class).processById("UserTasksProcess");
+
+ Model m = p.createModel();
+ Map<String, Object> parameters = new HashMap<>();
+ m.fromMap(parameters);
+
+ ProcessInstance<?> processInstance = p.createInstance(m);
+ processInstance.start();
+
+
assertThat(processInstance.status()).isEqualTo(ProcessInstance.STATE_ACTIVE);
+
+ List<WorkItem> workItems = processInstance.workItems();
+ assertThat(workItems).hasSize(1);
+ assertThat(workItems.get(0).getName()).isEqualTo("FirstTask");
+ WorkItem wi_1 = workItems.get(0);
- private String getUserTaskId(String externalReference) {
- return externalReference.split(":")[0];
+ UserTasks userTasks = app.get(UserTasks.class);
+
+ UserTaskInstance userTaskInstance_1 =
userTasks.instances().findById(wi_1.getExternalReferenceId()).get();
+ assertThat(userTaskInstance_1).isNotNull();
+
+ List<UserTaskInstance> userTaskList =
userTasks.instances().findByIdentity(IdentityProviders.of("mary"));
+ assertThat(userTaskList).hasSize(1);
+ // now we check the external reference properly sets one to the other
+ Optional<UserTaskInstance> utLinked =
userTasks.instances().findById(wi_1.getExternalReferenceId());
+
assertThat(utLinked).isPresent().get().extracting(UserTaskInstance::getExternalReferenceId).isEqualTo(wi_1.getId());
+
assertThat(wi_1.getExternalReferenceId()).isEqualTo(utLinked.get().getId());
+
+ processInstance.abort();
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]