@Override public String startProcessInstanceByKey(String processDefinitionKey, String predefinedProcessInstanceId, String planItemInstanceId, String tenantId, Boolean fallbackToDefaultTenant, Map<String, Object> inParametersMap) { ProcessInstanceBuilder processInstanceBuilder = processEngineConfiguration.getRuntimeService().createProcessInstanceBuilder(); processInstanceBuilder.processDefinitionKey(processDefinitionKey); if (tenantId != null) { processInstanceBuilder.tenantId(tenantId); processInstanceBuilder.overrideProcessDefinitionTenantId(tenantId); } processInstanceBuilder.predefineProcessInstanceId(predefinedProcessInstanceId); if (planItemInstanceId != null) { processInstanceBuilder.callbackId(planItemInstanceId); processInstanceBuilder.callbackType(CallbackTypes.PLAN_ITEM_CHILD_PROCESS); } for (String target : inParametersMap.keySet()) { processInstanceBuilder.variable(target, inParametersMap.get(target)); } if (fallbackToDefaultTenant != null && fallbackToDefaultTenant) { processInstanceBuilder.fallbackToDefaultTenant(); } ProcessInstance processInstance = processInstanceBuilder.start(); return processInstance.getId(); }