|
28 | 28 | import com.webank.wedatasphere.dss.common.label.DSSLabel;
|
29 | 29 | import com.webank.wedatasphere.dss.common.utils.DSSCommonUtils;
|
30 | 30 | import com.webank.wedatasphere.dss.common.utils.IoUtils;
|
| 31 | +import com.webank.wedatasphere.dss.common.utils.MapUtils; |
31 | 32 | import com.webank.wedatasphere.dss.contextservice.service.ContextService;
|
32 | 33 | import com.webank.wedatasphere.dss.contextservice.service.impl.ContextServiceImpl;
|
33 | 34 | import com.webank.wedatasphere.dss.standard.app.development.utils.DSSJobContentConstant;
|
@@ -311,6 +312,11 @@ public DSSFlow copyRootFlow(Long rootFlowId, String userName, Workspace workspac
|
311 | 312 | String projectName, String version, String contextIdStr,
|
312 | 313 | String description, List<DSSLabel> dssLabels) throws DSSErrorException, IOException {
|
313 | 314 | DSSFlow dssFlow = flowMapper.selectFlowByID(rootFlowId);
|
| 315 | + if(dssFlow == null) { |
| 316 | + throw new DSSErrorException(50030, "Workflow " + rootFlowId + " is not exists[工作流不存在,请检查是否已被删除]."); |
| 317 | + } |
| 318 | + logger.info("User {} try to copy workflow {} in project {} with newVersion {} and contextId {}.", userName, |
| 319 | + dssFlow.getName(), projectName, version, contextIdStr); |
314 | 320 | DSSFlow rootFlowWithSubFlows = copyFlowAndSetSubFlowInDB(dssFlow, userName, description);
|
315 | 321 | updateFlowJson(userName, projectName, rootFlowWithSubFlows, version, null,
|
316 | 322 | contextIdStr, workspace, dssLabels);
|
@@ -348,7 +354,7 @@ private void updateFlowJson(String userName, String projectName, DSSFlow rootFlo
|
348 | 354 | String flowJson = bmlService.readFlowJsonFromBML(userName, rootFlow.getResourceId(), rootFlow.getBmlVersion());
|
349 | 355 | //如果包含subflow,需要一同导入subflow内容,并更新parrentflow的json内容
|
350 | 356 | // TODO: 2020/7/31 优化update方法里面的saveContent
|
351 |
| - String updateFlowJson = updateFlowContextId(flowJson, contextIdStr); |
| 357 | + String updateFlowJson = updateFlowContextIdAndVersion(flowJson, contextIdStr, version); |
352 | 358 | //重新上传工作流资源
|
353 | 359 | updateFlowJson = uploadFlowResourceToBml(userName, updateFlowJson, projectName, rootFlow);
|
354 | 360 | //上传节点的资源或调用appconn的copyRef
|
@@ -408,8 +414,9 @@ private DSSFlow uploadFlowJsonToBml(String userName, String projectName, DSSFlow
|
408 | 414 | return dssFlow;
|
409 | 415 | }
|
410 | 416 |
|
411 |
| - private String updateFlowContextId(String flowJson, String contextIdStr) throws IOException { |
412 |
| - return workFlowParser.updateFlowJsonWithKey(flowJson, CSCommonUtils.CONTEXT_ID_STR, contextIdStr); |
| 417 | + private String updateFlowContextIdAndVersion(String flowJson, String contextIdStr, String orcVersion) throws IOException { |
| 418 | + return workFlowParser.updateFlowJsonWithMap(flowJson, MapUtils.newCommonMap(CSCommonUtils.CONTEXT_ID_STR, contextIdStr, |
| 419 | + DSSJobContentConstant.ORC_VERSION_KEY, orcVersion)); |
413 | 420 | }
|
414 | 421 |
|
415 | 422 | private String updateWorkFlowNodeJson(String userName, String projectName,
|
|
0 commit comments