@Override public ProcessInstance startProcessInstanceWithForm(String processDefinitionId, String outcome, Map<String, Object> variables, String processInstanceName) { ProcessInstanceBuilder processInstanceBuilder = createProcessInstanceBuilder() .processDefinitionId(processDefinitionId) .outcome(outcome) .startFormVariables(variables) .name(processInstanceName); return processInstanceBuilder.start(); }
@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(); }
@Override protected AbstractSetProcessInstanceStateCmd getProcessInstanceChangeStateCmd(ProcessInstance processInstance) { return new ActivateProcessInstanceCmd(processInstance.getId()); } }
@Override public boolean isSuspended(Job job) { if (StringUtils.isEmpty(job.getProcessInstanceId())) { throw new FlowableIllegalArgumentException("Job " + job.getId() + " parent is not process instance"); } ProcessInstance processInstance = this.processEngineConfiguration.getRuntimeService().createProcessInstanceQuery().processInstanceId(job.getProcessInstanceId()).singleResult(); return processInstance.isSuspended(); } }
public ProcessInstance getProcessInstance(String processId) { return processEngine.getRuntimeService() .createProcessInstanceQuery() .processInstanceId(processId) .singleResult(); }
protected String findProcessInstanceId(Exchange exchange) { String processInstanceId = exchange.getProperty(PROCESS_ID_PROPERTY, String.class); if (processInstanceId != null) { return processInstanceId; } String key = exchange.getProperty(PROCESS_KEY_PROPERTY, String.class); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(key).singleResult(); if (processInstance == null) { throw new FlowableException("Could not start process instance with business key " + key); } return processInstance.getId(); }
@Override protected void notifyInternal(DelegateExecution context) throws Exception { boolean isServiceUpdated = StepsUtil.getIsServiceUpdated(context); String serviceName = StepsUtil.getServiceToProcessName(context); if(serviceName == null) { throw new IllegalStateException("Not able to determine service update status."); } String exportedVariableName = Constants.VAR_IS_SERVICE_UPDATED_VAR_PREFIX + serviceName; RuntimeService runtimeService = Context.getProcessEngineConfiguration().getRuntimeService(); String superExecutionId = context.getParentId(); Execution superExecutionResult = runtimeService.createExecutionQuery().executionId(superExecutionId).singleResult(); superExecutionId = superExecutionResult.getSuperExecutionId(); runtimeService.setVariable(superExecutionId, exportedVariableName, isServiceUpdated); }
private List<Execution> getExecutionsByProcessId(String processInstanceId) { return processEngine.getRuntimeService() .createExecutionQuery() .rootProcessInstanceId(processInstanceId) .list(); }
private List<HistoricActivityInstance> findCurrentActivitiesAtReceiveTask(Execution execution) { return processEngine.getHistoryService() .createHistoricActivityInstanceQuery() .activityId(execution.getActivityId()) .executionId(execution.getId()) .activityType("receiveTask") .list(); }
private Execution findCurrentExecution(List<Execution> currentExecutionsForProcess) { return currentExecutionsForProcess.stream() .filter(execution -> execution.getActivityId() != null) .findFirst() .orElse(null); }
public boolean isProcessInstanceSuspended(String processInstanceId) { ProcessInstance processInstance = getProcessInstance(processInstanceId); return processInstance != null && processInstance.isSuspended(); }
private State getActiveProcessState(ProcessInstance processInstance) { String processInstanceId = processInstance.getProcessInstanceId(); if (isProcessInstanceAtReceiveTask(processInstanceId)) { return State.ACTION_REQUIRED; } if (hasDeadLetterJobs(processInstanceId)) { return State.ERROR; } return State.RUNNING; }
@Override public void createHistoricActivityInstance(ActivityInstance activityInstance) { if (isHistoryLevelAtLeast(HistoryLevel.ACTIVITY, activityInstance.getProcessDefinitionId())) { createNewHistoricActivityInstance(activityInstance); } }
@Override protected void continueThroughFlowNode(FlowNode flowNode) { if (debugger.isBreakpoint(execution)) { breakExecution(flowNode); } else { super.continueThroughFlowNode(flowNode); } }
public static void assertProcessEnded(ProcessEngine processEngine, String processInstanceId) { ProcessInstance processInstance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); if (processInstance != null) { throw new AssertionError("expected finished process instance '" + processInstanceId + "' but it was still in the db"); } }
private List<Execution> getAllProcessExecutions(String processInstanceId) { return processEngine.getRuntimeService() .createExecutionQuery() .rootProcessInstanceId(processInstanceId) .list(); }
@Override protected AbstractSetProcessInstanceStateCmd getProcessInstanceChangeStateCmd(ProcessInstance processInstance) { return new SuspendProcessInstanceCmd(processInstance.getId()); }
private Execution findCurrentExecution(List<Execution> currentExecutionsForProcess) { return currentExecutionsForProcess.stream() .filter(execution -> execution.getActivityId() != null) .findFirst() .orElse(null); }
private String getCurrentTaskId(FlowableEngineEvent flowableEngineEvent) { Execution currentExecutionForProces = findCurrentExecution(flowableEngineEvent); return currentExecutionForProces != null ? currentExecutionForProces.getActivityId() : getVariable(flowableEngineEvent, Constants.TASK_ID); }
private String getCurrentTaskId(FlowableEngineEvent flowableEngineEvent) { Execution currentExecutionForProces = findCurrentExecution(flowableEngineEvent); return currentExecutionForProces != null ? currentExecutionForProces.getActivityId() : getVariable(flowableEngineEvent, Constants.TASK_ID); }