@Test public void providerCalledForProcessDefinitionWithoutTenantId_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; // given a deployment without tenant id testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is invoked twice assertThat(tenantIdProvider.parameters.size(), is(2)); }
@Test public void providerCalledWithVariables_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).camundaIn("varName", "varName").done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess", Variables.createVariables().putValue("varName", true)); // then the tenant id provider is passed in the variable assertThat(tenantIdProvider.parameters.get(1).getVariables().size(), is(1)); assertThat((Boolean) tenantIdProvider.parameters.get(1).getVariables().get("varName"), is(true)); }
@Test public void providerNotCalledForProcessDefinitionWithTenantId_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; // given a deployment with a tenant id testRule.deployForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is not invoked assertThat(tenantIdProvider.parameters.size(), is(0)); }
@Test public void providerCalledWithProcessDefinition_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); ProcessDefinition deployedProcessDefinition = engineRule.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is passed in the process definition ProcessDefinition passedProcessDefinition = tenantIdProvider.parameters.get(1).getProcessDefinition(); assertThat(passedProcessDefinition, is(notNullValue())); assertThat(passedProcessDefinition.getId(), is(deployedProcessDefinition.getId())); }
@Test public void providerCalledWithSuperProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); ProcessDefinition superProcessDefinition = engineRule.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey("superProcess").singleResult(); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is passed in the process definition DelegateExecution superExecution = tenantIdProvider.parameters.get(1).getSuperExecution(); assertThat(superExecution, is(notNullValue())); assertThat(superExecution.getProcessDefinitionId(), is(superProcessDefinition.getId())); }
@Test public void setNullTenantId_SubProcessInstance() { String tenantId = null; SetValueOnSubProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnSubProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider can set the tenant id to null ProcessInstance processInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(processInstance.getTenantId(), is(nullValue())); }
@Test public void setsTenantId_SubProcessInstance() { String tenantId = TENANT_ID; SetValueOnSubProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnSubProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider can set the tenant id to a value ProcessInstance subProcessInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(subProcessInstance.getTenantId(), is(tenantId)); // and the super process instance is not assigned a tenant id ProcessInstance superProcessInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey("superProcess").singleResult(); assertThat(superProcessInstance.getTenantId(), is(nullValue())); }
@Test public void tenantIdInheritedFromSuperProcessInstance() { String tenantId = TENANT_ID; SetValueOnRootProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnRootProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id is inherited to the sub process instance even tough it is not set by the provider ProcessInstance processInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(processInstance.getTenantId(), is(tenantId)); }
@Test public void testCallBpmnProcessReconfigureCallActivity() { // given BpmnModelInstance model = CallActivityModels.oneBpmnCallActivityProcess("oneTaskProcess"); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(model).callActivityBuilder("callActivity") .calledElement("foo") .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("callActivity", "callActivity") .build(); // when ProcessInstance processInstance = testHelper.createProcessInstanceAndMigrate(migrationPlan); // then the called instance has not changed (e.g. not been migrated to a different process definition) ProcessInstance calledInstance = rule .getRuntimeService() .createProcessInstanceQuery() .processDefinitionKey("oneTaskProcess") .singleResult(); Assert.assertNotNull(calledInstance); // and it is possible to complete the called process instance testHelper.completeTask("userTask"); // and the calling process instance testHelper.completeTask("userTask"); testHelper.assertProcessEnded(processInstance.getId()); }
@Test public void providerNotCalledForProcessDefinitionWithTenantId_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; // given a deployment with a tenant id testRule.deployForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is not invoked assertThat(tenantIdProvider.parameters.size(), is(0)); }
@Test public void providerCalledForProcessDefinitionWithoutTenantId_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; // given a deployment without tenant id testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is invoked twice assertThat(tenantIdProvider.parameters.size(), is(2)); }
@Test public void providerCalledWithVariables_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).camundaIn("varName", "varName").done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess", Variables.createVariables().putValue("varName", true)); // then the tenant id provider is passed in the variable assertThat(tenantIdProvider.parameters.get(1).getVariables().size(), is(1)); assertThat((Boolean) tenantIdProvider.parameters.get(1).getVariables().get("varName"), is(true)); }
@Test public void providerCalledWithSuperProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); ProcessDefinition superProcessDefinition = engineRule.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey("superProcess").singleResult(); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is passed in the process definition DelegateExecution superExecution = tenantIdProvider.parameters.get(1).getSuperExecution(); assertThat(superExecution, is(notNullValue())); assertThat(superExecution.getProcessDefinitionId(), is(superProcessDefinition.getId())); }
@Test public void providerCalledWithProcessDefinition_SubProcessInstance() { ContextLoggingTenantIdProvider tenantIdProvider = new ContextLoggingTenantIdProvider(); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); ProcessDefinition deployedProcessDefinition = engineRule.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider is passed in the process definition ProcessDefinition passedProcessDefinition = tenantIdProvider.parameters.get(1).getProcessDefinition(); assertThat(passedProcessDefinition, is(notNullValue())); assertThat(passedProcessDefinition.getId(), is(deployedProcessDefinition.getId())); }
@Test public void setNullTenantId_SubProcessInstance() { String tenantId = null; SetValueOnSubProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnSubProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider can set the tenant id to null ProcessInstance processInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(processInstance.getTenantId(), is(nullValue())); }
@Test public void tenantIdInheritedFromSuperProcessInstance() { String tenantId = TENANT_ID; SetValueOnRootProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnRootProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id is inherited to the sub process instance even tough it is not set by the provider ProcessInstance processInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(processInstance.getTenantId(), is(tenantId)); }
@Test public void setsTenantId_SubProcessInstance() { String tenantId = TENANT_ID; SetValueOnSubProcessInstanceTenantIdProvider tenantIdProvider = new SetValueOnSubProcessInstanceTenantIdProvider(tenantId); TestTenantIdProvider.delegate = tenantIdProvider; testRule.deploy(Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY).startEvent().userTask().done(), Bpmn.createExecutableProcess("superProcess").startEvent().callActivity().calledElement(PROCESS_DEFINITION_KEY).done()); // if a process instance is started engineRule.getRuntimeService().startProcessInstanceByKey("superProcess"); // then the tenant id provider can set the tenant id to a value ProcessInstance subProcessInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey(PROCESS_DEFINITION_KEY).singleResult(); assertThat(subProcessInstance.getTenantId(), is(tenantId)); // and the super process instance is not assigned a tenant id ProcessInstance superProcessInstance = engineRule.getRuntimeService().createProcessInstanceQuery().processDefinitionKey("superProcess").singleResult(); assertThat(superProcessInstance.getTenantId(), is(nullValue())); }
@Test public void testCallBpmnProcessReconfigureCallActivity() { // given BpmnModelInstance model = CallActivityModels.oneBpmnCallActivityProcess("oneTaskProcess"); ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(model); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(model).callActivityBuilder("callActivity") .calledElement("foo") .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("callActivity", "callActivity") .build(); // when ProcessInstance processInstance = testHelper.createProcessInstanceAndMigrate(migrationPlan); // then the called instance has not changed (e.g. not been migrated to a different process definition) ProcessInstance calledInstance = rule .getRuntimeService() .createProcessInstanceQuery() .processDefinitionKey("oneTaskProcess") .singleResult(); Assert.assertNotNull(calledInstance); // and it is possible to complete the called process instance testHelper.completeTask("userTask"); // and the calling process instance testHelper.completeTask("userTask"); testHelper.assertProcessEnded(processInstance.getId()); }