Search in sources :

Example 6 with SignalThrowingEventListener

use of org.activiti.engine.impl.bpmn.helper.SignalThrowingEventListener in project Activiti by Activiti.

the class SignalThrowingEventListenerTest method testThrowSignalInNewTransaction.

/**
	 * Test signal throwing when a job failed and the retries are decremented, affectively
	 * starting a new transaction. 
	 */
@Deployment
public void testThrowSignalInNewTransaction() throws Exception {
    SignalThrowingEventListener listener = null;
    try {
        listener = new SignalThrowingEventListener();
        listener.setSignalName("Signal");
        listener.setProcessInstanceScope(true);
        processEngineConfiguration.getEventDispatcher().addEventListener(listener, ActivitiEventType.JOB_RETRIES_DECREMENTED);
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("testSignal");
        assertNotNull(processInstance);
        Job signalJob = managementService.createJobQuery().processInstanceId(processInstance.getId()).singleResult();
        try {
            managementService.executeJob(signalJob.getId());
            fail("Exception expected");
        } catch (ActivitiException ae) {
        // Ignore, expected exception
        }
        Job failedJob = managementService.createJobQuery().withException().processInstanceId(processInstance.getId()).singleResult();
        assertNotNull(failedJob);
        assertEquals(2, failedJob.getRetries());
        // One retry should have triggered dispatching of a retry-decrement event
        assertEquals(1, taskService.createTaskQuery().processInstanceId(processInstance.getId()).count());
        try {
            managementService.executeJob(failedJob.getId());
            fail("Exception expected");
        } catch (ActivitiException ae) {
            // Ignore, expected exception
            assertEquals(2, taskService.createTaskQuery().processInstanceId(processInstance.getId()).count());
        }
    } finally {
        processEngineConfiguration.getEventDispatcher().removeEventListener(listener);
    }
}
Also used : ActivitiException(org.activiti.engine.ActivitiException) SignalThrowingEventListener(org.activiti.engine.impl.bpmn.helper.SignalThrowingEventListener) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) Job(org.activiti.engine.runtime.Job) Deployment(org.activiti.engine.test.Deployment)

Aggregations

SignalThrowingEventListener (org.activiti.engine.impl.bpmn.helper.SignalThrowingEventListener)6 ProcessInstance (org.activiti.engine.runtime.ProcessInstance)5 Deployment (org.activiti.engine.test.Deployment)5 Task (org.activiti.engine.task.Task)3 ActivitiException (org.activiti.engine.ActivitiException)2 Job (org.activiti.engine.runtime.Job)2 ActivitiIllegalArgumentException (org.activiti.engine.ActivitiIllegalArgumentException)1 BaseDelegateEventListener (org.activiti.engine.impl.bpmn.helper.BaseDelegateEventListener)1 ErrorThrowingEventListener (org.activiti.engine.impl.bpmn.helper.ErrorThrowingEventListener)1 MessageThrowingEventListener (org.activiti.engine.impl.bpmn.helper.MessageThrowingEventListener)1