update - 流程实例创建的入参模型, 对内开放直接传入指定版本的定义可以正常发起流程实例

This commit is contained in:
wangli 2024-02-27 11:35:30 +08:00
parent 557c71f421
commit 37ab16a7f6

View File

@ -235,15 +235,17 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
@Override
public String createProcessInstance(BpmnProcessInstanceCreateDTO dto) {
BpmnProcessDefinitionVO definition =
processDefinitionService.getActiveProcessDefinitionByKey(dto.getProcessDefinitionKey(),
dto.getTenantId());
// 校验流程定义
if (definition == null) {
throw new WorkflowEngineException(PROCESS_DEFINITION_KEY_NOT_EXISTS, dto.getProcessDefinitionKey());
}
if (Objects.equals(SuspensionState.SUSPENDED.getStateCode(), definition.getSuspensionState())) {
throw new WorkflowEngineException(PROCESS_DEFINITION_IS_SUSPENDED, dto.getProcessDefinitionKey());
BpmnProcessDefinitionVO definition = null;
if (StringUtils.isBlank(dto.getProcessDefinitionId())) {
definition = processDefinitionService.getActiveProcessDefinitionByKey(dto.getProcessDefinitionKey(),
dto.getTenantId());
// 校验流程定义
if (definition == null) {
throw new WorkflowEngineException(PROCESS_DEFINITION_KEY_NOT_EXISTS, dto.getProcessDefinitionKey());
}
if (Objects.equals(SuspensionState.SUSPENDED.getStateCode(), definition.getSuspensionState())) {
throw new WorkflowEngineException(PROCESS_DEFINITION_IS_SUSPENDED, dto.getProcessDefinitionKey());
}
}
dto.getVariables().put(INTERNAL_INITIATOR, dto.getInitiator());
@ -263,10 +265,11 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
Authentication.setAuthenticatedUserId(dto.getInitiator().buildAssigneeId());
String name = StringUtils.isNotBlank(dto.getCustomProcessInstanceName()) ?
dto.getCustomProcessInstanceName()
: definition.getName();
: Objects.isNull(definition) ? "" : definition.getName();
// 设置流程名字
ProcessInstance instance = runtimeService.createProcessInstanceBuilder()
.processDefinitionId(definition.getId())
.processDefinitionId(Objects.isNull(definition) ? dto.getProcessDefinitionId() : definition.getId())
.businessKey(dto.getBusinessKey())
.variables(dto.getVariables())
.name(name)