/** * Deploy a process model, which contains an external task. The topic is * given via parameter so the test cases are independent. * * @param engine the engine which is used to deploy the instance * @param topicName the topic name for the external task */ public static void deploy(ProcessEngine engine, String topicName) { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_DEF_KEY) .startEvent() .serviceTask(EXTERNAL_TASK) .camundaType(EXTERNAL_TASK_TYPE) .camundaTopic(topicName) .endEvent() .done(); engine.getRepositoryService().createDeployment() .addModelInstance(ProcessWithExternalTaskScenario.class.getSimpleName() + ".startProcessWithFetch.bpmn20.xml", instance) .deploy(); }
public BpmnModelInstance build() { return ProcessModels.newModel(processKey) .startEvent() .serviceTask(externalTaskName) .camundaType(externalTaskType) .camundaTopic(topic) .camundaTaskPriority(priority.toString()) .endEvent() .done(); }
public void testPropagateTenantIdToExternalTask() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); ExternalTask externalTask = externalTaskService.createExternalTaskQuery().singleResult(); assertThat(externalTask, is(notNullValue())); // inherit the tenant id from execution assertThat(externalTask.getTenantId(), is(TENANT_ID)); List<LockedExternalTask> externalTasks = externalTaskService.fetchAndLock(1, "test").topic("test", 1000).execute(); assertThat(externalTasks.size(), is(1)); assertThat(externalTasks.get(0).getTenantId(), is(TENANT_ID)); }
public void testPropagateTenantIdToFailedExternalTaskIncident() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); // fetch the external task and mark it as failed which create an incident List<LockedExternalTask> tasks = externalTaskService.fetchAndLock(1, "test-worker").topic("test", 1000).execute(); externalTaskService.handleFailure(tasks.get(0).getId(), "test-worker", "expected", 0, 0); Incident incident = runtimeService.createIncidentQuery().singleResult(); assertThat(incident, is(notNullValue())); // inherit the tenant id from execution assertThat(incident.getTenantId(), is(TENANT_ID)); }
@Override protected void setUp() { BpmnModelInstance process = Bpmn.createExecutableProcess() .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done(); deploymentForTenant(TENANT_ONE, process); deploymentForTenant(TENANT_TWO, process); startProcessInstance(TENANT_ONE); startProcessInstance(TENANT_TWO); }
.serviceTask("externalTask") .camundaType("external") .camundaTopic(TOPIC_NAME) .endEvent("endEvent") .done();
@Test public void testChangeTaskConfiguration() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS) .serviceTaskBuilder("externalTask") .camundaTopic("new" + ExternalTaskModels.TOPIC) .camundaTaskPriority(Integer.toString(ExternalTaskModels.PRIORITY * 2)) .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("externalTask", "externalTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then the task's topic and priority have not changed ExternalTask externalTaskAfterMigration = rule.getExternalTaskService().createExternalTaskQuery().singleResult(); Assert.assertEquals(ExternalTaskModels.PRIORITY.longValue(), externalTaskAfterMigration.getPriority()); Assert.assertEquals(ExternalTaskModels.TOPIC, externalTaskAfterMigration.getTopicName()); }
public void testCompleteWithNonLocalVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process").startEvent().serviceTask("externalTask") .camundaType("external").camundaTopic("foo").camundaTaskPriority("100") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ReadLocalVariableListenerImpl.class) .userTask("user").endEvent().done(); deployment(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); List<LockedExternalTask> lockedTasks = externalTaskService.fetchAndLock(1, WORKER_ID).topic("foo", 1L).execute(); // when externalTaskService.complete(lockedTasks.get(0).getId(), WORKER_ID, Variables.createVariables().putValue("abc", "bar"), null); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()).singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); assertEquals("abc", variableInstance.getName()); }
public void testCompleteWithLocalVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process").startEvent().serviceTask("externalTask") .camundaType("external").camundaTopic("foo").camundaTaskPriority("100") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ReadLocalVariableListenerImpl.class) .userTask("user").endEvent().done(); deployment(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); List<LockedExternalTask> lockedTasks = externalTaskService.fetchAndLock(1, WORKER_ID).topic("foo", 1L).execute(); // when externalTaskService.complete(lockedTasks.get(0).getId(), WORKER_ID, null, Variables.createVariables().putValue("abc", "bar")); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()).singleResult(); assertNull(variableInstance); if (processEngineConfiguration.getHistoryLevel() == HistoryLevel.HISTORY_LEVEL_AUDIT || processEngineConfiguration.getHistoryLevel() == HistoryLevel.HISTORY_LEVEL_FULL) { HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery() .activityInstanceIdIn(lockedTasks.get(0).getActivityInstanceId()).singleResult(); assertNotNull(historicVariableInstance); assertEquals("abc", historicVariableInstance.getName()); assertEquals("bar", historicVariableInstance.getValue()); } }
/** * Deploy a process model, which contains an external task. The topic is * given via parameter so the test cases are independent. * * @param engine the engine which is used to deploy the instance * @param topicName the topic name for the external task */ public static void deploy(ProcessEngine engine, String topicName) { BpmnModelInstance instance = Bpmn.createExecutableProcess(PROCESS_DEF_KEY) .startEvent() .serviceTask(EXTERNAL_TASK) .camundaType(EXTERNAL_TASK_TYPE) .camundaTopic(topicName) .endEvent() .done(); engine.getRepositoryService().createDeployment() .addModelInstance(ProcessWithExternalTaskScenario.class.getSimpleName() + ".startProcessWithFetch.bpmn20.xml", instance) .deploy(); }
public BpmnModelInstance build() { return ProcessModels.newModel(processKey) .startEvent() .serviceTask(externalTaskName) .camundaType(externalTaskType) .camundaTopic(topic) .camundaTaskPriority(priority.toString()) .endEvent() .done(); }
public void testPropagateTenantIdToExternalTask() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); ExternalTask externalTask = externalTaskService.createExternalTaskQuery().singleResult(); assertThat(externalTask, is(notNullValue())); // inherit the tenant id from execution assertThat(externalTask.getTenantId(), is(TENANT_ID)); List<LockedExternalTask> externalTasks = externalTaskService.fetchAndLock(1, "test").topic("test", 1000).execute(); assertThat(externalTasks.size(), is(1)); assertThat(externalTasks.get(0).getTenantId(), is(TENANT_ID)); }
.serviceTask("external") .camundaType("external") .camundaTopic("external") .boundaryEvent() .message("message")
public void testPropagateTenantIdToFailedExternalTaskIncident() { deploymentForTenant(TENANT_ID, Bpmn.createExecutableProcess(PROCESS_DEFINITION_KEY) .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done()); startProcessInstance(PROCESS_DEFINITION_KEY); // fetch the external task and mark it as failed which create an incident List<LockedExternalTask> tasks = externalTaskService.fetchAndLock(1, "test-worker").topic("test", 1000).execute(); externalTaskService.handleFailure(tasks.get(0).getId(), "test-worker", "expected", 0, 0); Incident incident = runtimeService.createIncidentQuery().singleResult(); assertThat(incident, is(notNullValue())); // inherit the tenant id from execution assertThat(incident.getTenantId(), is(TENANT_ID)); }
@Override protected void setUp() { BpmnModelInstance process = Bpmn.createExecutableProcess() .startEvent() .serviceTask() .camundaType("external") .camundaTopic("test") .endEvent() .done(); deploymentForTenant(TENANT_ONE, process); deploymentForTenant(TENANT_TWO, process); startProcessInstance(TENANT_ONE); startProcessInstance(TENANT_TWO); }
.serviceTask("externalTask") .camundaType("external") .camundaTopic(TOPIC_NAME) .endEvent("endEvent") .done();
@Test public void testChangeTaskConfiguration() { // given ProcessDefinition sourceProcessDefinition = testHelper.deployAndGetDefinition(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS); ProcessDefinition targetProcessDefinition = testHelper.deployAndGetDefinition(modify(ExternalTaskModels.ONE_EXTERNAL_TASK_PROCESS) .serviceTaskBuilder("externalTask") .camundaTopic("new" + ExternalTaskModels.TOPIC) .camundaTaskPriority(Integer.toString(ExternalTaskModels.PRIORITY * 2)) .done()); MigrationPlan migrationPlan = rule.getRuntimeService() .createMigrationPlan(sourceProcessDefinition.getId(), targetProcessDefinition.getId()) .mapActivities("externalTask", "externalTask") .build(); ProcessInstance processInstance = rule.getRuntimeService().startProcessInstanceById(sourceProcessDefinition.getId()); // when testHelper.migrateProcessInstance(migrationPlan, processInstance); // then the task's topic and priority have not changed ExternalTask externalTaskAfterMigration = rule.getExternalTaskService().createExternalTaskQuery().singleResult(); Assert.assertEquals(ExternalTaskModels.PRIORITY.longValue(), externalTaskAfterMigration.getPriority()); Assert.assertEquals(ExternalTaskModels.TOPIC, externalTaskAfterMigration.getTopicName()); }
public void testCompleteWithNonLocalVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process").startEvent().serviceTask("externalTask") .camundaType("external").camundaTopic("foo").camundaTaskPriority("100") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ReadLocalVariableListenerImpl.class) .userTask("user").endEvent().done(); deployment(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); List<LockedExternalTask> lockedTasks = externalTaskService.fetchAndLock(1, WORKER_ID).topic("foo", 1L).execute(); // when externalTaskService.complete(lockedTasks.get(0).getId(), WORKER_ID, Variables.createVariables().putValue("abc", "bar"), null); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()).singleResult(); assertNotNull(variableInstance); assertEquals("bar", variableInstance.getValue()); assertEquals("abc", variableInstance.getName()); }
public void testCompleteWithLocalVariables() { // given BpmnModelInstance instance = Bpmn.createExecutableProcess("Process").startEvent().serviceTask("externalTask") .camundaType("external").camundaTopic("foo").camundaTaskPriority("100") .camundaExecutionListenerClass(ExecutionListener.EVENTNAME_END, ReadLocalVariableListenerImpl.class) .userTask("user").endEvent().done(); deployment(instance); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("Process"); List<LockedExternalTask> lockedTasks = externalTaskService.fetchAndLock(1, WORKER_ID).topic("foo", 1L).execute(); // when externalTaskService.complete(lockedTasks.get(0).getId(), WORKER_ID, null, Variables.createVariables().putValue("abc", "bar")); // then VariableInstance variableInstance = runtimeService.createVariableInstanceQuery() .processInstanceIdIn(processInstance.getId()).singleResult(); assertNull(variableInstance); if (processEngineConfiguration.getHistoryLevel() == HistoryLevel.HISTORY_LEVEL_AUDIT || processEngineConfiguration.getHistoryLevel() == HistoryLevel.HISTORY_LEVEL_FULL) { HistoricVariableInstance historicVariableInstance = historyService.createHistoricVariableInstanceQuery() .activityInstanceIdIn(lockedTasks.get(0).getActivityInstanceId()).singleResult(); assertNotNull(historicVariableInstance); assertEquals("abc", historicVariableInstance.getName()); assertEquals("bar", historicVariableInstance.getValue()); } }
.serviceTask("external") .camundaType("external") .camundaTopic("external") .boundaryEvent() .message("message")