update - 获取流程实例的同时,获取当前实例运行到的节点标识

This commit is contained in:
wangli 2024-04-07 16:09:11 +08:00
parent ce4c0c62c3
commit daa7c7f75b
5 changed files with 4555 additions and 617 deletions

View File

@ -109,6 +109,15 @@ public class BpmnProcessInstanceVO {
@ApiModelProperty(value = "租户 ID")
private String tenantId;
/**
* 当前待处理的节点标识
* <p>
* 如果是运行中的实例,有值
* 否则没值
*/
@ApiModelProperty(value = "当前待处理的节点标识")
private String currentDefinitionKey;
/**
* 数据产生版本
*/

View File

@ -7,10 +7,13 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinition
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
import cn.axzo.workflow.common.model.response.category.CategoryItemVO;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.task.api.Task;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static org.mapstruct.NullValueCheckStrategy.ALWAYS;
@ -46,7 +49,8 @@ public interface BpmnProcessInstanceConverter extends EntityConverter<BpmnProces
Optional<BpmnButtonConf> defaultButtonConf,
BpmnTaskDelegateAssigner assigner,
String version,
Optional<CategoryItemVO> category) {
Optional<CategoryItemVO> category,
List<Task> runningTasks) {
BpmnProcessInstanceVO vo = toVo(processInstance);
vo.setCategory(processDefinition.getCategory());
vo.setProcessDefinitionId(processDefinition.getId());
@ -55,6 +59,9 @@ public interface BpmnProcessInstanceConverter extends EntityConverter<BpmnProces
vo.setWorkflowEngineVersion(version);
defaultButtonConf.ifPresent(vo::setDefaultButtonConf);
category.ifPresent(i -> vo.setWorkspaceType(WorkspaceType.getType(Integer.valueOf(i.getWorkspaceTypeCode()))));
if (!CollectionUtils.isEmpty(runningTasks)) {
vo.setCurrentDefinitionKey(runningTasks.get(0).getTaskDefinitionKey());
}
return vo;
}

View File

@ -54,6 +54,7 @@ import org.flowable.engine.HistoryService;
import org.flowable.engine.ManagementService;
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
@ -67,6 +68,7 @@ import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceQuery;
import org.flowable.form.api.FormInfo;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.task.api.Task;
import org.flowable.variable.api.history.HistoricVariableInstance;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@ -125,6 +127,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private BpmnProcessDefinitionService processDefinitionService;
@Resource
private HistoryService historyService;
@ -548,11 +552,16 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
version = FLOW_SERVER_VERSION_121;
}
;
List<Task> runningTasks = taskService.createTaskQuery().processInstanceId(processInstance.getId())
.active()
.orderByTaskCreateTime()
.desc()
.list();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
return instanceConverter.toVo(processInstance, processDefinition, getButtonConfig(bpmnModel.getMainProcess())
, assigner, version, categoryService.get(BPM_MODEL_CATEGORY,
processInstance.getProcessDefinitionKey()));
processInstance.getProcessDefinitionKey()), runningTasks);
}
/**

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long