Search in sources :

Example 81 with Job

use of org.activiti.engine.runtime.Job in project Activiti by Activiti.

the class JobExecutorCmdExceptionTest method testJobCommandsWith2Exceptions.

public void testJobCommandsWith2Exceptions() {
    commandExecutor.execute(new Command<String>() {

        public String execute(CommandContext commandContext) {
            MessageEntity message = createTweetExceptionMessage();
            commandContext.getJobEntityManager().send(message);
            return message.getId();
        }
    });
    Job job = managementService.createJobQuery().singleResult();
    assertEquals(3, job.getRetries());
    try {
        managementService.executeJob(job.getId());
        fail("exception expected");
    } catch (Exception e) {
    // exception expected;
    }
    job = managementService.createJobQuery().singleResult();
    assertEquals(2, job.getRetries());
    try {
        managementService.executeJob(job.getId());
        fail("exception expected");
    } catch (Exception e) {
    // exception expected;
    }
    job = managementService.createJobQuery().singleResult();
    assertEquals(1, job.getRetries());
    managementService.executeJob(job.getId());
}
Also used : MessageEntity(org.activiti.engine.impl.persistence.entity.MessageEntity) CommandContext(org.activiti.engine.impl.interceptor.CommandContext) Job(org.activiti.engine.runtime.Job)

Example 82 with Job

use of org.activiti.engine.runtime.Job in project Activiti by Activiti.

the class JobExecutorCmdHappyTest method testJobCommandsWithMessage.

public void testJobCommandsWithMessage() {
    CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
    String jobId = commandExecutor.execute(new Command<String>() {

        public String execute(CommandContext commandContext) {
            MessageEntity message = createTweetMessage("i'm coding a test");
            commandContext.getJobEntityManager().send(message);
            return message.getId();
        }
    });
    Job job = managementService.createJobQuery().singleResult();
    assertNotNull(job);
    assertEquals(jobId, job.getId());
    assertEquals(0, tweetHandler.getMessages().size());
    managementService.executeJob(job.getId());
    assertEquals("i'm coding a test", tweetHandler.getMessages().get(0));
    assertEquals(1, tweetHandler.getMessages().size());
}
Also used : MessageEntity(org.activiti.engine.impl.persistence.entity.MessageEntity) CommandContext(org.activiti.engine.impl.interceptor.CommandContext) CommandExecutor(org.activiti.engine.impl.interceptor.CommandExecutor) Job(org.activiti.engine.runtime.Job)

Example 83 with Job

use of org.activiti.engine.runtime.Job in project Activiti by Activiti.

the class ProcessInstanceSuspensionTest method testJobsNotVisisbleToAcquisitionIfInstanceSuspended.

@Deployment(resources = { "org/activiti/engine/test/db/oneJobProcess.bpmn20.xml" })
public void testJobsNotVisisbleToAcquisitionIfInstanceSuspended() {
    ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().singleResult();
    ProcessInstance pi = runtimeService.startProcessInstanceByKey(pd.getKey());
    // now there is one job:
    // now there is one job:
    Job job = managementService.createJobQuery().singleResult();
    assertNotNull(job);
    makeSureJobDue(job);
    // the acquirejobs command sees the job:
    AcquiredJobEntities acquiredJobs = executeAcquireJobsCommand();
    assertEquals(1, acquiredJobs.size());
    // suspend the process instance:
    runtimeService.suspendProcessInstanceById(pi.getId());
    // now, the acquirejobs command does not see the job:
    acquiredJobs = executeAcquireJobsCommand();
    assertEquals(0, acquiredJobs.size());
}
Also used : AcquiredJobEntities(org.activiti.engine.impl.asyncexecutor.AcquiredJobEntities) ProcessDefinition(org.activiti.engine.repository.ProcessDefinition) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) Job(org.activiti.engine.runtime.Job) Deployment(org.activiti.engine.test.Deployment)

Example 84 with Job

use of org.activiti.engine.runtime.Job in project Activiti by Activiti.

the class SignalThrowingEventListenerTest method testThrowSignalInRolledbackTransaction.

/**
	 * Test signal throwing when a job failed, signaling will happen in the rolled back transaction,
	 * not doing anything in the end...
	 */
@Deployment(resources = { "org/activiti/engine/test/api/event/SignalThrowingEventListenerTest.testThrowSignalInNewTransaction.bpmn20.xml" })
public void testThrowSignalInRolledbackTransaction() throws Exception {
    SignalThrowingEventListener listener = null;
    try {
        listener = new SignalThrowingEventListener();
        listener.setSignalName("Signal");
        listener.setProcessInstanceScope(true);
        processEngineConfiguration.getEventDispatcher().addEventListener(listener, ActivitiEventType.JOB_EXECUTION_FAILURE);
        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());
        // Three retries should each have triggered dispatching of a retry-decrement event
        assertEquals(0, taskService.createTaskQuery().processInstanceId(processInstance.getId()).count());
        try {
            managementService.executeJob(failedJob.getId());
            fail("Exception expected");
        } catch (ActivitiException ae) {
            // Ignore, expected exception
            assertEquals(0, 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)

Example 85 with Job

use of org.activiti.engine.runtime.Job 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

Job (org.activiti.engine.runtime.Job)110 Deployment (org.activiti.engine.test.Deployment)76 ProcessInstance (org.activiti.engine.runtime.ProcessInstance)55 Task (org.activiti.engine.task.Task)39 Date (java.util.Date)23 Calendar (java.util.Calendar)16 DelegateTask (org.activiti.engine.delegate.DelegateTask)11 HashMap (java.util.HashMap)10 ActivitiEvent (org.activiti.engine.delegate.event.ActivitiEvent)10 JobQuery (org.activiti.engine.runtime.JobQuery)8 ActivitiException (org.activiti.engine.ActivitiException)6 SimpleDateFormat (java.text.SimpleDateFormat)5 ArrayList (java.util.ArrayList)5 DefaultClockImpl (org.activiti.engine.impl.util.DefaultClockImpl)5 ProcessDefinition (org.activiti.engine.repository.ProcessDefinition)5 Clock (org.activiti.engine.runtime.Clock)5 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)5 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)4 HistoricProcessInstance (org.activiti.engine.history.HistoricProcessInstance)4 CommandContext (org.activiti.engine.impl.interceptor.CommandContext)4