新增支持根据businessKey查询实例列表方法

This commit is contained in:
hubin 2024-12-10 21:07:26 +08:00
parent 6639c40bcd
commit 35266f2314
8 changed files with 51 additions and 11 deletions

View File

@ -186,4 +186,19 @@ public interface QueryService {
*/
Optional<List<FlwInstance>> getSubProcessByInstanceId(Long instanceId);
/**
* 根据业务主键获取流程实例
*
* @param businessKey 业务主键
* @return 流程实例列表
*/
Optional<List<FlwInstance>> getInstancesByBusinessKey(String businessKey);
/**
* 根据业务主键获取历史流程实例
*
* @param businessKey 业务主键
* @return 历史流程实例列表
*/
Optional<List<FlwHisInstance>> getHisInstancesByBusinessKey(String businessKey);
}

View File

@ -7,6 +7,7 @@ package com.aizuda.bpm.engine.dao;
import com.aizuda.bpm.engine.entity.FlwHisInstance;
import java.util.List;
import java.util.Optional;
/**
* 历史流程实例数据访问层接口
@ -30,5 +31,7 @@ public interface FlwHisInstanceDao {
FlwHisInstance selectById(Long id);
List<FlwHisInstance> selectListByProcessId(Long processId);
Optional<List<FlwHisInstance>> selectListByProcessId(Long processId);
Optional<List<FlwHisInstance>> selectListByBusinessKey(String businessKey);
}

View File

@ -34,4 +34,6 @@ public interface FlwInstanceDao {
FlwInstance selectById(Long id);
Optional<List<FlwInstance>> selectListByParentInstanceId(Long parentInstanceId);
Optional<List<FlwInstance>> selectListByBusinessKey(String businessKey);
}

View File

@ -131,4 +131,13 @@ public class QueryServiceImpl implements QueryService {
return instanceDao.selectListByParentInstanceId(instanceId);
}
@Override
public Optional<List<FlwInstance>> getInstancesByBusinessKey(String businessKey) {
return instanceDao.selectListByBusinessKey(businessKey);
}
@Override
public Optional<List<FlwHisInstance>> getHisInstancesByBusinessKey(String businessKey) {
return hisInstanceDao.selectListByBusinessKey(businessKey);
}
}

View File

@ -10,7 +10,6 @@ import com.aizuda.bpm.engine.RuntimeService;
import com.aizuda.bpm.engine.TaskService;
import com.aizuda.bpm.engine.assist.Assert;
import com.aizuda.bpm.engine.assist.DateUtils;
import com.aizuda.bpm.engine.assist.ObjectUtils;
import com.aizuda.bpm.engine.core.Execution;
import com.aizuda.bpm.engine.core.FlowCreator;
import com.aizuda.bpm.engine.core.FlowLongContext;
@ -28,7 +27,6 @@ import com.aizuda.bpm.engine.model.NodeModel;
import com.aizuda.bpm.engine.model.ProcessModel;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
@ -302,10 +300,10 @@ public class RuntimeServiceImpl implements RuntimeService {
*/
@Override
public void cascadeRemoveByProcessId(Long processId) {
List<FlwHisInstance> flwHisInstances = hisInstanceDao.selectListByProcessId(processId);
if (ObjectUtils.isNotEmpty(flwHisInstances)) {
hisInstanceDao.selectListByProcessId(processId).ifPresent(hisInstances -> {
// 删除活动任务相关信息
taskService.cascadeRemoveByInstanceIds(flwHisInstances.stream().map(FlowEntity::getId).collect(Collectors.toList()));
taskService.cascadeRemoveByInstanceIds(hisInstances.stream().map(FlowEntity::getId).collect(Collectors.toList()));
// 删除扩展实例
extInstanceDao.deleteByProcessId(processId);
@ -315,7 +313,7 @@ public class RuntimeServiceImpl implements RuntimeService {
// 删除实例
instanceDao.deleteByProcessId(processId);
}
});
}
@Override

View File

@ -950,7 +950,7 @@ public class TaskServiceImpl implements TaskService {
final long instanceId = flwTask.getInstanceId();
execution.getEngine().startProcessInstance(flwProcess, flowCreator, null, () -> {
FlwInstance flwInstance = new FlwInstance();
flwInstance.setBusinessKey(nodeModel.getNodeKey());
flwInstance.setCurrentNodeKey(nodeModel.getNodeKey());
flwInstance.setParentInstanceId(instanceId);
return flwInstance;
}).ifPresent(instance -> {

View File

@ -10,6 +10,7 @@ import com.aizuda.bpm.mybatisplus.mapper.FlwHisInstanceMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.util.List;
import java.util.Optional;
/**
* 历史流程实例数据访问层接口实现类
@ -55,8 +56,14 @@ public class FlwHisInstanceDaoImpl implements FlwHisInstanceDao {
}
@Override
public List<FlwHisInstance> selectListByProcessId(Long processId) {
return hisInstanceMapper.selectList(Wrappers.<FlwHisInstance>lambdaQuery()
.eq(FlwHisInstance::getProcessId, processId));
public Optional<List<FlwHisInstance>> selectListByProcessId(Long processId) {
return Optional.ofNullable(hisInstanceMapper.selectList(Wrappers.<FlwHisInstance>lambdaQuery()
.eq(FlwHisInstance::getProcessId, processId)));
}
@Override
public Optional<List<FlwHisInstance>> selectListByBusinessKey(String businessKey) {
return Optional.ofNullable(hisInstanceMapper.selectList(Wrappers.<FlwHisInstance>lambdaQuery()
.eq(FlwHisInstance::getBusinessKey, businessKey)));
}
}

View File

@ -65,4 +65,10 @@ public class FlwInstanceDaoImpl implements FlwInstanceDao {
return Optional.ofNullable(instanceMapper.selectList(Wrappers.<FlwInstance>lambdaQuery()
.eq(FlwInstance::getParentInstanceId, parentInstanceId)));
}
@Override
public Optional<List<FlwInstance>> selectListByBusinessKey(String businessKey) {
return Optional.ofNullable(instanceMapper.selectList(Wrappers.<FlwInstance>lambdaQuery()
.eq(FlwInstance::getBusinessKey, businessKey)));
}
}