package org.activiti.camel; /** * @author Saeid Mirzaei */ import java.util.List; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.test.Deployment; import org.activiti.spring.impl.test.SpringActivitiTestCase; import org.apache.camel.CamelContext; import org.apache.camel.Route; import org.apache.camel.builder.RouteBuilder; import org.junit.Assert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; @ContextConfiguration("classpath:generic-camel-activiti-context.xml") public class AsyncPingTest extends SpringActivitiTestCase { @Autowired protected CamelContext camelContext; @Autowired protected RuntimeService runtimeService; public void setUp() throws Exception { camelContext.addRoutes(new RouteBuilder() { @Override public void configure() throws Exception { from("activiti:asyncPingProcess:serviceAsyncPing").to("seda:continueAsync"); from("seda:continueAsync").to("activiti:asyncPingProcess:receiveAsyncPing"); } }); } public void tearDown() throws Exception { List<Route> routes = camelContext.getRoutes(); for (Route r: routes) { camelContext.stopRoute(r.getId()); camelContext.removeRoute(r.getId()); } } @Deployment(resources = {"process/asyncPing.bpmn20.xml"}) public void testRunProcess() throws Exception { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("asyncPingProcess"); List<Execution> executionList = runtimeService.createExecutionQuery().list(); Assert.assertEquals(1, executionList.size()); managementService.executeJob(managementService.createJobQuery().processInstanceId(processInstance.getId()).singleResult().getId()); Thread.sleep(1500); executionList = runtimeService.createExecutionQuery().list(); Assert.assertEquals(0, executionList.size()); Assert.assertEquals(0, runtimeService.createProcessInstanceQuery().processInstanceId(processInstance.getId()).count()); } }