diff --git a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/restful/DSSFrameworkOrchestratorRestful.java b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/restful/DSSFrameworkOrchestratorRestful.java index bd5dc4ea2c..454334057c 100644 --- a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/restful/DSSFrameworkOrchestratorRestful.java +++ b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/restful/DSSFrameworkOrchestratorRestful.java @@ -763,4 +763,14 @@ public Message getAllOrchestratorName(HttpServletRequest httpServletRequest, return Message.ok().data("data", orchestratorService.getAllOrchestratorName(workspaceId,projectName)); } + + @RequestMapping(value = "publishFlowCheck",method = RequestMethod.GET) + public Message publishFlowCheck(@RequestParam("orchestratorId") Long orchestratorId, + @RequestParam("projectId") Long projectId) throws DSSErrorException{ + + Workspace workspace = SSOHelper.getWorkspace(httpServletRequest); + + return Message.ok().data("data",orchestratorPluginService.getNotContainsKeywordsNode(orchestratorId,projectId,workspace)); + } + } diff --git a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/OrchestratorPluginService.java b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/OrchestratorPluginService.java index 2faf1490ee..62e1342b53 100644 --- a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/OrchestratorPluginService.java +++ b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/OrchestratorPluginService.java @@ -58,4 +58,6 @@ public interface OrchestratorPluginService { String diffStatus(Long taskId) throws DSSErrorException; OrchestratorDiffDirVo diffContent(Long taskId); + + Map> getNotContainsKeywordsNode(long orchestratorId,long projectId,Workspace workspace) throws DSSErrorException; } diff --git a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/impl/OrchestratorPluginServiceImpl.java b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/impl/OrchestratorPluginServiceImpl.java index dd85e8fa90..027165b9ca 100644 --- a/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/impl/OrchestratorPluginServiceImpl.java +++ b/dss-framework/dss-framework-orchestrator-server/src/main/java/com/webank/wedatasphere/dss/orchestrator/server/service/impl/OrchestratorPluginServiceImpl.java @@ -18,6 +18,7 @@ import com.google.common.reflect.TypeToken; import com.google.gson.Gson; +import com.google.gson.JsonElement; import com.webank.wedatasphere.dss.common.constant.project.ProjectUserPrivEnum; import com.webank.wedatasphere.dss.common.entity.BmlResource; import com.webank.wedatasphere.dss.common.entity.project.DSSProject; @@ -32,6 +33,8 @@ import com.webank.wedatasphere.dss.common.protocol.project.ProjectUserAuthResponse; import com.webank.wedatasphere.dss.common.service.BMLService; import com.webank.wedatasphere.dss.common.utils.*; +import com.webank.wedatasphere.dss.framework.workspace.bean.DSSWorkspace; +import com.webank.wedatasphere.dss.framework.workspace.dao.DSSWorkspaceMapper; import com.webank.wedatasphere.dss.git.common.protocol.GitTree; import com.webank.wedatasphere.dss.git.common.protocol.request.*; import com.webank.wedatasphere.dss.git.common.protocol.response.GitCommitResponse; @@ -79,6 +82,7 @@ import java.nio.file.Paths; import java.util.*; import java.util.concurrent.ExecutorService; +import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -110,6 +114,9 @@ public class OrchestratorPluginServiceImpl implements OrchestratorPluginService @Autowired private OrchestratorPluginService orchestratorPluginService; + @Autowired + private DSSWorkspaceMapper dssWorkspaceMapper; + @Autowired @Qualifier("workflowBmlService") private BMLService bmlService; @@ -386,9 +393,150 @@ private GitCommitResponse submitWorkflowToBML(Long taskId, OrchestratorSubmitReq lockMapper.updateOrchestratorStatus(orchestratorId, OrchestratorRefConstant.FLOW_STATUS_PUSH); // 更新commitId lockMapper.updateOrchestratorVersionCommitId(commit.getCommitId(), flowId); + + updateOrchestratorNotContainsKeywordsNode(flowRequest,orchestrator,username,workspace,commit.getCommitId()); + return commit; } + @Override + public Map> getNotContainsKeywordsNode(long orchestratorId,long projectId,Workspace workspace) throws DSSErrorException { + + DSSWorkspace dssWorkspace = dssWorkspaceMapper.getWorkspace((int) workspace.getWorkspaceId()); + if(disabledKeywordsCheck(dssWorkspace)){ + throw new DSSErrorException(90058,"当前工作空间未启用工作流关键字校验"); + } + + ProjectInfoRequest projectInfoRequest = new ProjectInfoRequest(); + projectInfoRequest.setProjectId(projectId); + + DSSProject project = RpcAskUtils.processAskException(DSSSenderServiceFactory.getOrCreateServiceInstance().getProjectServerSender() + .ask(projectInfoRequest), DSSProject.class, ProjectInfoRequest.class); + + // 项目未接入git + if(project.getAssociateGit() == null || !project.getAssociateGit()){ + throw new DSSErrorException(90058,"当前工作流所属项目未接入git"); + } + + String json = orchestratorMapper.getOrchestratorNotContainsKeywordsNode(orchestratorId); + + if(StringUtils.isNotEmpty(json)){ + return DSSCommonUtils.COMMON_GSON.fromJson(json,new TypeToken>>>() { + }.getType()); + } + + return null; + + + } + + private boolean disabledKeywordsCheck(DSSWorkspace dssWorkspace){ + + // 命名空间 禁用关键字检查 + return dssWorkspace == null || StringUtils.isEmpty(dssWorkspace.getEnabledFlowKeywordsCheck()) + || !dssWorkspace.getEnabledFlowKeywordsCheck().equals("1"); + } + + + private void updateOrchestratorNotContainsKeywordsNode(OrchestratorSubmitRequest flowRequest, DSSOrchestratorInfo orchestrator, + String username, Workspace workspace,String commitId){ + + DSSWorkspace dssWorkspace = dssWorkspaceMapper.getWorkspace((int) workspace.getWorkspaceId()); + + if(disabledKeywordsCheck(dssWorkspace)){ + return; + } + + GitDiffResponse gitDiffResponse = diffPublish(orchestrator.getName(), commitId,username, + workspace.getWorkspaceId(), flowRequest.getProjectName()); + + if (gitDiffResponse == null) { + LOGGER.info("gitDiffResponse change is empty"); + return; + } + + List paths = new ArrayList<>(); + + gitDiffResponse.getCodeTree().forEach(gitTree -> { + getCodePath(paths,gitTree); + }); + + // 获取内容并检查 + List nodePathList = getNotContainsKeywordsNodePath(paths,commitId,workspace,flowRequest.getProjectName(),username); + Map> map = new HashMap<>(); + map.put(orchestrator.getName(),nodePathList); + String notContainsKeywordsNode = DSSCommonUtils.COMMON_GSON.toJson(map); + + orchestratorMapper.updateOrchestratorNotContainsKeywordsNode(flowRequest.getOrchestratorId(),notContainsKeywordsNode); + } + + + private void getCodePath(List paths,GitTree gitTree){ + + if(MapUtils.isEmpty(gitTree.getChildren())){ + return; + } + + for (Map.Entry entry : gitTree.getChildren().entrySet()){ + // 过滤后缀 + if(StringUtils.endsWithAny(entry.getValue().getAbsolutePath(),".sql",".hql",".py")){ + continue; + } + + paths.add(gitTree.getAbsolutePath()); + + getCodePath(paths, entry.getValue()); + } + + } + + + private List getNotContainsKeywordsNodePath(List codePaths,String commitId,Workspace workspace,String projectName,String username){ + + List nodePathList = new ArrayList<>(); + + if(CollectionUtils.isEmpty(codePaths)){ + return nodePathList; + } + + GitDiffFileContentRequest diffFileContentRequest = new GitDiffFileContentRequest(); + diffFileContentRequest.setFilePaths(codePaths); + diffFileContentRequest.setPublish(true); + diffFileContentRequest.setCommitId(commitId); + diffFileContentRequest.setUsername(username); + diffFileContentRequest.setWorkspaceId(workspace.getWorkspaceId()); + diffFileContentRequest.setProjectName(projectName); + Sender gitSender = DSSSenderServiceFactory.getOrCreateServiceInstance().getGitSender(); + // 批量获取脚本内容新 + GitDiffFileContentResponse gitDiffFileContentResponse = RpcAskUtils.processAskException( + gitSender.ask(diffFileContentRequest), GitDiffFileContentResponse.class, GitDiffFileContentRequest.class); + + if(gitDiffFileContentResponse == null){ + LOGGER.info("get script content isEmpty"); + return null; + } + + Pattern pattern = Pattern.compile("(create\\s+table|insert)\\s*",Pattern.CASE_INSENSITIVE); + + for (GitFileContentResponse gitFileContentResponse: gitDiffFileContentResponse.getGitFileContentResponseList()){ + + String content = gitFileContentResponse.getBefore(); + + // 内容为NULL或者已匹配到关键字 跳过 + if(content == null || pattern.matcher(content).find()){ + continue; + } + + // 去掉/xxx.sql,hql,py 脚本名称 + String nodePath = gitFileContentResponse.getFilePath().substring(0,gitFileContentResponse.getFilePath().lastIndexOf("/")); + nodePathList.add(nodePath); + } + + return nodePathList; + + } + + public GitCommitResponse batchSubmitWorkflowToBML(List taskIdList, List relationVos, String username, Workspace workspace, String projectName, String label, Long projectId, String comment) throws Exception { List flowIdList = relationVos.stream().map(OrchestratorRelationVo::getFlowId).collect(Collectors.toList()); diff --git a/dss-framework/dss-framework-workspace-server/src/main/java/com/webank/wedatasphere/dss/framework/workspace/dao/DSSWorkspaceMapper.java b/dss-framework/dss-framework-workspace-server/src/main/java/com/webank/wedatasphere/dss/framework/workspace/dao/DSSWorkspaceMapper.java index 256d427714..6f79db8a72 100644 --- a/dss-framework/dss-framework-workspace-server/src/main/java/com/webank/wedatasphere/dss/framework/workspace/dao/DSSWorkspaceMapper.java +++ b/dss-framework/dss-framework-workspace-server/src/main/java/com/webank/wedatasphere/dss/framework/workspace/dao/DSSWorkspaceMapper.java @@ -37,6 +37,7 @@ public interface DSSWorkspaceMapper { @Result(property = "lastUpdateTime", column = "last_update_time"), @Result(property = "lastUpdateUser", column = "last_update_user"), @Result(property = "enabledFlowKeywordsCheck",column = "enabled_flow_keywords_check"), + @Result(property = "isDefaultReference",column = "is_default_reference") }) DSSWorkspace getWorkspace(@Param("workspaceId") int workspaceId); diff --git a/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentRequest.java b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentRequest.java new file mode 100644 index 0000000000..402dc81cac --- /dev/null +++ b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentRequest.java @@ -0,0 +1,50 @@ +package com.webank.wedatasphere.dss.git.common.protocol.request; + +import java.util.List; + +public class GitDiffFileContentRequest extends GitBaseRequest { + + + private String commitId; + /** + * 需获取内容的文件相对路径 + */ + private List filePaths; + + private String username; + + private Boolean publish; + + + public String getCommitId() { + return commitId; + } + + public void setCommitId(String commitId) { + this.commitId = commitId; + } + + public List getFilePaths() { + return filePaths; + } + + public void setFilePaths(List filePaths) { + this.filePaths = filePaths; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public Boolean getPublish() { + return publish; + } + + public void setPublish(Boolean publish) { + this.publish = publish; + } +} diff --git a/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentResponse.java b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentResponse.java new file mode 100644 index 0000000000..654ee733ab --- /dev/null +++ b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/request/GitDiffFileContentResponse.java @@ -0,0 +1,25 @@ +package com.webank.wedatasphere.dss.git.common.protocol.request; + +import com.webank.wedatasphere.dss.git.common.protocol.response.GitFileContentResponse; + +import java.util.ArrayList; +import java.util.List; + +public class GitDiffFileContentResponse { + + + private List gitFileContentResponseList; + + + public GitDiffFileContentResponse(List gitFileContentResponseList) { + this.gitFileContentResponseList = gitFileContentResponseList; + } + + public List getGitFileContentResponseList() { + return gitFileContentResponseList; + } + + public void setGitFileContentResponseList(List gitFileContentResponseList) { + this.gitFileContentResponseList = gitFileContentResponseList; + } +} diff --git a/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/response/GitFileContentResponse.java b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/response/GitFileContentResponse.java index 8a3a29edee..b20281f339 100644 --- a/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/response/GitFileContentResponse.java +++ b/dss-git/dss-git-common/src/main/java/com.webank.wedatasphere.dss.git.common/protocol/response/GitFileContentResponse.java @@ -14,6 +14,8 @@ public class GitFileContentResponse{ // 反显CommitId --仅发布时diff需要 private String AfterCommitId; + // 文件路径 + private String filePath; public GitFileContentResponse() { } @@ -27,6 +29,15 @@ public GitFileContentResponse(String before, String after, String beforeAnnotate AfterCommitId = afterCommitId; } + public GitFileContentResponse(String before, String after, String beforeAnnotate, String beforeCommitId, String afterAnnotate, String afterCommitId, String filePath) { + this.before = before; + this.after = after; + this.beforeAnnotate = beforeAnnotate; + this.beforeCommitId = beforeCommitId; + AfterAnnotate = afterAnnotate; + AfterCommitId = afterCommitId; + this.filePath = filePath; + } public String getBefore() { return before; @@ -75,4 +86,12 @@ public String getAfterCommitId() { public void setAfterCommitId(String afterCommitId) { AfterCommitId = afterCommitId; } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } } diff --git a/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/DSSGitWorkflowManagerService.java b/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/DSSGitWorkflowManagerService.java index 031b9b3e3c..e5555dfc73 100644 --- a/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/DSSGitWorkflowManagerService.java +++ b/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/DSSGitWorkflowManagerService.java @@ -38,4 +38,7 @@ public interface DSSGitWorkflowManagerService { GitCommitResponse batchCommit(GitBatchCommitRequest request) throws DSSErrorException; Repository getRepository(File repoDir, String projectName, Long workspaceId, String gitUser, String gitToken, String gitUrl) throws DSSErrorException; + + GitDiffFileContentResponse getDiffFileContent(GitDiffFileContentRequest request) throws DSSErrorException; + } diff --git a/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/impl/DSSGitWorkflowManagerServiceImpl.java b/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/impl/DSSGitWorkflowManagerServiceImpl.java index b15d0a76b7..c241a916a6 100644 --- a/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/impl/DSSGitWorkflowManagerServiceImpl.java +++ b/dss-git/dss-git-server/src/main/java/com/webank/wedatasphere/dss/git/service/impl/DSSGitWorkflowManagerServiceImpl.java @@ -644,6 +644,62 @@ public GitFileContentResponse getFileContent(GitFileContentRequest request) thro } } + + @Override + public GitDiffFileContentResponse getDiffFileContent(GitDiffFileContentRequest request) throws DSSErrorException{ + + Long workspaceId = request.getWorkspaceId(); + String projectName = request.getProjectName(); + List filePaths = request.getFilePaths(); + + GitProjectGitInfo projectInfoByProjectName = GitProjectManager.getProjectInfoByProjectName(projectName); + if (projectInfoByProjectName == null) { + logger.error("getDiffFileContent the projectName : {} don't associate with git", projectName); + return null; + } + + String gitUser = projectInfoByProjectName.getGitUser(); + String gitToken = projectInfoByProjectName.getGitToken(); + String gitUrl = projectInfoByProjectName.getGitUrl(); + + // 拼接.git路径 + String gitPath = DSSGitUtils.generateGitPath(projectName, workspaceId, gitUser); + // 获取git仓库 + File repoDir = new File(gitPath); + + + try { + Repository repository = getRepository(repoDir, projectName, workspaceId, gitUser, gitToken, gitUrl); + // 本地保持最新状态 + DSSGitUtils.pull(repository, projectName, gitUser, gitToken); + // 获取的是提交之后的文件内容信息 + List gitFileContentResponseList = new ArrayList<>(); + for(String filePath: filePaths){ + + GitFileContentResponse contentResponse = new GitFileContentResponse(); + String after = DSSGitUtils.getFileContent(filePath, projectName, gitUser, workspaceId); + GitCommitResponse currentCommit = DSSGitUtils.getCurrentCommit(repository); + if (currentCommit.getCommitId() != null) { + contentResponse.setAfterCommitId(currentCommit.getCommitId()); + contentResponse.setAfterAnnotate(currentCommit.getCommentFull()); + } + contentResponse.setAfter(after); + contentResponse.setFilePath(filePath); + + gitFileContentResponseList.add(contentResponse); + } + + + return new GitDiffFileContentResponse(gitFileContentResponseList); + } catch (JGitInternalException e) { + logger.error("get git failed, the reason is", e); + throw new DSSErrorException(80001, "当前项目下已有工作流在进行git操作,请稍后重试"); + }catch (Exception e) { + throw new DSSErrorException(80001, "getFileContent failed, the reason is: " + e); + } + + } + @Override public GitHistoryResponse getHistory(GitHistoryRequest request) throws DSSErrorException { Long workspaceId = request.getWorkspaceId(); diff --git a/dss-git/dss-git-server/src/main/scala/com.webank.wedatasphere.dss.git/receiver/DSSGitReceiver.scala b/dss-git/dss-git-server/src/main/scala/com.webank.wedatasphere.dss.git/receiver/DSSGitReceiver.scala index 8167dc3ae1..3ed8c81143 100644 --- a/dss-git/dss-git-server/src/main/scala/com.webank.wedatasphere.dss.git/receiver/DSSGitReceiver.scala +++ b/dss-git/dss-git-server/src/main/scala/com.webank.wedatasphere.dss.git/receiver/DSSGitReceiver.scala @@ -16,7 +16,7 @@ package com.webank.wedatasphere.dss.git.receiver -import com.webank.wedatasphere.dss.git.common.protocol.request.{GitAddMemberRequest, GitArchiveProjectRequest, GitBatchCommitRequest, GitCheckProjectRequest, GitCommitInfoBetweenRequest, GitCommitRequest, GitConnectRequest, GitCreateProjectRequest, GitCurrentCommitRequest, GitDeleteRequest, GitDiffRequest, GitDiffTargetCommitRequest, GitFileContentRequest, GitHistoryRequest, GitRemoveRequest, GitRenameRequest, GitRevertRequest, GitSearchRequest, GitUserByWorkspaceIdRequest, GitUserInfoByRequest, GitUserInfoRequest, GitUserUpdateRequest} +import com.webank.wedatasphere.dss.git.common.protocol.request.{GitAddMemberRequest, GitArchiveProjectRequest, GitBatchCommitRequest, GitCheckProjectRequest, GitCommitInfoBetweenRequest, GitCommitRequest, GitConnectRequest, GitCreateProjectRequest, GitCurrentCommitRequest, GitDeleteRequest, GitDiffRequest, GitDiffTargetCommitRequest, GitFileContentRequest, GitHistoryRequest, GitRemoveRequest, GitRenameRequest, GitRevertRequest, GitSearchRequest, GitUserByWorkspaceIdRequest, GitUserInfoByRequest, GitUserInfoRequest, GitUserUpdateRequest,GitDiffFileContentRequest} import com.webank.wedatasphere.dss.git.manage.GitProjectManager import com.webank.wedatasphere.dss.git.service.{DSSGitProjectManagerService, DSSGitWorkflowManagerService} import org.apache.linkis.rpc.{Receiver, Sender} @@ -68,6 +68,8 @@ class DSSGitReceiver(gitProjectManagerService: DSSGitProjectManagerService, gitW gitProjectManagerService.getProjectGitUserInfo(gitUserByWorkspaceIdRequest) case gitAddMemberRequest: GitAddMemberRequest => gitProjectManagerService.addMember(gitAddMemberRequest) + case gitDiffFileContentRequest: GitDiffFileContentRequest => + gitWorkflowManagerService.getDiffFileContent(gitDiffFileContentRequest) case _ => None } diff --git a/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/OrchestratorMapper.java b/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/OrchestratorMapper.java index 8d7e9a0ac7..a77fdefdd0 100644 --- a/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/OrchestratorMapper.java +++ b/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/OrchestratorMapper.java @@ -170,5 +170,9 @@ DSSOrchestratorVersion getOrcVersionByIdAndOrcVersionId(@Param("orchestratorId") List getSubmitJobStatus(@Param("orchestratorIdList") List orchestratorIdList); + void updateOrchestratorNotContainsKeywordsNode(@Param("orchestratorId") Long orchestratorId, @Param("notContainsKeywordsNode") String notContainsKeywordsNode); + + String getOrchestratorNotContainsKeywordsNode(@Param("orchestratorId") Long orchestratorId); + } diff --git a/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/impl/orchestratorMapper.xml b/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/impl/orchestratorMapper.xml index f50b491aaa..ccd69c61bc 100644 --- a/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/impl/orchestratorMapper.xml +++ b/dss-orchestrator/dss-orchestrator-db/src/main/java/com/webank/wedatasphere/dss/orchestrator/db/dao/impl/orchestratorMapper.xml @@ -508,5 +508,14 @@ + + update dss_orchestrator_info set not_contains_keywords_node = #{notContainsKeywordsNode} + where id = #{orchestratorId} + + + + \ No newline at end of file