/* Licensed 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.activiti.engine.test.api.event; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.activiti.engine.delegate.event.ActivitiEventType; import org.activiti.engine.event.EventLogEntry; import org.activiti.engine.impl.persistence.entity.EventLogEntryEntity; import org.activiti.engine.impl.test.PluggableActivitiTestCase; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.test.Deployment; /** * Test variables delete events with storing events {@link EventLogEntryEntity}. * * @author Bassam Al-Sarori */ public class VariableEventsStoreTest extends PluggableActivitiTestCase { private TestVariableEventListenerStore listener; @Deployment(resources = {"org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) public void testStartEndProcessInstanceVariableEvents() throws Exception { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("var1", "value1"); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variables); assertEquals(1, listener.getEventsReceived().size()); assertEquals(ActivitiEventType.VARIABLE_CREATED, listener.getEventsReceived().get(0).getType()); assertEquals(1, managementService.getEventLogEntries(null, null).size()); Task task = taskService.createTaskQuery().processInstanceId( processInstance.getId()).singleResult(); taskService.complete(task.getId()); assertEquals(2, listener.getEventsReceived().size()); assertEquals(ActivitiEventType.VARIABLE_DELETED, listener.getEventsReceived().get(1).getType()); assertEquals(2, managementService.getEventLogEntries(null, null).size()); } public void testTaskInstanceVariableEvents() throws Exception { Task task = taskService.newTask(); taskService.saveTask(task); taskService.setVariableLocal(task.getId(), "myVar", "value"); assertEquals(1, listener.getEventsReceived().size()); assertEquals(ActivitiEventType.VARIABLE_CREATED, listener.getEventsReceived().get(0).getType()); assertEquals(1, managementService.getEventLogEntries(null, null).size()); taskService.removeVariableLocal(task.getId(), "myVar"); assertEquals(2, listener.getEventsReceived().size()); assertEquals(ActivitiEventType.VARIABLE_DELETED, listener.getEventsReceived().get(1).getType()); assertEquals(2, managementService.getEventLogEntries(null, null).size()); // bulk insert delete var test Map<String, String> vars = new HashMap<String, String>(); vars.put("myVar", "value"); vars.put("myVar2", "value"); taskService.setVariablesLocal(task.getId(), vars); taskService.removeVariablesLocal(task.getId(), Arrays.asList("myVar", "myVar2")); assertEquals(6, listener.getEventsReceived().size()); assertEquals(6, managementService.getEventLogEntries(null, null).size()); taskService.complete(task.getId()); historyService.deleteHistoricTaskInstance(task.getId()); } @Override protected void initializeServices() { super.initializeServices(); listener = new TestVariableEventListenerStore(); processEngineConfiguration.getEventDispatcher().addEventListener(listener); } @Override protected void tearDown() throws Exception { super.tearDown(); if (listener != null) { listener.clearEventsReceived(); processEngineConfiguration.getEventDispatcher().removeEventListener(listener); // cleanup for (EventLogEntry eventLogEntry : managementService.getEventLogEntries(null, null)) { managementService.deleteEventLogEntry(eventLogEntry.getLogNumber()); } } } }