fix:节点参数绑定算例

This commit is contained in:
2025-12-04 15:34:57 +08:00
parent 653593c655
commit b0688e30a8
9 changed files with 25 additions and 19 deletions

View File

@@ -90,9 +90,9 @@ public class ProcessController implements IFlowableFeignClient {
// 保存节点用户输入参数先基于流程定义ID等流程启动后保存流程实例ID作为参数模板
@PostMapping("/saveParamsByDefinitionId")
public SdmResponse saveParamsByDefinitionId(@RequestParam String processDefinitionId, @RequestParam String nodeId,
public SdmResponse saveParamsByDefinitionId(@RequestParam String processDefinitionId, @RequestParam String nodeId, @RequestParam String runId,
@RequestBody Map<String, Object> params) {
processNodeParamService.saveParamByProcessDefinitionId(processDefinitionId, nodeId, params);
processNodeParamService.saveParamByProcessDefinitionId(processDefinitionId, nodeId, runId, params);
return SdmResponse.success();
}
@@ -133,8 +133,8 @@ public class ProcessController implements IFlowableFeignClient {
* 如果还传了processInstanceId再封装流程状态和节点状态
*/
@GetMapping("/getProcessAndNodeDetailByInstanceId")
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(@RequestParam String processDefinitionId,@RequestParam(required = false) String processInstanceId) {
return processService.getProcessAndNodeDetailByInstanceId(processDefinitionId,processInstanceId);
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(@RequestParam String processDefinitionId,@RequestParam(required = false) String processInstanceId,@RequestParam String runId) {
return processService.getProcessAndNodeDetailByInstanceId(processDefinitionId,processInstanceId,runId);
}

View File

@@ -51,7 +51,7 @@ public class UniversalDelegate implements JavaDelegate {
log.info("开始执行节点, 流程实例ID: {}, 节点ID: {}, 节点名称: {}", procInstId, nodeId, nodeName);
// 2. 读取输入参数
Map<String, Object> params = processNodeParamService.getParam(processDefinitionId, nodeId);
Map<String, Object> params = processNodeParamService.getParam(processDefinitionId, nodeId, null);
log.info("节点执行参数, 流程实例ID: {}, 节点ID: {}, 参数: {}", procInstId, nodeId, params);

View File

@@ -44,6 +44,10 @@ public class ProcessNodeParam implements Serializable {
@TableField("nodeId")
private String nodeId;
@ApiModelProperty(value = "流程绑定的算例uuid")
@TableField("runId")
private String runId;
@ApiModelProperty(value = "输入参数JSON")
@TableField("paramJson")
private String paramJson;

View File

@@ -142,7 +142,7 @@ public class ProcessService {
* 如果只传了processDefinitionId根据流程定义返回流程基本信息和节点信息
* 如果还传了processInstanceId再封装流程状态和节点状态
*/
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(String processDefinitionId, String processInstanceId) {
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(String processDefinitionId, String processInstanceId, String runId) {
ProcessInstanceDetailResponse response = new ProcessInstanceDetailResponse();
// 构建基础流程信息
@@ -154,7 +154,7 @@ public class ProcessService {
List<NodeDetailInfo> nodes = orderedNodes.stream()
.map(this::buildNodeDetailInfoFromFlowNode) // 直接构建NodeDetailInfo
.peek(detail -> {
Map<String, Object> params = processNodeParamService.getParam(processDefinitionId, detail.getId());
Map<String, Object> params = processNodeParamService.getParam(processDefinitionId, detail.getId(), runId);
detail.setUserParam(params);
})
.collect(Collectors.toList());

View File

@@ -14,7 +14,7 @@ import java.util.Map;
* @since 2025-11-25
*/
public interface IProcessNodeParamService extends IService<ProcessNodeParam> {
void saveParamByProcessDefinitionId(String processDefinitionId, String nodeId, Map<String, Object> params);
void saveParamByProcessDefinitionId(String processDefinitionId, String nodeId, String runId, Map<String, Object> params);
void updateNodeParamProcessInstanceId(String processInstanceId, String processDefinitionId);
Map<String, Object> getParam(String processDefinitionId, String nodeId);
Map<String, Object> getParam(String processDefinitionId, String nodeId, String runId);
}

View File

@@ -35,10 +35,11 @@ public class ProcessNodeParamServiceImpl extends ServiceImpl<ProcessNodeParamMap
private RuntimeService runtimeService;
// 保存节点输入参数(按流程实例保存,用于参数模板)
public void saveParamByProcessDefinitionId(String processDefinitionId, String nodeId, Map<String, Object> params) {
public void saveParamByProcessDefinitionId(String processDefinitionId, String nodeId, String runId, Map<String, Object> params) {
ProcessNodeParam param = new ProcessNodeParam();
param.setProcessDefinitionId(processDefinitionId);
param.setNodeId(nodeId);
param.setRunId(runId);
try {
param.setParamJson(objectMapper.writeValueAsString(params));
} catch (JsonProcessingException e) {
@@ -70,9 +71,10 @@ public class ProcessNodeParamServiceImpl extends ServiceImpl<ProcessNodeParamMap
// 查询节点输入参数(流程执行时调用)
public Map<String, Object> getParam(String processDefinitionId, String nodeId) {
public Map<String, Object> getParam(String processDefinitionId, String nodeId, String runId) {
ProcessNodeParam param = this.lambdaQuery().eq(ProcessNodeParam::getProcessDefinitionId, processDefinitionId)
.eq(ProcessNodeParam::getNodeId, nodeId)
.eq(ObjectUtils.isNotEmpty(runId), ProcessNodeParam::getRunId, runId)
.one();
if (param == null) {