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

@@ -50,10 +50,10 @@ public class FlowableClientFeignClientImpl implements IFlowableFeignClient {
}
@Override
public SdmResponse saveParamsByDefinitionId(String processDefinitionId, String nodeId, Map<String, Object> params) {
public SdmResponse saveParamsByDefinitionId(String processDefinitionId, String nodeId, String runId, Map<String, Object> params) {
SdmResponse response;
try {
response = flowableFeignClient.saveParamsByDefinitionId(processDefinitionId, nodeId, params);
response = flowableFeignClient.saveParamsByDefinitionId(processDefinitionId, nodeId, runId, params);
log.info("保存节点参数:"+ response);
return response;
} catch (Exception e) {
@@ -76,10 +76,10 @@ public class FlowableClientFeignClientImpl implements IFlowableFeignClient {
}
@Override
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(String processDefinitionId,String processInstanceId) {
public SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(String processDefinitionId,String processInstanceId,String runId) {
SdmResponse<ProcessInstanceDetailResponse> response;
try {
response = flowableFeignClient.getProcessAndNodeDetailByInstanceId(processDefinitionId,processInstanceId);
response = flowableFeignClient.getProcessAndNodeDetailByInstanceId(processDefinitionId,processInstanceId,runId);
log.info("查询流程状态以及节点状态:"+ response);
return response;
} catch (Exception e) {

View File

@@ -26,11 +26,11 @@ public interface IFlowableFeignClient {
SdmResponse<DeployFlowableResp> deploy(@RequestBody ProcessDefinitionDTO processDTO);
@PostMapping("/process/saveParamsByDefinitionId")
SdmResponse saveParamsByDefinitionId(@RequestParam String processDefinitionId, @RequestParam String nodeId, @RequestBody Map<String, Object> params);
SdmResponse saveParamsByDefinitionId(@RequestParam String processDefinitionId, @RequestParam String nodeId, @RequestParam String runId,@RequestBody Map<String, Object> params);
@PostMapping("/process/updateNodeParamProcessInstanceId")
SdmResponse updateNodeParamProcessInstanceId(@RequestParam String processDefinitionId, @RequestParam String processInstanceId);
@GetMapping("/process/getProcessAndNodeDetailByInstanceId")
SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(@RequestParam String processDefinitionId,@RequestParam(required = false) String processInstanceId);
SdmResponse<ProcessInstanceDetailResponse> getProcessAndNodeDetailByInstanceId(@RequestParam String processDefinitionId,@RequestParam(required = false) String processInstanceId,@RequestParam String runId);
}

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) {

View File

@@ -1221,7 +1221,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
params.put("outputDirId", flowNodeDto.getOutputDirId());
// 前端用户输入参数
params.putAll(req.getInputParams());
flowableFeignClient.saveParamsByDefinitionId(simulationRun.getProcessDefinitionId(), flowNodeDto.getNodeId(), params);
flowableFeignClient.saveParamsByDefinitionId(simulationRun.getProcessDefinitionId(), flowNodeDto.getNodeId(), simulationRun.getUuid(), params);
}
});
}
@@ -1238,7 +1238,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
if (sdmResponse.getData() != null) {
List<FlowNodeDto> flowNodeDtoList = sdmResponse.getData();
SimulationRun simulationRun = this.lambdaQuery().eq(SimulationRun::getUuid, req.getRunId()).one();
SdmResponse<ProcessInstanceDetailResponse> response = flowableFeignClient.getProcessAndNodeDetailByInstanceId(simulationRun.getProcessDefinitionId(), simulationRun.getFlowInstanceId());
SdmResponse<ProcessInstanceDetailResponse> response = flowableFeignClient.getProcessAndNodeDetailByInstanceId(simulationRun.getProcessDefinitionId(), simulationRun.getFlowInstanceId(), simulationRun.getUuid());
if (response.getData() != null && CollectionUtils.isNotEmpty(response.getData().getNodes())) {
for (FlowNodeDto flowNodeDto : flowNodeDtoList) {
response.getData().getNodes().stream().filter(i -> StringUtils.equals(i.getId(), flowNodeDto.getNodeId())).findFirst().ifPresent(i -> {