fix:节点参数绑定算例
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
Reference in New Issue
Block a user