diff --git a/activiti-engine/pom.xml b/activiti-engine/pom.xml index 62a1039735e3d1e0b8ea8281164dfde2a71851be..bd462aad327f5e8ae86b60ce407c7f190ff22e9b 100644 --- a/activiti-engine/pom.xml +++ b/activiti-engine/pom.xml @@ -168,7 +168,7 @@ org.apache.maven.plugins - maven-surefire-plugin + maven--plugin **/*TestCase.java diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/pom.xml b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..da103728c34b1a928025b6820f75c3897d4e99c2 --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/pom.xml @@ -0,0 +1,75 @@ + + + + activiti-spring-conformance-tests + org.activiti + 7.0.0-SNAPSHOT + + 4.0.0 + + activiti-spring-conformance-variables + jar + Activiti Spring :: Conformance Variables + Activiti Spring :: Conformance Variables + + + + org.activiti + activiti-spring-conformance-util + + + org.activiti.api + activiti-api-process-runtime + + + org.activiti.api + activiti-api-task-runtime + + + org.activiti.api + activiti-api-runtime-shared + + + org.activiti.api + activiti-api-task-model + + + org.activiti.api + activiti-api-process-model + + + org.activiti.api + activiti-api-model-shared + + + org.activiti + activiti-engine + + + org.activiti + activiti-spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.slf4j + slf4j-api + + + com.h2database + h2 + test + + + org.springframework.boot + spring-boot-starter-test + test + + + + + \ No newline at end of file diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/Application.java b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/Application.java new file mode 100644 index 0000000000000000000000000000000000000000..a47d241b89fc2aef18ac6c25423c53abe31d81a2 --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/Application.java @@ -0,0 +1,13 @@ +package org.activiti.spring.conformance.variables; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class); + } + +} diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/TaskVariablesTest.java b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/TaskVariablesTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0c2edef1b4ba57a87ff8aeab23933a9a0be21b93 --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/TaskVariablesTest.java @@ -0,0 +1,172 @@ +package org.activiti.spring.conformance.variables; + +import org.activiti.api.process.model.ProcessInstance; +import org.activiti.api.process.model.builders.ProcessPayloadBuilder; +import org.activiti.api.process.runtime.ProcessAdminRuntime; +import org.activiti.api.process.runtime.ProcessRuntime; +import org.activiti.api.runtime.shared.query.Page; +import org.activiti.api.runtime.shared.query.Pageable; +import org.activiti.api.task.model.Task; +import org.activiti.api.task.model.builders.GetTaskVariablesPayloadBuilder; +import org.activiti.api.task.model.builders.SetTaskVariablesPayloadBuilder; +import org.activiti.api.task.runtime.TaskRuntime; +import org.activiti.api.model.shared.model.VariableInstance; +import org.activiti.spring.conformance.util.security.SecurityUtil; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.activiti.spring.conformance.variables.VariablesRuntimeTestConfiguration.collectedEvents; +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) +public class TaskVariablesTest { + + private final String processKey = "usertaskas-b5300a4b-8950-4486-ba20-a8d775a3d75d"; + + @Autowired + private ProcessRuntime processRuntime; + + @Autowired + private TaskRuntime taskRuntime; + + @Autowired + private SecurityUtil securityUtil; + + @Autowired + private ProcessAdminRuntime processAdminRuntime; + + @Before + public void cleanUp() { + collectedEvents.clear(); + } + + @Test + public void shouldGetSameNamesAndValues() { + + securityUtil.logInAs("user1"); + + ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder + .start() + .withProcessDefinitionKey(processKey) + .withBusinessKey("my-business-key") + .withName("my-process-instance-name") + .build()); + + Page tasks = taskRuntime.tasks(Pageable.of(0, 50)); + Task task = tasks.getContent().get(0); + assertThat(tasks.getTotalItems()).isEqualTo(1); + + Map variablesMap = new HashMap<>(); + variablesMap.put("one", "variableOne"); + variablesMap.put("two", 2); + taskRuntime.setVariables(new SetTaskVariablesPayloadBuilder().withVariables(variablesMap).withTaskId(task.getId()).build()); + + List variableInstanceList = taskRuntime.variables(new GetTaskVariablesPayloadBuilder().withTaskId(task.getId()).build()); + VariableInstance variableOne = variableInstanceList.get(0); + String valueOne = variableOne.getValue(); + assertThat(valueOne).isEqualTo("variableOne"); + String nameOne = variableOne.getName(); + assertThat(nameOne).isEqualTo("one"); + } + + @Test + public void shouldGetTaskIdAndProcessInstanceId() { + + securityUtil.logInAs("user1"); + + ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder + .start() + .withProcessDefinitionKey(processKey) + .withBusinessKey("my-business-key") + .withName("my-process-instance-name") + .build()); + + Page tasks = taskRuntime.tasks(Pageable.of(0, 50)); + Task task = tasks.getContent().get(0); + assertThat(tasks.getTotalItems()).isEqualTo(1); + + Map variablesMap = new HashMap<>(); + variablesMap.put("one", "variableOne"); + variablesMap.put("two", 2); + taskRuntime.setVariables(new SetTaskVariablesPayloadBuilder().withVariables(variablesMap).withTaskId(task.getId()).build()); + + List variableInstanceList = taskRuntime.variables(new GetTaskVariablesPayloadBuilder().withTaskId(task.getId()).build()); + VariableInstance variableOne = variableInstanceList.get(0); + + assertThat(variableOne.getTaskId()).isEqualTo(task.getId()); + assertThat(variableOne.getProcessInstanceId()).isEqualTo(processInstance.getId()); + } + + @Test + public void shouldBeTaskVariable() { + securityUtil.logInAs("user1"); + + ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder + .start() + .withProcessDefinitionKey(processKey) + .withBusinessKey("my-business-key") + .withName("my-process-instance-name") + .build()); + + Page tasks = taskRuntime.tasks(Pageable.of(0, 50)); + Task task = tasks.getContent().get(0); + assertThat(tasks.getTotalItems()).isEqualTo(1); + + Map variablesMap = new HashMap<>(); + variablesMap.put("one", "variableOne"); + variablesMap.put("two", 2); + taskRuntime.setVariables(new SetTaskVariablesPayloadBuilder().withVariables(variablesMap).withTaskId(task.getId()).build()); + + List variableInstanceList = taskRuntime.variables(new GetTaskVariablesPayloadBuilder().withTaskId(task.getId()).build()); + VariableInstance variableOne = variableInstanceList.get(0); + + assertThat(variableOne.isTaskVariable()).isTrue(); + } + + @Test + public void shouldGetRightVariableType(){ + securityUtil.logInAs("user1"); + + ProcessInstance processInstance = processRuntime.start(ProcessPayloadBuilder + .start() + .withProcessDefinitionKey(processKey) + .withBusinessKey("my-business-key") + .withName("my-process-instance-name") + .build()); + + Page tasks = taskRuntime.tasks(Pageable.of(0, 50)); + Task task = tasks.getContent().get(0); + assertThat(tasks.getTotalItems()).isEqualTo(1); + + Map variablesMap = new HashMap<>(); + variablesMap.put("one", "variableOne"); + variablesMap.put("two", 2); + taskRuntime.setVariables(new SetTaskVariablesPayloadBuilder().withVariables(variablesMap).withTaskId(task.getId()).build()); + + List variableInstanceList = taskRuntime.variables(new GetTaskVariablesPayloadBuilder().withTaskId(task.getId()).build()); + VariableInstance variableOne = variableInstanceList.get(0); + VariableInstance variableTwo = variableInstanceList.get(1); + assertThat(variableOne.getType()).isEqualTo("string"); + assertThat(variableTwo.getType()).isEqualTo("integer"); + } + + @After + public void cleanup() { + securityUtil.logInAs("admin"); + Page processInstancePage = processAdminRuntime.processInstances(Pageable.of(0, 50)); + for (ProcessInstance pi : processInstancePage.getContent()) { + processAdminRuntime.delete(ProcessPayloadBuilder.delete(pi.getId())); + } + } + +} diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/VariablesRuntimeTestConfiguration.java b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/VariablesRuntimeTestConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..df7300963da0284675b312cd1e60eef7efe6bb99 --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/java/org/activiti/spring/conformance/variables/VariablesRuntimeTestConfiguration.java @@ -0,0 +1,120 @@ +package org.activiti.spring.conformance.variables; + +import org.activiti.api.model.shared.event.RuntimeEvent; +import org.activiti.api.model.shared.event.VariableCreatedEvent; +import org.activiti.api.model.shared.event.VariableDeletedEvent; +import org.activiti.api.model.shared.event.VariableUpdatedEvent; +import org.activiti.api.process.model.events.BPMNActivityCancelledEvent; +import org.activiti.api.process.model.events.BPMNActivityCompletedEvent; +import org.activiti.api.process.model.events.BPMNActivityStartedEvent; +import org.activiti.api.process.model.events.BPMNSequenceFlowTakenEvent; +import org.activiti.api.process.runtime.events.*; +import org.activiti.api.process.runtime.events.listener.BPMNElementEventListener; +import org.activiti.api.process.runtime.events.listener.ProcessRuntimeEventListener; +import org.activiti.api.runtime.shared.events.VariableEventListener; +import org.activiti.api.task.runtime.events.*; +import org.activiti.api.task.runtime.events.listener.TaskEventListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Bean; + +import java.util.ArrayList; +import java.util.List; + +public class VariablesRuntimeTestConfiguration { + + private static final Logger LOGGER = LoggerFactory.getLogger(VariablesRuntimeTestConfiguration.class); + + public static List collectedEvents = new ArrayList<>(); + + + @Bean + public BPMNElementEventListener bpmnActivityStartedListener() { + return bpmnActivityStartedEvent -> collectedEvents.add(bpmnActivityStartedEvent); + } + + @Bean + public BPMNElementEventListener bpmnActivityCompletedListener() { + return bpmnActivityCompletedEvent -> collectedEvents.add(bpmnActivityCompletedEvent); + } + + @Bean + public BPMNElementEventListener bpmnActivityCancelledListener() { + return bpmnActivityCancelledEvent -> collectedEvents.add(bpmnActivityCancelledEvent); + } + + @Bean + public BPMNElementEventListener bpmnSequenceFlowTakenListener() { + return bpmnSequenceFlowTakenEvent -> collectedEvents.add(bpmnSequenceFlowTakenEvent); + } + + @Bean + public ProcessRuntimeEventListener processCreatedListener() { + return processCreatedEvent -> collectedEvents.add(processCreatedEvent); + } + + @Bean + public ProcessRuntimeEventListener processStartedListener() { + return processStartedEvent -> collectedEvents.add(processStartedEvent); + } + + @Bean + public ProcessRuntimeEventListener processCompletedListener() { + return processCompletedEvent -> collectedEvents.add(processCompletedEvent); + } + + @Bean + public ProcessRuntimeEventListener processResumedListener() { + return processResumedEvent -> collectedEvents.add(processResumedEvent); + } + + @Bean + public ProcessRuntimeEventListener processSuspendedListener() { + return processSuspendedEvent -> collectedEvents.add(processSuspendedEvent); + } + + @Bean + public ProcessRuntimeEventListener processCancelledListener() { + return processCancelledEvent -> collectedEvents.add(processCancelledEvent); + } + + @Bean + public VariableEventListener variableCreatedEventListener() { + return variableCreatedEvent -> collectedEvents.add(variableCreatedEvent); + } + + @Bean + public VariableEventListener variableDeletedEventListener() { + return variableDeletedEvent -> collectedEvents.add(variableDeletedEvent); + } + + @Bean + public VariableEventListener variableUpdatedEventListener() { + return variableUpdatedEvent -> collectedEvents.add(variableUpdatedEvent); + } + + @Bean + public TaskEventListener taskCreatedEventListener() { + return taskCreatedEvent -> collectedEvents.add(taskCreatedEvent); + } + + @Bean + public TaskEventListener taskUpdatedEventListener() { + return taskUpdatedEvent -> collectedEvents.add(taskUpdatedEvent); + } + + @Bean + public TaskEventListener taskCompletedEventListener() { + return taskCompletedEvent -> collectedEvents.add(taskCompletedEvent); + } + + @Bean + public TaskEventListener taskSuspendedEventListener() { + return taskSuspendedEvent -> collectedEvents.add(taskSuspendedEvent); + } + + @Bean + public TaskEventListener taskAssignedEventListener() { + return taskAssignedEvent -> collectedEvents.add(taskAssignedEvent); + } +} diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-assignee-followed-group1.bpmn20.xml b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-assignee-followed-group1.bpmn20.xml new file mode 100755 index 0000000000000000000000000000000000000000..54b8158562c5d8a0961c7af2d29e6814d5f38c4a --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-assignee-followed-group1.bpmn20.xml @@ -0,0 +1,66 @@ + + + + + + SequenceFlow_1uccvwa + + + + + SequenceFlow_0le1m49 + + + + SequenceFlow_1uccvwa + SequenceFlow_151v2cg + + + SequenceFlow_151v2cg + SequenceFlow_0le1m49 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-candidate-group.bpmn20.xml b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-candidate-group.bpmn20.xml new file mode 100755 index 0000000000000000000000000000000000000000..01895a7a2d0ecfb22a7671d0dcaace1fd6258f0e --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-candidate-group.bpmn20.xml @@ -0,0 +1,51 @@ + + + + + + SequenceFlow_10vblge + + + + SequenceFlow_0vf8cap + + + + SequenceFlow_10vblge + SequenceFlow_0vf8cap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-group1-followed-group2.bpmn20.xml b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-group1-followed-group2.bpmn20.xml new file mode 100755 index 0000000000000000000000000000000000000000..2ede89311b7b69aa01e6ce1d78535624b7a843f2 --- /dev/null +++ b/activiti-spring-conformance-tests/activiti-spring-conformance-variables/src/test/resources/processes/user-task-group1-followed-group2.bpmn20.xml @@ -0,0 +1,66 @@ + + + + + + SequenceFlow_052072h + + + + + SequenceFlow_16g2n05 + + + + SequenceFlow_052072h + SequenceFlow_0cyfmaw + + + SequenceFlow_0cyfmaw + SequenceFlow_16g2n05 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/activiti-spring-conformance-tests/pom.xml b/activiti-spring-conformance-tests/pom.xml index e0b554406e8057a560e479adb3d143a6b0c4379a..96e4738615cdf022cf758c664814eda335eec793 100644 --- a/activiti-spring-conformance-tests/pom.xml +++ b/activiti-spring-conformance-tests/pom.xml @@ -23,5 +23,6 @@ activiti-spring-conformance-set3 activiti-spring-conformance-set4 activiti-spring-conformance-set5 + activiti-spring-conformance-variables