add 添加通用接口

This commit is contained in:
gssong 2024-05-31 22:58:13 +08:00
parent 9175b7a4c1
commit c84f24fe20
5 changed files with 90 additions and 5 deletions

View File

@ -0,0 +1,33 @@
package org.dromara.common.core.service;
import java.util.List;
/**
* 通用 工作流服务
*
* @author may
*/
public interface WorkflowService {
/**
* 运行中的实例 删除程实例删除历史记录删除业务与流程关联信息
*
* @param businessKeys 业务id
* @return 结果
*/
boolean deleteRunAndHisInstance(List<String> businessKeys);
/**
* 获取当前流程状态
*
* @param taskId 任务id
*/
String getBusinessStatusByTaskId(String taskId);
/**
* 获取当前流程状态
*
* @param businessKey 业务id
*/
String getBusinessStatus(String businessKey);
}

View File

@ -180,7 +180,7 @@ public class ActTaskServiceImpl implements IActTaskService {
AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId()); AttachmentCmd attachmentCmd = new AttachmentCmd(completeTaskBo.getFileId(), task.getId(), task.getProcessInstanceId());
managementService.executeCommand(attachmentCmd); managementService.executeCommand(attachmentCmd);
FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey()); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(processInstance.getProcessDefinitionKey());
String businessStatus = WorkflowUtils.getBusinessStatus(task.getProcessInstanceId()); String businessStatus = WorkflowUtils.getBusinessStatus(processInstance.getBusinessKey());
if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) { if (BusinessStatusEnum.DRAFT.getStatus().equals(businessStatus) || BusinessStatusEnum.BACK.getStatus().equals(businessStatus) || BusinessStatusEnum.CANCEL.getStatus().equals(businessStatus)) {
if (processHandler != null) { if (processHandler != null) {
processHandler.handleProcess(processInstance.getBusinessKey(), businessStatus, true); processHandler.handleProcess(processInstance.getBusinessKey(), businessStatus, true);

View File

@ -0,0 +1,52 @@
package org.dromara.workflow.service.impl;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.service.WorkflowService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 通用 工作流服务实现
*
* @author may
*/
@RequiredArgsConstructor
@Service
public class WorkflowServiceImpl implements WorkflowService {
private final IActProcessInstanceService iActProcessInstanceService;
/**
* 运行中的实例 删除程实例删除历史记录删除业务与流程关联信息
*
* @param businessKeys 业务id
* @return 结果
*/
@Override
public boolean deleteRunAndHisInstance(List<String> businessKeys) {
return iActProcessInstanceService.deleteRunAndHisInstance(businessKeys);
}
/**
* 获取当前流程状态
*
* @param taskId 任务id
*/
@Override
public String getBusinessStatusByTaskId(String taskId) {
return WorkflowUtils.getBusinessStatusByTaskId(taskId);
}
/**
* 获取当前流程状态
*
* @param businessKey 业务id
*/
@Override
public String getBusinessStatus(String businessKey) {
return WorkflowUtils.getBusinessStatus(businessKey);
}
}

View File

@ -159,7 +159,7 @@ public class QueryUtils {
} }
TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class); TaskVo taskVo = BeanUtil.toBean(task, TaskVo.class);
taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null); taskVo.setMultiInstance(WorkflowUtils.isMultiInstance(task.getProcessDefinitionId(), task.getTaskDefinitionKey()) != null);
String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getProcessInstanceId()); String businessStatus = WorkflowUtils.getBusinessStatus(taskVo.getBusinessKey());
taskVo.setBusinessStatus(businessStatus); taskVo.setBusinessStatus(businessStatus);
return taskVo; return taskVo;
} }

View File

@ -228,10 +228,10 @@ public class WorkflowUtils {
/** /**
* 获取当前流程状态 * 获取当前流程状态
* *
* @param processInstanceId 流程实例id * @param businessKey 业务id
*/ */
public static String getBusinessStatus(String processInstanceId) { public static String getBusinessStatus(String businessKey) {
HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult();
return historicProcessInstance.getBusinessStatus(); return historicProcessInstance.getBusinessStatus();
} }