From 69b0faaf0a3f024879d242679ccdb924bac32976 Mon Sep 17 00:00:00 2001 From: "martin.grofcik" Date: Fri, 25 Apr 2014 11:00:15 +0200 Subject: [PATCH] Entity created Event for sub process is fired twice. --- .../persistence/entity/ExecutionEntity.java | 5 --- .../api/event/ProcessInstanceEventsTest.java | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) mode change 100644 => 100755 modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java mode change 100644 => 100755 modules/activiti-engine/src/test/java/org/activiti/engine/test/api/event/ProcessInstanceEventsTest.java diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java old mode 100644 new mode 100755 index f1d0d7de7d..791f115f0d --- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java +++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/persistence/entity/ExecutionEntity.java @@ -268,11 +268,6 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut subProcessInstance.setProcessDefinition((ProcessDefinitionImpl) processDefinition); subProcessInstance.setProcessInstance(subProcessInstance); - if (Context.getProcessEngineConfiguration() != null && Context.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) { - Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent( - ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_CREATED, subProcessInstance)); - } - Context.getCommandContext().getHistoryManager() .recordSubProcessInstanceStart(this, subProcessInstance); diff --git a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/event/ProcessInstanceEventsTest.java b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/event/ProcessInstanceEventsTest.java old mode 100644 new mode 100755 index cbea246a72..d0f47c8639 --- a/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/event/ProcessInstanceEventsTest.java +++ b/modules/activiti-engine/src/test/java/org/activiti/engine/test/api/event/ProcessInstanceEventsTest.java @@ -114,6 +114,38 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { listener.clearEventsReceived(); } + /** + * Test create, update and delete events of process instances. + */ + @Deployment(resources = {"org/activiti/engine/test/api/runtime/nestedSubProcess.bpmn20.xml", + "org/activiti/engine/test/api/runtime/subProcess.bpmn20.xml"}) + public void testSubProcessInstanceEvents() throws Exception { + ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("nestedSimpleSubProcess"); + + assertNotNull(processInstance); + + // Check create-event one main process the second one Scope execution, and the third one subprocess + assertEquals(3, listener.getEventsReceived().size()); + assertTrue(listener.getEventsReceived().get(0) instanceof ActivitiEntityEvent); + + ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0); + assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType()); + assertEquals(processInstance.getId(), ((ProcessInstance) event.getEntity()).getId()); + assertEquals(processInstance.getId(), event.getProcessInstanceId()); + assertEquals(processInstance.getId(), event.getExecutionId()); + assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId()); + + event = (ActivitiEntityEvent) listener.getEventsReceived().get(1); + assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType()); + assertEquals(processInstance.getId(), ((ProcessInstance) event.getEntity()).getParentId()); + + event = (ActivitiEntityEvent) listener.getEventsReceived().get(2); + assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType()); + assertEquals("simpleSubProcess", ((ExecutionEntity) event.getEntity()).getProcessDefinition().getKey()); + + listener.clearEventsReceived(); + } + /** * Test process with signals start. */ -- GitLab