public StartFormHandler getStartFormHandler(CommandContext commandContext, ProcessDefinition processDefinition) { StartFormHandler startFormHandler = new DefaultStartFormHandler(); org.flowable.bpmn.model.Process process = ProcessDefinitionUtil.getProcess(processDefinition.getId()); FlowElement initialFlowElement = process.getInitialFlowElement(); if (initialFlowElement instanceof StartEvent) { StartEvent startEvent = (StartEvent) initialFlowElement; List<FormProperty> formProperties = startEvent.getFormProperties(); String formKey = startEvent.getFormKey(); DeploymentEntity deploymentEntity = CommandContextUtil.getDeploymentEntityManager(commandContext).findById(processDefinition.getDeploymentId()); startFormHandler.parseConfiguration(formProperties, formKey, deploymentEntity, processDefinition); return startFormHandler; } return null; }
BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(processDefinition.getId()); Process process = bpmnModel.getProcessById(processDefinition.getKey()); FlowElement startElement = process.getInitialFlowElement();
FlowElement initialElement = process.getInitialFlowElement(); if (initialElement instanceof StartEvent) { StartEvent startEvent = (StartEvent) initialElement;
/** * Sets the version on each process definition entity, and the identifier. If the map contains an older version for a process definition, then the version is set to that older entity's version * plus one; otherwise it is set to 1. Also dispatches an ENTITY_CREATED event. */ protected void setProcessDefinitionVersionsAndIds(ParsedDeployment parsedDeployment, Map<ProcessDefinitionEntity, ProcessDefinitionEntity> mapNewToOldProcessDefinitions) { CommandContext commandContext = Context.getCommandContext(); for (ProcessDefinitionEntity processDefinition : parsedDeployment.getAllProcessDefinitions()) { int version = 1; ProcessDefinitionEntity latest = mapNewToOldProcessDefinitions.get(processDefinition); if (latest != null) { version = latest.getVersion() + 1; } processDefinition.setVersion(version); processDefinition.setId(getIdForNewProcessDefinition(processDefinition)); Process process = parsedDeployment.getProcessModelForProcessDefinition(processDefinition); FlowElement initialElement = process.getInitialFlowElement(); if (initialElement instanceof StartEvent) { StartEvent startEvent = (StartEvent) initialElement; if (startEvent.getFormKey() != null) { processDefinition.setHasStartFormKey(true); } } cachingAndArtifactsManager.updateProcessDefinitionCache(parsedDeployment); if (CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().isEnabled()) { CommandContextUtil.getProcessEngineConfiguration(commandContext).getEventDispatcher().dispatchEvent(FlowableEventBuilder.createEntityEvent(FlowableEngineEventType.ENTITY_CREATED, processDefinition)); } } }
@Override public FormInfo execute(CommandContext commandContext) { ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext); FormService formService = CommandContextUtil.getFormService(commandContext); if (formService == null) { throw new FlowableIllegalArgumentException("Form engine is not initialized"); } FormInfo formInfo = null; ProcessDefinition processDefinition = ProcessDefinitionUtil.getProcessDefinition(processDefinitionId); BpmnModel bpmnModel = ProcessDefinitionUtil.getBpmnModel(processDefinitionId); Process process = bpmnModel.getProcessById(processDefinition.getKey()); FlowElement startElement = process.getInitialFlowElement(); if (startElement instanceof StartEvent) { StartEvent startEvent = (StartEvent) startElement; if (StringUtils.isNotEmpty(startEvent.getFormKey())) { Deployment deployment = CommandContextUtil.getDeploymentEntityManager(commandContext).findById(processDefinition.getDeploymentId()); formInfo = formService.getFormInstanceModelByKeyAndParentDeploymentId(startEvent.getFormKey(), deployment.getParentDeploymentId(), null, processInstanceId, null, processDefinition.getTenantId(), processEngineConfiguration.isFallbackToDefaultTenant()); } } // If form does not exists, we don't want to leak out this info to just anyone if (formInfo == null) { throw new FlowableObjectNotFoundException("Form model for process definition " + processDefinitionId + " cannot be found"); } FormFieldHandler formFieldHandler = processEngineConfiguration.getFormFieldHandler(); formFieldHandler.enrichFormFields(formInfo); return formInfo; }
CallActivity callActivity = moveExecutionContainer.getCallActivity(); Process subProcess = moveExecutionContainer.getSubProcessModel().getProcessById(moveExecutionContainer.getSubProcessDefKey()); ExecutionEntity callActivityInstanceExecution = createCallActivityInstance(callActivity, moveExecutionContainer.getSubProcessDefinition(), newChildExecutions.get(0), subProcess.getInitialFlowElement().getId(), commandContext); List<ExecutionEntity> moveExecutions = moveExecutionContainer.getExecutions(); MoveExecutionEntityContainer subProcessMoveExecutionEntityContainer = new MoveExecutionEntityContainer(moveExecutions, moveExecutionContainer.getMoveToActivityIds());
FlowElement initialFlowElement = subProcess.getInitialFlowElement(); if (initialFlowElement == null) { throw new FlowableException("No start element found for process definition " + processDefinition.getId());
public ProcessInstance createProcessInstance(ProcessDefinition processDefinition, String businessKey, String processInstanceName, String overrideDefinitionTenantId, String predefinedProcessInstanceId, Map<String, Object> variables, Map<String, Object> transientVariables, String callbackId, String callbackType, boolean startProcessInstance) { CommandContext commandContext = Context.getCommandContext(); if (Flowable5Util.isFlowable5ProcessDefinition(processDefinition, commandContext)) { Flowable5CompatibilityHandler compatibilityHandler = Flowable5Util.getFlowable5CompatibilityHandler(); return compatibilityHandler.startProcessInstance(processDefinition.getKey(), processDefinition.getId(), variables, transientVariables, businessKey, processDefinition.getTenantId(), processInstanceName); } // Do not start process a process instance if the process definition is suspended if (ProcessDefinitionUtil.isProcessDefinitionSuspended(processDefinition.getId())) { throw new FlowableException("Cannot start process instance. Process definition " + processDefinition.getName() + " (id = " + processDefinition.getId() + ") is suspended"); } // Get model from cache Process process = ProcessDefinitionUtil.getProcess(processDefinition.getId()); if (process == null) { throw new FlowableException("Cannot start process instance. Process model " + processDefinition.getName() + " (id = " + processDefinition.getId() + ") could not be found"); } FlowElement initialFlowElement = process.getInitialFlowElement(); if (initialFlowElement == null) { throw new FlowableException("No start element found for process definition " + processDefinition.getId()); } return createAndStartProcessInstanceWithInitialFlowElement(processDefinition, businessKey, processInstanceName, overrideDefinitionTenantId, predefinedProcessInstanceId, initialFlowElement, process, variables, transientVariables, callbackId, callbackType, startProcessInstance); }
bpmnParse.getCurrentProcess().getInitialFlowElement() == null)) {