feat(workflow): 新增工作流任务处理相关功能

- 新增 completeTaskIgnoreAuth 方法,用于系统后台发起审批时忽略权限
- 新增 getCurrentActiveTaskId 方法,根据业务ID获取当前活跃任务ID
- 新增 getCurrentTaskIdByInstanceId 方法,根据流程实例ID获取当前活跃任务ID
- 修改 completeTask 方法名称为 completeTaskIgnoreAuth,系统后台发起审批 无用户信息 需要忽略权限(completeTask.getVariables().put("ignore", true);)
master
zch 1 week ago
parent df28ff1633
commit a65d398858

@ -85,4 +85,30 @@ public interface RemoteWorkflowService {
*/
boolean completeTask(RemoteCompleteTask completeTask);
/**
*
*
* completeTask.getVariables().put("ignore", true);
*
* @param taskId ID
* @param message
*/
boolean completeTaskIgnoreAuth(Long taskId, String message);
/**
* IDID
* ID
*
* @param businessId ID
* @return IDnull
*/
Long getCurrentActiveTaskId(String businessId);
/**
* IDID
*
* @param instanceId ID
* @return IDnull
*/
Long getCurrentTaskIdByInstanceId(Long instanceId);
}

@ -68,4 +68,19 @@ public class RemoteWorkflowServiceImpl implements RemoteWorkflowService {
return workflowService.completeTask(completeTask);
}
@Override
public boolean completeTaskIgnoreAuth(Long taskId, String message) {
return workflowService.completeTaskIgnoreAuth(taskId, message);
}
@Override
public Long getCurrentActiveTaskId(String businessId) {
return workflowService.getCurrentActiveTaskId(businessId);
}
@Override
public Long getCurrentTaskIdByInstanceId(Long instanceId) {
return workflowService.getCurrentTaskIdByInstanceId(instanceId);
}
}

@ -90,6 +90,23 @@ public interface WorkflowService {
* @param taskId ID
* @param message
*/
boolean completeTask(Long taskId, String message);
boolean completeTaskIgnoreAuth(Long taskId, String message);
/**
* IDID
* ID
*
* @param businessId ID
* @return IDnull
*/
Long getCurrentActiveTaskId(String businessId);
/**
* IDID
*
* @param instanceId ID
* @return IDnull
*/
Long getCurrentTaskIdByInstanceId(Long instanceId);
}

@ -3,6 +3,7 @@ package org.dromara.workflow.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.workflow.api.domain.RemoteCompleteTask;
@ -19,12 +20,14 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Optional;
/**
*
*
* @author may
*/
@Slf4j
@ConditionalOnEnable
@RequiredArgsConstructor
@Service
@ -139,7 +142,7 @@ public class WorkflowServiceImpl implements WorkflowService {
* @param message
*/
@Override
public boolean completeTask(Long taskId, String message) {
public boolean completeTaskIgnoreAuth(Long taskId, String message) {
CompleteTaskBo completeTask = new CompleteTaskBo();
completeTask.setTaskId(taskId);
completeTask.setMessage(message);
@ -148,4 +151,51 @@ public class WorkflowServiceImpl implements WorkflowService {
return flwTaskService.completeTask(completeTask);
}
/**
* IDID
* ID
*
* @param businessId ID
* @return IDnull
*/
@Override
public Long getCurrentActiveTaskId(String businessId) {
// 先获取流程实例ID
Long instanceId = getInstanceIdByBusinessId(businessId);
if (instanceId == null) {
return null;
}
// 通过流程实例ID获取当前活跃任务ID
return getCurrentTaskIdByInstanceId(instanceId);
}
/**
* IDID
*
* @param instanceId ID
* @return IDnull
*/
@Override
public Long getCurrentTaskIdByInstanceId(Long instanceId) {
if (instanceId == null) {
return null;
}
try {
// 获取该流程实例下的所有活跃任务
List<org.dromara.warm.flow.orm.entity.FlowTask> activeTasks = flwTaskService.selectByInstId(instanceId);
// 过滤出当前活跃的任务del_flag=0
Optional<org.dromara.warm.flow.orm.entity.FlowTask> activeTask = activeTasks.stream()
.filter(task -> "0".equals(task.getDelFlag()))
.findFirst();
return activeTask.map(org.dromara.warm.flow.orm.entity.FlowTask::getId).orElse(null);
} catch (Exception e) {
log.error("获取当前活跃任务失败instanceId: {}", instanceId, e);
return null;
}
}
}

Loading…
Cancel
Save