| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.domain.dto.CompleteTaskDTO; |
| | | import org.dromara.common.core.domain.dto.StartProcessDTO; |
| | | 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.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.warm.flow.orm.entity.FlowInstance; |
| | | import org.dromara.workflow.common.ConditionalOnEnable; |
| | | import org.dromara.workflow.domain.bo.CompleteTaskBo; |
| | | import org.dromara.workflow.domain.bo.StartProcessBo; |
| | | import org.dromara.workflow.service.IFlwDefinitionService; |
| | | import org.dromara.workflow.service.IFlwInstanceService; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | |
| | | * |
| | | * @author may |
| | | */ |
| | | @ConditionalOnEnable |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class WorkflowServiceImpl implements WorkflowService { |
| | | |
| | | @Autowired(required = false) |
| | | private TaskService taskService; |
| | | private final IActProcessInstanceService actProcessInstanceService; |
| | | private final IActHiProcinstService actHiProcinstService; |
| | | private final IFlwInstanceService flwInstanceService; |
| | | private final IFlwDefinitionService flwDefinitionService; |
| | | private final IFlwTaskService flwTaskService; |
| | | |
| | | /** |
| | | * 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 |
| | | * 删除流程实例 |
| | | * |
| | | * @param businessKeys 业务id |
| | | * @param businessIds 业务id |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public boolean deleteRunAndHisInstance(List<String> businessKeys) { |
| | | return actProcessInstanceService.deleteRunAndHisInstance(businessKeys); |
| | | public boolean deleteInstance(List<Long> businessIds) { |
| | | return flwInstanceService.deleteByBusinessIds(businessIds); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param taskId 任务id |
| | | */ |
| | | @Override |
| | | public String getBusinessStatusByTaskId(String taskId) { |
| | | return WorkflowUtils.getBusinessStatusByTaskId(taskId); |
| | | public String getBusinessStatusByTaskId(Long taskId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectByTaskId(taskId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; |
| | | } |
| | | |
| | | /** |
| | | * 获取当前流程状态 |
| | | * |
| | | * @param businessKey 业务id |
| | | * @param businessId 业务id |
| | | */ |
| | | @Override |
| | | public String getBusinessStatus(String businessKey) { |
| | | return WorkflowUtils.getBusinessStatus(businessKey); |
| | | public String getBusinessStatus(String businessId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; |
| | | } |
| | | |
| | | /** |
| | | * 设置流程变量(全局变量) |
| | | * 设置流程变量 |
| | | * |
| | | * @param taskId 任务id |
| | | * @param variableName 变量名称 |
| | | * @param value 变量值 |
| | | * @param instanceId 流程实例id |
| | | * @param variables 流程变量 |
| | | */ |
| | | @Override |
| | | public void setVariable(String taskId, String variableName, Object value) { |
| | | taskService.setVariable(taskId, variableName, value); |
| | | } |
| | | |
| | | /** |
| | | * 设置流程变量(全局变量) |
| | | * |
| | | * @param taskId 任务id |
| | | * @param variables 流程变量 |
| | | */ |
| | | @Override |
| | | 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); |
| | | public void setVariable(Long instanceId, Map<String, Object> variables) { |
| | | flwInstanceService.setVariable(instanceId, variables); |
| | | } |
| | | |
| | | /** |
| | | * 按照业务id查询流程实例id |
| | | * |
| | | * @param businessKey 业务id |
| | | * @param businessId 业务id |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public String getInstanceIdByBusinessKey(String businessKey) { |
| | | ActHiProcinst actHiProcinst = actHiProcinstService.selectByBusinessKey(businessKey); |
| | | if (actHiProcinst == null) { |
| | | return StrUtil.EMPTY; |
| | | } |
| | | return actHiProcinst.getId(); |
| | | public Long getInstanceIdByBusinessId(String businessId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getId() : null; |
| | | } |
| | | |
| | | /** |
| | | * 新增租户流程定义 |
| | | * |
| | | * @param tenantId 租户id |
| | | */ |
| | | @Override |
| | | public void syncDef(String tenantId) { |
| | | flwDefinitionService.syncDef(tenantId); |
| | | } |
| | | |
| | | /** |
| | | * 启动流程 |
| | | * |
| | | * @param startProcess 参数 |
| | | */ |
| | | @Override |
| | | public Map<String, Object> startWorkFlow(StartProcessDTO startProcess) { |
| | | return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class)); |
| | | } |
| | | |
| | | /** |
| | | * 办理任务 |
| | | * |
| | | * @param completeTask 参数 |
| | | */ |
| | | @Override |
| | | public boolean completeTask(CompleteTaskDTO completeTask) { |
| | | return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class)); |
| | | } |
| | | } |