疯狂的狮子Li
2024-10-25 015b4060011ed00262369d49fc36d420f2f040a4
ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java
@@ -1,12 +1,18 @@
package org.dromara.workflow.service.impl;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.service.WorkflowService;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils;
import org.flowable.engine.TaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * 通用 工作流服务实现
@@ -17,8 +23,10 @@
@Service
public class WorkflowServiceImpl implements WorkflowService {
    private final IActProcessInstanceService iActProcessInstanceService;
    @Autowired(required = false)
    private TaskService taskService;
    private final IActProcessInstanceService actProcessInstanceService;
    private final IActHiProcinstService actHiProcinstService;
    /**
     * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息
     *
@@ -27,7 +35,7 @@
     */
    @Override
    public boolean deleteRunAndHisInstance(List<String> businessKeys) {
        return iActProcessInstanceService.deleteRunAndHisInstance(businessKeys);
        return actProcessInstanceService.deleteRunAndHisInstance(businessKeys);
    }
    /**
@@ -51,25 +59,63 @@
    }
    /**
     * 设置流程实例对象
     * 设置流程变量(全局变量)
     *
     * @param obj         业务对象
     * @param businessKey 业务id
     * @param taskId       任务id
     * @param variableName 变量名称
     * @param value        变量值
     */
    @Override
    public void setBusinessInstanceDTO(Object obj, String businessKey) {
        WorkflowUtils.setBusinessInstanceDTO(obj, businessKey);
    public void setVariable(String taskId, String variableName, Object value) {
        taskService.setVariable(taskId, variableName, value);
    }
    /**
     * 设置流程实例对象
     * 设置流程变量(全局变量)
     *
     * @param obj       业务对象
     * @param idList    业务id
     * @param fieldName 主键属性名称
     * @param taskId    任务id
     * @param variables 流程变量
     */
    @Override
    public void setBusinessInstanceListDTO(Object obj, List<String> idList, String fieldName) {
        WorkflowUtils.setBusinessInstanceListDTO(obj, idList, fieldName);
    public void setVariables(String taskId, Map<String, Object> variables) {
        taskService.setVariables(taskId, variables);
    }
    /**
     * 设置流程变量(本地变量,非全局变量)
     *
     * @param taskId       任务id
     * @param variableName 变量名称
     * @param value        变量值
     */
    @Override
    public void setVariableLocal(String taskId, String variableName, Object value) {
        taskService.setVariableLocal(taskId, variableName, value);
    }
    /**
     * 设置流程变量(本地变量,非全局变量)
     *
     * @param taskId    任务id
     * @param variables 流程变量
     */
    @Override
    public void setVariablesLocal(String taskId, Map<String, Object> variables) {
        taskService.setVariablesLocal(taskId, variables);
    }
    /**
     * 按照业务id查询流程实例id
     *
     * @param businessKey 业务id
     * @return 结果
     */
    @Override
    public String getInstanceIdByBusinessKey(String businessKey) {
        ActHiProcinst actHiProcinst = actHiProcinstService.selectByBusinessKey(businessKey);
        if (actHiProcinst == null) {
            return StrUtil.EMPTY;
        }
        return actHiProcinst.getId();
    }
}