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 1474ab9bfc [incubator-kie-issues-1522] Transition object to make 
extensible usertask transition restendpoint (#3708)
1474ab9bfc is described below

commit 1474ab9bfc0d43e99567fcf64a7f072b9f2ff510
Author: Enrique <[email protected]>
AuthorDate: Mon Oct 21 09:21:39 2024 +0200

    [incubator-kie-issues-1522] Transition object to make extensible usertask 
transition restendpoint (#3708)
---
 .../kie/kogito/usertask/model/TransitionInfo.java  | 58 +++++++++++++++++
 .../org/jbpm/bpmn2/StandaloneBPMNProcessTest.java  |  6 --
 .../RestResourceUserTaskQuarkusTemplate.java       |  6 +-
 .../RestResourceUserTaskSpringTemplate.java        |  5 +-
 .../src/main/resources/AddedTask.bpmn}             |  2 +-
 .../java/org/kie/kogito/it/PersistenceTest.java    | 68 ++++++++++++++++++++
 .../org/kie/kogito/it/InfinispanPersistenceIT.java | 75 ----------------------
 7 files changed, 132 insertions(+), 88 deletions(-)

diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/TransitionInfo.java
 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/TransitionInfo.java
new file mode 100644
index 0000000000..c76ce87ce9
--- /dev/null
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/TransitionInfo.java
@@ -0,0 +1,58 @@
+/*
+ * 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 java.util.Collections;
+import java.util.Map;
+
+public class TransitionInfo {
+
+    private String transitionId;
+
+    private Map<String, Object> data;
+
+    public TransitionInfo() {
+        // do nothing
+    }
+
+    public TransitionInfo(String transitionId) {
+        this(transitionId, Collections.emptyMap());
+    }
+
+    public TransitionInfo(String transitionId, Map<String, Object> data) {
+        this.transitionId = transitionId;
+        this.data = data;
+    }
+
+    public Map<String, Object> getData() {
+        return data;
+    }
+
+    public void setData(Map<String, Object> data) {
+        this.data = data;
+    }
+
+    public String getTransitionId() {
+        return transitionId;
+    }
+
+    public void setTransitionId(String transitionId) {
+        this.transitionId = transitionId;
+    }
+}
diff --git 
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java 
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
index 7808821233..010789d20c 100755
--- 
a/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
+++ 
b/jbpm/jbpm-tests/src/test/java/org/jbpm/bpmn2/StandaloneBPMNProcessTest.java
@@ -117,7 +117,6 @@ import 
org.jbpm.test.util.ProcessCompletedCountDownProcessEventListener;
 import org.jbpm.test.utils.ProcessTestHelper;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Timeout;
 import org.kie.api.event.process.ProcessStartedEvent;
 import org.kie.api.io.Resource;
 import org.kie.internal.io.ResourceFactory;
@@ -384,7 +383,6 @@ public class StandaloneBPMNProcessTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Timeout(10)
     public void testEventBasedSplit2() throws Exception {
         ProcessCompletedCountDownProcessEventListener countDownListener = new 
ProcessCompletedCountDownProcessEventListener(2);
         Application app = ProcessTestHelper.newApplication();
@@ -537,7 +535,6 @@ public class StandaloneBPMNProcessTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Timeout(10)
     public void testTimerBoundaryEvent() throws Exception {
         Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("TimerEvent", 1);
@@ -556,7 +553,6 @@ public class StandaloneBPMNProcessTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Timeout(10)
     public void testTimerBoundaryEventInterrupting() {
         Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("TimerEvent", 1);
@@ -697,7 +693,6 @@ public class StandaloneBPMNProcessTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Timeout(10)
     public void testIntermediateCatchEventTimer() {
         Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("timer", 1);
@@ -786,7 +781,6 @@ public class StandaloneBPMNProcessTest extends 
JbpmBpmn2TestCase {
     }
 
     @Test
-    @Timeout(1000)
     public void testTimerStart() throws Exception {
         Application app = ProcessTestHelper.newApplication();
         NodeLeftCountDownProcessEventListener countDownListener = new 
NodeLeftCountDownProcessEventListener("StartProcess", 5);
diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java
index 0c78cff0f3..8a7039263d 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskQuarkusTemplate.java
@@ -79,10 +79,10 @@ public class UserTasksResource {
     @Produces(MediaType.APPLICATION_JSON)
     public UserTaskView transition(
             @PathParam("taskId") String taskId,
-            @QueryParam("transitionId") String transitionId,
             @QueryParam("user") String user,
-            @QueryParam("group") List<String> groups, Map<String, Object> 
data) {
-        return userTaskService.transition(taskId, transitionId, data, 
IdentityProviders.of(user, 
groups)).orElseThrow(UserTaskInstanceNotFoundException::new);
+            @QueryParam("group") List<String> groups, 
+            TransitionInfo transitionInfo) {
+        return userTaskService.transition(taskId, 
transitionInfo.getTransitionId(), transitionInfo.getData(), 
IdentityProviders.of(user, 
groups)).orElseThrow(UserTaskInstanceNotFoundException::new);
     }
 
     @GET
diff --git 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskSpringTemplate.java
 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskSpringTemplate.java
index 87c757d3d7..6ca7d8e002 100644
--- 
a/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskSpringTemplate.java
+++ 
b/kogito-codegen-modules/kogito-codegen-processes/src/main/resources/class-templates/usertask/RestResourceUserTaskSpringTemplate.java
@@ -71,11 +71,10 @@ public class UserTasksResource {
     @PostMapping(value = "/{taskId}/transition")
     public UserTaskView transition(
             @PathVariable("taskId") String taskId,
-            @RequestParam("transitionId") String transitionId,
             @RequestParam("user") String user,
             @RequestParam("group") List<String> groups, 
-            @RequestBody Map<String, Object> data) {
-        return userTaskService.transition(taskId, transitionId, data, 
IdentityProviders.of(user, groups)).orElseThrow(() -> new 
ResponseStatusException(HttpStatus.NOT_FOUND));
+            @RequestBody TransitionInfo transitionInfo) {
+        return userTaskService.transition(taskId, 
transitionInfo.getTransitionId(), transitionInfo.getData(), 
IdentityProviders.of(user, groups)).orElseThrow(() -> new 
ResponseStatusException(HttpStatus.NOT_FOUND));
     }
 
     @GetMapping(value = "/{taskId}/transition", produces = 
MediaType.APPLICATION_JSON_VALUE)
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/main/resources/AddedTask.bpmn2
 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/main/resources/AddedTask.bpmn
similarity index 99%
rename from 
quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/main/resources/AddedTask.bpmn2
rename to 
quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/main/resources/AddedTask.bpmn
index 6d8f8618cd..6668aa4f71 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/main/resources/AddedTask.bpmn2
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/main/resources/AddedTask.bpmn
@@ -16,7 +16,7 @@
   <bpmn2:collaboration id="_4DD91E78-A982-46F9-A427-611946D40403" 
name="Default Collaboration">
     <bpmn2:participant id="_239FEF97-E424-41F3-B3E9-D626D7EC319D" name="Pool 
Participant" processRef="addedtask"/>
   </bpmn2:collaboration>
-  <bpmn2:process id="AddedTask" drools:packageName="com.example" 
drools:version="1.0" drools:adHoc="false" name="addedtask" isExecutable="true" 
processType="Public">
+  <bpmn2:process id="AddedTask" drools:packageName="com.example" 
drools:version="1.0" drools:adHoc="false" name="AddedTask" isExecutable="true" 
processType="Public">
     <bpmn2:sequenceFlow id="_D0E6CA53-1ECE-4F8D-AAF0-829B30A2719F" 
sourceRef="_74EA6719-7F99-48CD-A98E-17D422668B87" 
targetRef="_1D65864A-96AF-44FC-92CE-2073B9FBA7D0">
       <bpmn2:extensionElements>
         <drools:metaData name="isAutoConnection.target">
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/test/java/org/kie/kogito/it/PersistenceTest.java
 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/test/java/org/kie/kogito/it/PersistenceTest.java
index c0d75bce39..d9c94d5c5e 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/test/java/org/kie/kogito/it/PersistenceTest.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-processes-persistence-common/src/test/java/org/kie/kogito/it/PersistenceTest.java
@@ -32,6 +32,7 @@ import org.kie.kogito.Address;
 import org.kie.kogito.AddressType;
 import org.kie.kogito.Person;
 import org.kie.kogito.Status;
+import org.kie.kogito.usertask.model.TransitionInfo;
 
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
@@ -42,11 +43,13 @@ import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Awaitility.await;
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.Matchers.emptyOrNullString;
 
 public abstract class PersistenceTest {
+    private static final String USER_TASK_BASE_PATH = "/usertasks/instance";
 
     public static final Duration TIMEOUT = Duration.ofSeconds(10);
     public static final String PROCESS_ID = "hello";
@@ -59,6 +62,71 @@ public abstract class PersistenceTest {
         RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();
     }
 
+    @Test
+    public void testStartApprovalAuthorized() {
+        // start new approval
+        String id = given()
+                .body("{}")
+                .contentType(ContentType.JSON)
+                .when()
+                .post("/AddedTask")
+                .then()
+                .statusCode(201)
+                .body("id", notNullValue()).extract().path("id");
+        // get all active approvals
+        given()
+                .accept(ContentType.JSON)
+                .when()
+                .get("/AddedTask")
+                .then()
+                .statusCode(200)
+                .body("size()", is(1), "[0].id", is(id));
+
+        // get just started approval
+        given()
+                .accept(ContentType.JSON)
+                .when()
+                .get("/AddedTask/" + id)
+                .then()
+                .statusCode(200)
+                .body("id", is(id));
+
+        // tasks assigned in just started approval
+
+        String userTaskId = given()
+                .basePath(USER_TASK_BASE_PATH)
+                .queryParam("user", "mary")
+                .queryParam("group", "managers")
+                .contentType(ContentType.JSON)
+                .when()
+                .get()
+                .then()
+                .statusCode(200)
+                .extract()
+                .body()
+                .path("[0].id");
+
+        given()
+                .contentType(ContentType.JSON)
+                .basePath(USER_TASK_BASE_PATH)
+                .queryParam("user", "mary")
+                .queryParam("group", "managers")
+                .body(new TransitionInfo("complete"))
+                .when()
+                .post("/{userTaskId}/transition", userTaskId)
+                .then()
+                .statusCode(200);
+
+        // get all active approvals
+        given()
+                .accept(ContentType.JSON)
+                .when()
+                .get("/AddedTask")
+                .then()
+                .statusCode(200)
+                .body("size()", is(1));
+    }
+
     @Test
     void testPersistence() {
         Person person = new Person("Name", 10, BigDecimal.valueOf(5.0), 
Instant.now().truncatedTo(ChronoUnit.MILLIS), 
ZonedDateTime.now(ZoneOffset.UTC));
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/test/java/org/kie/kogito/it/InfinispanPersistenceIT.java
 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/test/java/org/kie/kogito/it/InfinispanPersistenceIT.java
index cc668b0643..fd779ca575 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/test/java/org/kie/kogito/it/InfinispanPersistenceIT.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-processes-persistence/integration-tests-quarkus-processes-infinispan/src/test/java/org/kie/kogito/it/InfinispanPersistenceIT.java
@@ -18,84 +18,9 @@
  */
 package org.kie.kogito.it;
 
-import java.util.Collections;
-
-import org.junit.jupiter.api.Test;
-
 import io.quarkus.test.junit.QuarkusIntegrationTest;
-import io.restassured.http.ContentType;
-
-import static io.restassured.RestAssured.given;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
 
 @QuarkusIntegrationTest
 class InfinispanPersistenceIT extends PersistenceTest {
-    private static final String USER_TASK_BASE_PATH = "/usertasks/instance";
-
-    @Test
-    public void testStartApprovalAuthorized() {
-        // start new approval
-        String id = given()
-                .body("{}")
-                .contentType(ContentType.JSON)
-                .when()
-                .post("/AddedTask")
-                .then()
-                .statusCode(201)
-                .body("id", notNullValue()).extract().path("id");
-        // get all active approvals
-        given()
-                .accept(ContentType.JSON)
-                .when()
-                .get("/AddedTask")
-                .then()
-                .statusCode(200)
-                .body("size()", is(1), "[0].id", is(id));
-
-        // get just started approval
-        given()
-                .accept(ContentType.JSON)
-                .when()
-                .get("/AddedTask/" + id)
-                .then()
-                .statusCode(200)
-                .body("id", is(id));
-
-        // tasks assigned in just started approval
-
-        String userTaskId = given()
-                .basePath(USER_TASK_BASE_PATH)
-                .queryParam("user", "mary")
-                .queryParam("group", "managers")
-                .contentType(ContentType.JSON)
-                .when()
-                .get()
-                .then()
-                .statusCode(200)
-                .extract()
-                .body()
-                .path("[0].id");
-
-        given()
-                .contentType(ContentType.JSON)
-                .basePath(USER_TASK_BASE_PATH)
-                .queryParam("transitionId", "complete")
-                .queryParam("user", "mary")
-                .queryParam("group", "managers")
-                .body(Collections.emptyMap())
-                .when()
-                .post("/{userTaskId}/transition", userTaskId)
-                .then()
-                .statusCode(200);
 
-        // get all active approvals
-        given()
-                .accept(ContentType.JSON)
-                .when()
-                .get("/AddedTask")
-                .then()
-                .statusCode(200)
-                .body("size()", is(1));
-    }
 }


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

Reply via email to