mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 20:49:00 +08:00
feat(flow-engine): 增强流程结束功能并记录完成原因
- 新增ProcessInstanceParamDto中paramMap参数的传递 - 在ProcessInstanceRecord表中添加finish_reason字段 - 根据approve_condition自动设置流程结束原因 - 重构endProcess方法以支持参数传递
This commit is contained in:
1 parent
2b1742470c
commit
298d09586d
10 files changed
+45
-25
No files matched your search
@@ -1496,6 +1496,7 @@ CREATE TABLE `process_instance_record` (
|
||||
`group_id` bigint DEFAULT NULL COMMENT '组id',
|
||||
`group_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '组名称',
|
||||
`status` int DEFAULT '1' COMMENT '状态',
|
||||
`finish_reason` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '结束原因',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`parent_process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上级流程实例id',
|
||||
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
|
||||
|
||||
@@ -97,6 +97,7 @@ CREATE TABLE `process_instance_record` (
|
||||
`group_id` bigint DEFAULT NULL COMMENT '组id',
|
||||
`group_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '组名称',
|
||||
`status` int DEFAULT '1' COMMENT '状态',
|
||||
`finish_reason` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '结束原因',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`parent_process_instance_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '上级流程实例id',
|
||||
`tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '所属租户id',
|
||||
|
||||
+1
@@ -165,6 +165,7 @@ public class FlowProcessEventListener implements FlowableEventListener {
|
||||
// 构建流程结束参数并发送事件
|
||||
ProcessInstanceParamDto processInstanceParamDto = new ProcessInstanceParamDto();
|
||||
processInstanceParamDto.setProcessInstanceId(processInstanceId);
|
||||
processInstanceParamDto.setParamMap(execution.getVariables());
|
||||
remoteFlowTaskService.endProcessEvent(processInstanceParamDto);
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -1,16 +1,16 @@
|
||||
package com.pig4cloud.pigx.flow.task.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
public enum NodeStatusEnum {
|
||||
|
||||
WKS(0, "未开始"), JXZ(1, "进行中"), YJS(2, "已结束"),;
|
||||
WKS(0, "未开始"), JXZ(1, "进行中"), YJS(2, "已结束");
|
||||
|
||||
private int code;
|
||||
private final int code;
|
||||
|
||||
private String name;
|
||||
private final String name;
|
||||
|
||||
}
|
||||
+6
@@ -80,6 +80,12 @@ public class ProcessInstanceRecord {
|
||||
@TableField("status")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 完成原因
|
||||
*/
|
||||
@TableField("finish_reason")
|
||||
private String finishReason;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
|
||||
+1
-1
@@ -136,7 +136,7 @@ public class RemoteController {
|
||||
*/
|
||||
@PostMapping("endProcess")
|
||||
public R endProcess(@RequestBody ProcessInstanceParamDto processInstanceParamDto) {
|
||||
return remoteService.endProcess(processInstanceParamDto.getProcessInstanceId());
|
||||
return remoteService.endProcess(processInstanceParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+5
-4
@@ -32,11 +32,12 @@ public interface IProcessInstanceService {
|
||||
R queryMineEndTask(TaskQueryParamDto taskQueryParamDto);
|
||||
|
||||
/**
|
||||
* 流程结束
|
||||
* @param processsInstanceId
|
||||
* @return
|
||||
* 结束流程实例
|
||||
*
|
||||
* @param processInstanceParamDto 包含流程实例ID的参数对象
|
||||
* @return 返回结果,具体类型未定义
|
||||
*/
|
||||
R end(String processsInstanceId);
|
||||
R end(ProcessInstanceParamDto processInstanceParamDto);
|
||||
|
||||
/**
|
||||
* 查询我发起的
|
||||
|
||||
+5
-4
@@ -90,11 +90,12 @@ public interface IRemoteService {
|
||||
R taskEndEvent(ProcessNodeRecordAssignUserParamDto processNodeRecordAssignUserParamDto);
|
||||
|
||||
/**
|
||||
* 实例结束
|
||||
* @param processInstanceId
|
||||
* @return
|
||||
* 结束流程实例的方法
|
||||
*
|
||||
* @param processInstanceParamDto 包含流程实例参数的数据传输对象
|
||||
* @return 返回流程实例结束的结果,具体返回类型未指定
|
||||
*/
|
||||
R endProcess(String processInstanceId);
|
||||
R endProcess(ProcessInstanceParamDto processInstanceParamDto);
|
||||
|
||||
/**
|
||||
* 查询流程管理员
|
||||
|
||||
+14
-6
@@ -3,6 +3,7 @@ package com.pig4cloud.pigx.flow.task.service.impl;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -17,8 +18,8 @@ import com.pig4cloud.pigx.flow.task.api.feign.RemoteFlowEngineService;
|
||||
import com.pig4cloud.pigx.flow.task.constant.NodeStatusEnum;
|
||||
import com.pig4cloud.pigx.flow.task.constant.NodeUserTypeEnum;
|
||||
import com.pig4cloud.pigx.flow.task.dto.*;
|
||||
import com.pig4cloud.pigx.flow.task.entity.Process;
|
||||
import com.pig4cloud.pigx.flow.task.entity.*;
|
||||
import com.pig4cloud.pigx.flow.task.entity.Process;
|
||||
import com.pig4cloud.pigx.flow.task.service.*;
|
||||
import com.pig4cloud.pigx.flow.task.utils.NodeFormatUtil;
|
||||
import com.pig4cloud.pigx.flow.task.vo.NodeFormatParamVo;
|
||||
@@ -202,17 +203,24 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 流程结束
|
||||
* 结束流程实例
|
||||
*
|
||||
* @param processsInstanceId
|
||||
* @return
|
||||
* @param processInstanceParamDto 流程实例参数数据传输对象
|
||||
* @return 返回处理结果
|
||||
*/
|
||||
@Override
|
||||
public R end(String processsInstanceId) {
|
||||
public R end(ProcessInstanceParamDto processInstanceParamDto) {
|
||||
|
||||
Optional<Object> objectOptional = processInstanceParamDto.getParamMap().keySet().stream()
|
||||
.filter(key -> key.contains("approve_condition"))
|
||||
.reduce((first, second) -> second)
|
||||
.map(key -> MapUtil.getBool(processInstanceParamDto.getParamMap(), key, true));
|
||||
|
||||
processInstanceRecordService.lambdaUpdate()
|
||||
.set(ProcessInstanceRecord::getEndTime, new Date())
|
||||
.set(ProcessInstanceRecord::getStatus, NodeStatusEnum.YJS.getCode())
|
||||
.eq(ProcessInstanceRecord::getProcessInstanceId, processsInstanceId)
|
||||
.set(objectOptional.isPresent(), ProcessInstanceRecord::getFinishReason, objectOptional.get())
|
||||
.eq(ProcessInstanceRecord::getProcessInstanceId, processInstanceParamDto.getProcessInstanceId())
|
||||
.update(new ProcessInstanceRecord());
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
+6
-5
@@ -236,13 +236,14 @@ public class RemoteServiceImpl implements IRemoteService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 实例结束
|
||||
* @param processInstanceId
|
||||
* @return
|
||||
* 结束流程实例的方法
|
||||
*
|
||||
* @param processInstanceParamDto 包含流程实例标识的参数对象
|
||||
* @return 流程实例结束操作的响应结果
|
||||
*/
|
||||
@Override
|
||||
public R endProcess(String processInstanceId) {
|
||||
return processInstanceService.end(processInstanceId);
|
||||
public R endProcess(ProcessInstanceParamDto processInstanceParamDto) {
|
||||
return processInstanceService.end(processInstanceParamDto);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user