public void testPropagateTenantIdToIntermediateSignalEventSubscription() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .signal("start") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); EventSubscription eventSubscription = runtimeService.createEventSubscriptionQuery().singleResult(); assertThat(eventSubscription, is(notNullValue())); // inherit the tenant id from process instance assertThat(eventSubscription.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToIntermediateMessageEventSubscription() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .message("start") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); EventSubscription eventSubscription = runtimeService.createEventSubscriptionQuery().singleResult(); assertThat(eventSubscription, is(notNullValue())); // inherit the tenant id from process instance assertThat(eventSubscription.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToIntermediateTimerJob() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .timerWithDuration("PT1M") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); // the job is created when the timer event is reached Job job = managementService.createJobQuery().singleResult(); assertThat(job, is(notNullValue())); // inherit the tenant id from job definition assertThat(job.getTenantId(), is(TENANT_ID)); }
@Test public void propagateTenantIdToIntermediateTimerJob() { testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .intermediateCatchEvent() .timerWithDuration("PT1M") .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); // the job is created when the timer event is reached Job job = engineRule.getManagementService().createJobQuery().singleResult(); assertThat(job, is(notNullValue())); // inherit the tenant id from execution assertThat(job.getTenantId(), is(TENANT_ID)); }
public void testIntermediateCatchEvent() throws Exception { BpmnModelInstance bpmnModelInstance = Bpmn.createExecutableProcess("process") .startEvent() .intermediateCatchEvent() .message("foo") .camundaAsyncBefore() .camundaFailedJobRetryTimeCycle("R5/PT5M") .camundaExecutionListenerClass("start", "foo") .endEvent() .done(); deployment(bpmnModelInstance); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date startDate = simpleDateFormat.parse("2018-01-01T10:00:00"); ClockUtil.setCurrentTime(startDate); runtimeService.startProcessInstanceByKey("process"); Job job = managementService.createJobQuery().singleResult(); // assume Assert.assertEquals(3, job.getRetries()); // when job fails try { managementService.executeJob(job.getId()); } catch (Exception e) { // ignore } // then job = managementService.createJobQuery().singleResult(); Assert.assertEquals(4, job.getRetries()); Date expectedDate = simpleDateFormat.parse("2018-01-01T10:05:00"); assertEquals(expectedDate, ((JobEntity) job).getLockExpirationTime()); }
.intermediateCatchEvent() .condition("${true}") .endEvent() .done();
@Test public void testMigrateGatewayRemoveSignalEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.SIGNAL_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldSignalCatch") .signal("old" + EventBasedGatewayModels.SIGNAL_NAME) .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.SIGNAL_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("signalCatch", "signalCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertEventSubscriptionRemoved("oldSignalCatch", "old" + EventBasedGatewayModels.SIGNAL_NAME); testHelper.assertEventSubscriptionMigrated("signalCatch", "signalCatch", EventBasedGatewayModels.SIGNAL_NAME); }
@Test public void testMigrateGatewayRemoveTimerEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldTimerCatch") .timerWithDuration("PT50M") .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("timerCatch", "timerCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertIntermediateTimerJobRemoved("oldTimerCatch"); testHelper.assertIntermediateTimerJobMigrated("timerCatch", "timerCatch"); }
@Test public void testMigrateGatewayRemoveMessageEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.MESSAGE_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldMessageCatch") .message("old" + EventBasedGatewayModels.MESSAGE_NAME) .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.MESSAGE_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("messageCatch", "messageCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertEventSubscriptionRemoved("oldMessageCatch", "old" + EventBasedGatewayModels.MESSAGE_NAME); testHelper.assertEventSubscriptionMigrated("messageCatch", "messageCatch", EventBasedGatewayModels.MESSAGE_NAME); }
@Test public void testCompletingSuspendedJobDuringRunningInstance() { testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .receiveTask() .intermediateCatchEvent() .timerWithDuration("PT0M") .endEvent() .done()); // given // a process definition ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult(); // a running instance ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId()); // suspend the process definition (and the job definitions) repositoryService.suspendProcessDefinitionById(processDefinition.getId()); // assert that there still exists a running and active process instance assertEquals(1, runtimeService.createProcessInstanceQuery().active().count()); // when runtimeService.signal(processInstance.getId()); // then // there should be one suspended job assertEquals(1, managementService.createJobQuery().suspended().count()); assertEquals(0, managementService.createJobQuery().active().count()); assertEquals(1, runtimeService.createProcessInstanceQuery().active().count()); }
public void testPropagateTenantIdToIntermediateSignalEventSubscription() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .signal("start") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); EventSubscription eventSubscription = runtimeService.createEventSubscriptionQuery().singleResult(); assertThat(eventSubscription, is(notNullValue())); // inherit the tenant id from process instance assertThat(eventSubscription.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToIntermediateMessageEventSubscription() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .message("start") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); EventSubscription eventSubscription = runtimeService.createEventSubscriptionQuery().singleResult(); assertThat(eventSubscription, is(notNullValue())); // inherit the tenant id from process instance assertThat(eventSubscription.getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToIntermediateTimerJob() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .intermediateCatchEvent() .timerWithDuration("PT1M") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); // the job is created when the timer event is reached Job job = managementService.createJobQuery().singleResult(); assertThat(job, is(notNullValue())); // inherit the tenant id from job definition assertThat(job.getTenantId(), is(TENANT_ID)); }
@Test public void propagateTenantIdToIntermediateTimerJob() { testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .intermediateCatchEvent() .timerWithDuration("PT1M") .endEvent() .done()); engineRule.getRuntimeService().startProcessInstanceByKey("process"); // the job is created when the timer event is reached Job job = engineRule.getManagementService().createJobQuery().singleResult(); assertThat(job, is(notNullValue())); // inherit the tenant id from execution assertThat(job.getTenantId(), is(TENANT_ID)); }
public void testIntermediateCatchEvent() throws Exception { BpmnModelInstance bpmnModelInstance = Bpmn.createExecutableProcess("process") .startEvent() .intermediateCatchEvent() .message("foo") .camundaAsyncBefore() .camundaFailedJobRetryTimeCycle("R5/PT5M") .camundaExecutionListenerClass("start", "foo") .endEvent() .done(); deployment(bpmnModelInstance); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date startDate = simpleDateFormat.parse("2018-01-01T10:00:00"); ClockUtil.setCurrentTime(startDate); runtimeService.startProcessInstanceByKey("process"); Job job = managementService.createJobQuery().singleResult(); // assume Assert.assertEquals(3, job.getRetries()); // when job fails try { managementService.executeJob(job.getId()); } catch (Exception e) { // ignore } // then job = managementService.createJobQuery().singleResult(); Assert.assertEquals(4, job.getRetries()); Date expectedDate = simpleDateFormat.parse("2018-01-01T10:05:00"); assertEquals(expectedDate, ((JobEntity) job).getLockExpirationTime()); }
.intermediateCatchEvent() .condition("${true}") .endEvent() .done();
@Test public void testMigrateGatewayRemoveTimerEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldTimerCatch") .timerWithDuration("PT50M") .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.TIMER_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("timerCatch", "timerCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertIntermediateTimerJobRemoved("oldTimerCatch"); testHelper.assertIntermediateTimerJobMigrated("timerCatch", "timerCatch"); }
@Test public void testMigrateGatewayRemoveMessageEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.MESSAGE_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldMessageCatch") .message("old" + EventBasedGatewayModels.MESSAGE_NAME) .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.MESSAGE_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("messageCatch", "messageCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertEventSubscriptionRemoved("oldMessageCatch", "old" + EventBasedGatewayModels.MESSAGE_NAME); testHelper.assertEventSubscriptionMigrated("messageCatch", "messageCatch", EventBasedGatewayModels.MESSAGE_NAME); }
@Test public void testMigrateGatewayRemoveSignalEvent() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(modify(EventBasedGatewayModels.SIGNAL_EVENT_BASED_GW_PROCESS) .flowNodeBuilder("eventBasedGateway") .intermediateCatchEvent("oldSignalCatch") .signal("old" + EventBasedGatewayModels.SIGNAL_NAME) .endEvent() .done()); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(EventBasedGatewayModels.SIGNAL_EVENT_BASED_GW_PROCESS); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("eventBasedGateway", "eventBasedGateway") .mapActivities("signalCatch", "signalCatch") .build(); // when testHelper.createProcessInstanceAndMigrate(migrationPlan); // then testHelper.assertEventSubscriptionRemoved("oldSignalCatch", "old" + EventBasedGatewayModels.SIGNAL_NAME); testHelper.assertEventSubscriptionMigrated("signalCatch", "signalCatch", EventBasedGatewayModels.SIGNAL_NAME); }
@Test public void testCompletingSuspendedJobDuringRunningInstance() { testRule.deploy(Bpmn.createExecutableProcess("process") .startEvent() .receiveTask() .intermediateCatchEvent() .timerWithDuration("PT0M") .endEvent() .done()); // given // a process definition ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().singleResult(); // a running instance ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinition.getId()); // suspend the process definition (and the job definitions) repositoryService.suspendProcessDefinitionById(processDefinition.getId()); // assert that there still exists a running and active process instance assertEquals(1, runtimeService.createProcessInstanceQuery().active().count()); // when runtimeService.signal(processInstance.getId()); // then // there should be one suspended job assertEquals(1, managementService.createJobQuery().suspended().count()); assertEquals(0, managementService.createJobQuery().active().count()); assertEquals(1, runtimeService.createProcessInstanceQuery().active().count()); }