Search in sources :

Example 6 with ActivitiEntityEvent

use of org.activiti.engine.delegate.event.ActivitiEntityEvent in project Activiti by Activiti.

the class AttachmentEventsTest method testAttachmentEntityEvents.

/**
	 * Test create, update and delete events of attachments on a task/process.
	 */
@Deployment(resources = { "org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" })
public void testAttachmentEntityEvents() throws Exception {
    if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.ACTIVITY)) {
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
        Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
        assertNotNull(task);
        // Create link-attachment
        Attachment attachment = taskService.createAttachment("test", task.getId(), processInstance.getId(), "attachment name", "description", "http://activiti.org");
        assertNull(attachment.getUserId());
        assertEquals(2, listener.getEventsReceived().size());
        ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
        assertEquals(processInstance.getId(), event.getProcessInstanceId());
        assertEquals(processInstance.getId(), event.getExecutionId());
        assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
        Attachment attachmentFromEvent = (Attachment) event.getEntity();
        assertEquals(attachment.getId(), attachmentFromEvent.getId());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
        assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
        assertEquals(processInstance.getId(), event.getProcessInstanceId());
        assertEquals(processInstance.getId(), event.getExecutionId());
        assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
        attachmentFromEvent = (Attachment) event.getEntity();
        assertEquals(attachment.getId(), attachmentFromEvent.getId());
        listener.clearEventsReceived();
        // Create binary attachment
        Authentication.setAuthenticatedUserId("testuser");
        attachment = taskService.createAttachment("test", task.getId(), processInstance.getId(), "attachment name", "description", new ByteArrayInputStream("test".getBytes()));
        assertNotNull(attachment.getUserId());
        assertEquals("testuser", attachment.getUserId());
        assertEquals(2, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
        assertEquals(processInstance.getId(), event.getProcessInstanceId());
        assertEquals(processInstance.getId(), event.getExecutionId());
        assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
        attachmentFromEvent = (Attachment) event.getEntity();
        assertEquals(attachment.getId(), attachmentFromEvent.getId());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
        assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
        listener.clearEventsReceived();
        // Update attachment
        attachment = taskService.getAttachment(attachment.getId());
        attachment.setDescription("Description");
        taskService.saveAttachment(attachment);
        assertEquals(1, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_UPDATED, event.getType());
        assertEquals(processInstance.getId(), event.getProcessInstanceId());
        assertEquals(processInstance.getId(), event.getExecutionId());
        assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
        attachmentFromEvent = (Attachment) event.getEntity();
        assertEquals(attachment.getId(), attachmentFromEvent.getId());
        assertEquals("Description", attachmentFromEvent.getDescription());
        listener.clearEventsReceived();
        // Finally, delete attachment
        taskService.deleteAttachment(attachment.getId());
        assertEquals(1, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
        assertEquals(processInstance.getId(), event.getProcessInstanceId());
        assertEquals(processInstance.getId(), event.getExecutionId());
        assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
        attachmentFromEvent = (Attachment) event.getEntity();
        assertEquals(attachment.getId(), attachmentFromEvent.getId());
    }
}
Also used : Task(org.activiti.engine.task.Task) ByteArrayInputStream(java.io.ByteArrayInputStream) ActivitiEntityEvent(org.activiti.engine.delegate.event.ActivitiEntityEvent) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) Attachment(org.activiti.engine.task.Attachment) Deployment(org.activiti.engine.test.Deployment)

Example 7 with ActivitiEntityEvent

use of org.activiti.engine.delegate.event.ActivitiEntityEvent in project Activiti by Activiti.

the class CommentEventsTest method testCommentEntityEventsStandaloneTask.

public void testCommentEntityEventsStandaloneTask() throws Exception {
    if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
        Task task = null;
        try {
            task = taskService.newTask();
            taskService.saveTask(task);
            assertNotNull(task);
            // Create link-comment
            Comment comment = taskService.addComment(task.getId(), null, "comment");
            assertEquals(2, listener.getEventsReceived().size());
            ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
            assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
            assertNull(event.getProcessInstanceId());
            assertNull(event.getExecutionId());
            assertNull(event.getProcessDefinitionId());
            Comment commentFromEvent = (Comment) event.getEntity();
            assertEquals(comment.getId(), commentFromEvent.getId());
            event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
            assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
            listener.clearEventsReceived();
            // Finally, delete comment
            taskService.deleteComment(comment.getId());
            assertEquals(1, listener.getEventsReceived().size());
            event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
            assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
            assertNull(event.getProcessInstanceId());
            assertNull(event.getExecutionId());
            assertNull(event.getProcessDefinitionId());
            commentFromEvent = (Comment) event.getEntity();
            assertEquals(comment.getId(), commentFromEvent.getId());
        } finally {
            if (task != null && task.getId() != null) {
                taskService.deleteTask(task.getId());
                historyService.deleteHistoricTaskInstance(task.getId());
            }
        }
    }
}
Also used : Comment(org.activiti.engine.task.Comment) Task(org.activiti.engine.task.Task) ActivitiEntityEvent(org.activiti.engine.delegate.event.ActivitiEntityEvent)

Example 8 with ActivitiEntityEvent

use of org.activiti.engine.delegate.event.ActivitiEntityEvent in project Activiti by Activiti.

the class TaskEventsTest method testDeleteEventDoesNotDispathComplete.

/**
	 * Check events related to process instance delete and standalone task delete. 
	 */
@Deployment(resources = { "org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" })
public void testDeleteEventDoesNotDispathComplete() throws Exception {
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
    assertNotNull(processInstance);
    listener.clearEventsReceived();
    Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
    assertNotNull(task);
    // Delete process, should delete task as well, but not complete
    runtimeService.deleteProcessInstance(processInstance.getId(), "testing task delete events");
    assertEquals(1, listener.getEventsReceived().size());
    ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
    assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
    assertTrue(event.getEntity() instanceof Task);
    Task taskFromEvent = (Task) event.getEntity();
    assertEquals(task.getId(), taskFromEvent.getId());
    assertExecutionDetails(event, processInstance);
    try {
        task = taskService.newTask();
        task.setCategory("123");
        task.setDescription("Description");
        taskService.saveTask(task);
        listener.clearEventsReceived();
        // Delete standalone task, only a delete-event should be dispatched
        taskService.deleteTask(task.getId());
        assertEquals(1, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
    } finally {
        if (task != null) {
            String taskId = task.getId();
            task = taskService.createTaskQuery().taskId(taskId).singleResult();
            if (task != null) {
                // If task still exists, delete it to have a clean DB after test
                taskService.deleteTask(taskId);
            }
            historyService.deleteHistoricTaskInstance(taskId);
        }
    }
}
Also used : Task(org.activiti.engine.task.Task) ActivitiEntityEvent(org.activiti.engine.delegate.event.ActivitiEntityEvent) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) Deployment(org.activiti.engine.test.Deployment)

Example 9 with ActivitiEntityEvent

use of org.activiti.engine.delegate.event.ActivitiEntityEvent in project Activiti by Activiti.

the class TaskEventsTest method testStandaloneTaskEvents.

/**
	 * Check all events for tasks not related to a process-instance 
	 */
public void testStandaloneTaskEvents() throws Exception {
    Task task = null;
    try {
        task = taskService.newTask();
        task.setCategory("123");
        task.setDescription("Description");
        taskService.saveTask(task);
        assertEquals(3, listener.getEventsReceived().size());
        ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        Task taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
        assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(2);
        assertEquals(ActivitiEventType.TASK_CREATED, event.getType());
        listener.clearEventsReceived();
        // Update task
        taskService.setOwner(task.getId(), "owner");
        assertEquals(1, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.ENTITY_UPDATED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertEquals("owner", taskFromEvent.getOwner());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
        listener.clearEventsReceived();
        // Assign task
        taskService.setAssignee(task.getId(), "kermit");
        assertEquals(2, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.TASK_ASSIGNED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertEquals("kermit", taskFromEvent.getAssignee());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
        assertEquals(ActivitiEventType.ENTITY_UPDATED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
        listener.clearEventsReceived();
        // Complete task
        taskService.complete(task.getId());
        assertEquals(2, listener.getEventsReceived().size());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
        assertEquals(ActivitiEventType.TASK_COMPLETED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
        event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
        assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
        assertTrue(event.getEntity() instanceof Task);
        taskFromEvent = (Task) event.getEntity();
        assertEquals(task.getId(), taskFromEvent.getId());
        assertNull(event.getProcessDefinitionId());
        assertNull(event.getProcessInstanceId());
        assertNull(event.getExecutionId());
    } finally {
        if (task != null) {
            String taskId = task.getId();
            task = taskService.createTaskQuery().taskId(taskId).singleResult();
            if (task != null) {
                // If task still exists, delete it to have a clean DB after test
                taskService.deleteTask(taskId);
            }
            historyService.deleteHistoricTaskInstance(taskId);
        }
    }
}
Also used : Task(org.activiti.engine.task.Task) ActivitiEntityEvent(org.activiti.engine.delegate.event.ActivitiEntityEvent)

Example 10 with ActivitiEntityEvent

use of org.activiti.engine.delegate.event.ActivitiEntityEvent in project Activiti by Activiti.

the class IdentityLinkEventsTest method testTaskIdentityLinks.

/**
	 * Check identity links on process instances. 
	 */
@Deployment(resources = { "org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml" })
public void testTaskIdentityLinks() throws Exception {
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
    Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
    assertNotNull(task);
    // Add identity link
    taskService.addCandidateUser(task.getId(), "kermit");
    taskService.addCandidateGroup(task.getId(), "sales");
    // Three events are received, since the user link on the task also creates an involvment in the process
    assertEquals(6, listener.getEventsReceived().size());
    ActivitiEntityEvent event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
    assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
    assertTrue(event.getEntity() instanceof IdentityLink);
    IdentityLink link = (IdentityLink) event.getEntity();
    assertEquals("kermit", link.getUserId());
    assertEquals("candidate", link.getType());
    assertEquals(task.getId(), link.getTaskId());
    assertEquals(task.getExecutionId(), event.getExecutionId());
    assertEquals(task.getProcessDefinitionId(), event.getProcessDefinitionId());
    assertEquals(task.getProcessInstanceId(), event.getProcessInstanceId());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
    assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
    assertEquals("kermit", link.getUserId());
    assertEquals("candidate", link.getType());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(4);
    assertEquals(ActivitiEventType.ENTITY_CREATED, event.getType());
    assertTrue(event.getEntity() instanceof IdentityLink);
    link = (IdentityLink) event.getEntity();
    assertEquals("sales", link.getGroupId());
    assertEquals("candidate", link.getType());
    assertEquals(task.getId(), link.getTaskId());
    assertEquals(task.getExecutionId(), event.getExecutionId());
    assertEquals(task.getProcessDefinitionId(), event.getProcessDefinitionId());
    assertEquals(task.getProcessInstanceId(), event.getProcessInstanceId());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(5);
    assertEquals(ActivitiEventType.ENTITY_INITIALIZED, event.getType());
    assertEquals("sales", link.getGroupId());
    assertEquals("candidate", link.getType());
    listener.clearEventsReceived();
    // Deleting process should delete identity link
    runtimeService.deleteProcessInstance(processInstance.getId(), "test");
    assertEquals(3, listener.getEventsReceived().size());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(0);
    assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(1);
    assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
    event = (ActivitiEntityEvent) listener.getEventsReceived().get(2);
    assertEquals(ActivitiEventType.ENTITY_DELETED, event.getType());
}
Also used : Task(org.activiti.engine.task.Task) ActivitiEntityEvent(org.activiti.engine.delegate.event.ActivitiEntityEvent) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) IdentityLink(org.activiti.engine.task.IdentityLink) Deployment(org.activiti.engine.test.Deployment)

Aggregations

ActivitiEntityEvent (org.activiti.engine.delegate.event.ActivitiEntityEvent)31 Deployment (org.activiti.engine.test.Deployment)19 ProcessInstance (org.activiti.engine.runtime.ProcessInstance)17 Task (org.activiti.engine.task.Task)15 Attachment (org.activiti.engine.task.Attachment)5 ActivitiEvent (org.activiti.engine.delegate.event.ActivitiEvent)4 ProcessDefinition (org.activiti.engine.repository.ProcessDefinition)4 HashMap (java.util.HashMap)3 Job (org.activiti.engine.runtime.Job)3 IdentityLink (org.activiti.engine.task.IdentityLink)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 SimulationEvent (org.activiti.crystalball.simulator.SimulationEvent)2 ActivitiProcessStartedEvent (org.activiti.engine.delegate.event.ActivitiProcessStartedEvent)2 ExecutionEntity (org.activiti.engine.impl.persistence.entity.ExecutionEntity)2 Comment (org.activiti.engine.task.Comment)2 Calendar (java.util.Calendar)1 Date (java.util.Date)1 DelegateExecution (org.activiti.engine.delegate.DelegateExecution)1 ActivitiCancelledEvent (org.activiti.engine.delegate.event.ActivitiCancelledEvent)1 Group (org.activiti.engine.identity.Group)1