This commit is contained in:
那些花儿
2025-08-01 14:45:20 +08:00
parent fc0d86c812
commit d4ba5aa689
81 changed files with 6051 additions and 3117 deletions
@@ -260,7 +260,6 @@ public class FlowCommonController {
flowEngine.executeProcessTask(processTaskId, operator, args);
} else if (ObjectUtil.equals(submitType, ProcessSubmitTypeEnum.RE_APPLY.getCode())) {
// 重新提交
// args.put(FlowConst.FORM_DATA, args.getStr(FlowConst.FORM_DATA));
flowEngine.executeProcessTask(processTaskId, operator, args);
} else {
// 默认执行
@@ -89,6 +89,7 @@ public class FlowEngineImpl implements FlowEngine {
}
// 2. 将流程定义文件转成流程模型
ProcessModel processModel = processDefineService.processDefineToModel(processDefine);
// 3. 根据流程定义对象创建流程实例
ProcessInstance processInstance = processInstanceService.createProcessInstance(processDefine, businessKey, operator, args, parentId, parentNodeName);
args.set(FlowConst.PROCESS_INSTANCE_ID_KEY, processInstance.getId());
@@ -28,6 +28,7 @@ public class CountersignHandler implements IHandler {
boolean isMerged = false;
String countersignType = taskModel.getExt().get("countersignType","PARALLEL");
String countersignCompletionCondition = taskModel.getExt().get("countersignCompletionCondition","");
countersignCompletionCondition = taskModel.getCountersignCompletionCondition();
String prefix = FlowConst.COUNTERSIGN_VARIABLE_PREFIX +taskModel.getName()+"_";
// 会签办理人列表
List<String> operatorList = Convert.toList(String.class,execution.getArgs().get(prefix+FlowConst.COUNTERSIGN_OPERATOR_LIST));
@@ -460,7 +460,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
addVariable.put(prefix + FlowConst.NR_OF_COMPLETED_INSTANCES, execution.getArgs().get(prefix + FlowConst.NR_OF_COMPLETED_INSTANCES));
// 更新会签操作人列表countersignOperatorList
addVariable.put(prefix + FlowConst.COUNTERSIGN_OPERATOR_LIST, taskActors);
ProcessInstanceService processInstanceService = SpringUtil.getBean(ProcessInstanceService.class);
ProcessInstanceService processInstanceService = ServiceContext.find(ProcessInstanceService.class);
processInstanceService.addVariable(processInstanceId, addVariable);
}
@@ -7,7 +7,6 @@ import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.service.impl.BaseServiceImpl;
@@ -15,6 +14,7 @@ import com.budwk.app.base.vo.LabelValueVO;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.AssignmentHandler;
import com.budwk.app.flow.engine.core.Execution;
import com.budwk.app.flow.engine.core.ServiceContext;
import com.budwk.app.flow.engine.event.ProcessEvent;
import com.budwk.app.flow.engine.event.ProcessPublisher;
import com.budwk.app.flow.engine.model.CustomModel;
@@ -179,13 +179,10 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
// 增加是否为第一个任务节点标识
execution.getArgs().put(FlowConst.IS_FIRST_TASK_NODE, FlowUtil.isFistTaskName(execution.getProcessModel(), taskModel.getName()));
//过滤上个任务的表单数据 避免造成污染 每个任务只保存自己的表单数据
Dict cleanArgs = Dict.create();
execution.getArgs().forEach((k, v) -> {
if (!k.startsWith(FlowConst.TASK_FORM_DATA_PREFIX)) {
cleanArgs.set(k, v);
}
});
execution.setArgs(cleanArgs);
List<String> removeKeys = execution.getArgs().keySet().stream().filter(k -> k.startsWith(FlowConst.TASK_FORM_DATA_PREFIX) || k.equals(FlowConst.SUBMIT_TYPE) || k.startsWith(FlowConst.COUNTERSIGN_VARIABLE_PREFIX)).toList();
for (String key : removeKeys) {
execution.getArgs().remove(key);
}
processTask.setVariable(JSONUtil.toJsonStr(execution.getArgs()));
processTask.setCreatedAt(now);
@@ -367,6 +364,7 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
}
@Override
@Aop(TransAop.READ_COMMITTED)
public List<ProcessTask> createCountersignTask(TaskModel taskModel, Execution execution) {
List<ProcessTask> processTaskList = new ArrayList<>();
List<String> taskActors = getTaskActors(taskModel, execution);
@@ -399,7 +397,15 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
processTask.setTaskState(ProcessTaskStateEnum.DOING.getCode());
processTask.setTaskType(taskModel.getTaskType().getCode());
processTask.setProcessInstanceId(execution.getProcessInstanceId());
// 增加是否为第一个任务节点标识
execution.getArgs().put(FlowConst.IS_FIRST_TASK_NODE, FlowUtil.isFistTaskName(execution.getProcessModel(), taskModel.getName()));
//过滤上个任务的表单数据 避免造成污染 每个任务只保存自己的表单数据
List<String> removeKeys = execution.getArgs().keySet().stream().filter(k -> k.startsWith(FlowConst.TASK_FORM_DATA_PREFIX) || k.equals(FlowConst.SUBMIT_TYPE) || k.startsWith(FlowConst.COUNTERSIGN_VARIABLE_PREFIX)).toList();
for (String key : removeKeys) {
execution.getArgs().remove(key);
}
processTask.setVariable(JSONUtil.toJsonStr(execution.getArgs()));
processTask.setCreatedAt(now);
processTask.setUpdatedAt(now);
@@ -414,7 +420,7 @@ public class ProcessTaskServiceImpl extends BaseServiceImpl<ProcessTask> impleme
processTaskList.add(processTask);
addTaskActor(processTask.getId(), CollectionUtil.newArrayList(taskActor));
});
ProcessInstanceService processInstanceService = SpringUtil.getBean(ProcessInstanceService.class);
ProcessInstanceService processInstanceService = ServiceContext.find(ProcessInstanceService.class);
// 更新会签变量到流程实例参数中
processInstanceService.updateCountersignVariable(taskModel, execution, taskActors);
return processTaskList;