From b4e1e32d207b61da05d738c68494daa4fc7f18c7 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sat, 9 Mar 2024 13:40:41 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/FlowConstant.java | 10 +++++++ .../controller/ActTaskController.java | 12 ++++++++ .../workflow/service/IActTaskService.java | 10 +++++++ .../service/impl/ActTaskServiceImpl.java | 30 ++++++++++++++++--- 4 files changed, 58 insertions(+), 4 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java index 614f9fffa..1e9d79b36 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -80,6 +80,16 @@ public interface FlowConstant { */ String INITIATOR = "initiator"; + /** + * 流程实例id + */ + String PROCESS_INSTANCE_ID = "processInstanceId"; + + /** + * 业务id + */ + String BUSINESS_KEY = "businessKey"; + /** * 开启跳过表达式变量 */ diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java index f84f1db60..06727f255 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/ActTaskController.java @@ -14,6 +14,7 @@ import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.TaskVo; +import org.dromara.workflow.domain.vo.VariableVo; import org.dromara.workflow.service.IActTaskService; import org.dromara.workflow.utils.QueryUtils; import org.dromara.workflow.utils.WorkflowUtils; @@ -21,6 +22,7 @@ import org.flowable.engine.TaskService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; /** @@ -245,4 +247,14 @@ public class ActTaskController extends BaseController { public R updateAssignee(@PathVariable String[] taskIds, @PathVariable String userId) { return toAjax(actTaskService.updateAssignee(taskIds, userId)); } + + /** + * 查询流程变量 + * + * @param taskId 任务id + */ + @GetMapping("/getInstanceVariable/{taskId}") + public R> getProcessInstVariable(@PathVariable String taskId) { + return R.ok(actTaskService.getInstanceVariable(taskId)); + } } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java index a40c3d737..45c3de230 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IActTaskService.java @@ -4,7 +4,9 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.TaskVo; +import org.dromara.workflow.domain.vo.VariableVo; +import java.util.List; import java.util.Map; /** @@ -132,4 +134,12 @@ public interface IActTaskService { * @return 结果 */ boolean updateAssignee(String[] taskIds, String userId); + + /** + * 查询流程变量 + * + * @param taskId 任务id + * @return 结果 + */ + List getInstanceVariable(String taskId); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java index 9b60f349d..8890279fe 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActTaskServiceImpl.java @@ -23,6 +23,7 @@ import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.vo.MultiInstanceVo; import org.dromara.workflow.domain.vo.TaskVo; +import org.dromara.workflow.domain.vo.VariableVo; import org.dromara.workflow.domain.vo.WfCopy; import org.dromara.workflow.flowable.cmd.*; import org.dromara.workflow.flowable.strategy.FlowEventStrategy; @@ -46,6 +47,7 @@ import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; +import org.flowable.variable.api.persistence.entity.VariableInstance; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -53,8 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.stream.Collectors; -import static org.dromara.workflow.common.constant.FlowConstant.FLOWABLE_SKIP_EXPRESSION_ENABLED; -import static org.dromara.workflow.common.constant.FlowConstant.INITIATOR; +import static org.dromara.workflow.common.constant.FlowConstant.*; /** * 任务 服务层实现 @@ -96,7 +97,7 @@ public class ActTaskServiceImpl implements IActTaskService { if (CollUtil.isNotEmpty(startProcessBo.getVariables())) { taskService.setVariables(taskResult.get(0).getId(), startProcessBo.getVariables()); } - map.put("processInstanceId", taskResult.get(0).getProcessInstanceId()); + map.put(PROCESS_INSTANCE_ID, taskResult.get(0).getProcessInstanceId()); map.put("taskId", taskResult.get(0).getId()); return map; } @@ -129,7 +130,8 @@ public class ActTaskServiceImpl implements IActTaskService { runtimeService.updateBusinessStatus(pi.getProcessInstanceId(), BusinessStatusEnum.DRAFT.getStatus()); taskService.setAssignee(taskList.get(0).getId(), LoginHelper.getUserId().toString()); - taskService.setVariable(taskList.get(0).getId(), "processInstanceId", pi.getProcessInstanceId()); + taskService.setVariable(taskList.get(0).getId(), PROCESS_INSTANCE_ID, pi.getProcessInstanceId()); + taskService.setVariable(taskList.get(0).getId(), BUSINESS_KEY, pi.getBusinessKey()); map.put("processInstanceId", pi.getProcessInstanceId()); map.put("taskId", taskList.get(0).getId()); return map; @@ -705,4 +707,24 @@ public class ActTaskServiceImpl implements IActTaskService { } return true; } + + /** + * 查询流程变量 + * + * @param taskId 任务id + */ + @Override + public List getInstanceVariable(String taskId) { + List variableVoList = new ArrayList<>(); + Map variableInstances = taskService.getVariableInstances(taskId); + if (CollectionUtil.isNotEmpty(variableInstances)) { + for (Map.Entry entry : variableInstances.entrySet()) { + VariableVo variableVo = new VariableVo(); + variableVo.setKey(entry.getKey()); + variableVo.setValue(entry.getValue().getValue().toString()); + variableVoList.add(variableVo); + } + } + return variableVoList; + } }