caishunfeng commented on code in PR #10553:
URL: https://github.com/apache/dolphinscheduler/pull/10553#discussion_r909155998
##########
dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/ProcessDefinitionControllerTest.java:
##########
@@ -195,8 +195,8 @@ public void testQueryProcessDefinitionByCode() {
putMsg(result, Status.SUCCESS);
result.put(Constants.DATA_LIST, processDefinition);
-
Mockito.when(processDefinitionService.queryProcessDefinitionByCode(user,
projectCode, code)).thenReturn(result);
- Result response =
processDefinitionController.queryProcessDefinitionByCode(user, projectCode,
code);
+
Mockito.when(processDefinitionService.queryProcessDefinitionByCode(user,
projectCode, code, false)).thenReturn(result);
Review Comment:
can you add the test case of `showSubtask = true`?
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java:
##########
@@ -2649,17 +2653,62 @@ public DAG<String, TaskNode, TaskNodeRelation>
genDagGraph(ProcessDefinition pro
return DagHelper.buildDagGraph(processDag);
}
+ private void genSubTaskData(List<ProcessTaskRelation> taskRelations,
List<TaskDefinitionLog> taskDefinitionLogList,
+ List<TaskDefinition> taskDefinitions,
List<TaskDefinition> curTaskDefinitions) {
+ List<TaskDefinition> copyList = new ArrayList<>(curTaskDefinitions);
+ for (TaskDefinition taskDefinition : copyList) {
+ if
(TaskConstants.TASK_TYPE_SUB_PROCESS.equals(taskDefinition.getTaskType())) {
+ JsonNode processDefinitionCode =
JSONUtils.parseObject(taskDefinition.getTaskParams())
+ .findValue("processDefinitionCode");
+ long subProcessId = processDefinitionCode.asLong();
+ ProcessDefinition subProcess =
processDefineMapper.queryByCode(subProcessId);
+ List<ProcessTaskRelation> subTaskRelations =
findRelationByCode(subProcess.getCode(), subProcess.getVersion());
+ // bind to subProcess
+ for (ProcessTaskRelation subTaskRelation : subTaskRelations) {
+ if (subTaskRelation.getPreTaskCode() == 0) {
+
subTaskRelation.setPreTaskCode(taskDefinition.getCode());
Review Comment:
Why to set taskDefinition code and version to preTask? Please add some notes.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java:
##########
@@ -2649,17 +2653,62 @@ public DAG<String, TaskNode, TaskNodeRelation>
genDagGraph(ProcessDefinition pro
return DagHelper.buildDagGraph(processDag);
}
+ private void genSubTaskData(List<ProcessTaskRelation> taskRelations,
List<TaskDefinitionLog> taskDefinitionLogList,
+ List<TaskDefinition> taskDefinitions,
List<TaskDefinition> curTaskDefinitions) {
+ List<TaskDefinition> copyList = new ArrayList<>(curTaskDefinitions);
+ for (TaskDefinition taskDefinition : copyList) {
+ if
(TaskConstants.TASK_TYPE_SUB_PROCESS.equals(taskDefinition.getTaskType())) {
+ JsonNode processDefinitionCode =
JSONUtils.parseObject(taskDefinition.getTaskParams())
+ .findValue("processDefinitionCode");
+ long subProcessId = processDefinitionCode.asLong();
+ ProcessDefinition subProcess =
processDefineMapper.queryByCode(subProcessId);
+ List<ProcessTaskRelation> subTaskRelations =
findRelationByCode(subProcess.getCode(), subProcess.getVersion());
+ // bind to subProcess
+ for (ProcessTaskRelation subTaskRelation : subTaskRelations) {
+ if (subTaskRelation.getPreTaskCode() == 0) {
+
subTaskRelation.setPreTaskCode(taskDefinition.getCode());
+
subTaskRelation.setPreTaskVersion(taskDefinition.getVersion());
+ }
+ TaskDefinition subTask =
findTaskDefinition(subTaskRelation.getPostTaskCode(),
subTaskRelation.getPostTaskVersion());
+ // recursive expansion
+ if
(TaskConstants.TASK_TYPE_SUB_PROCESS.equals(subTask.getTaskType())) {
+ genSubTaskData(taskRelations, taskDefinitionLogList,
taskDefinitions, Lists.newArrayList(subTask));
+ }
+ }
+ List<TaskDefinitionLog> subTaskDefinitionLogList =
genTaskDefineList(subTaskRelations);
+ // deletes an expansion task
+ subTaskDefinitionLogList.removeIf(task -> task.getCode() ==
taskDefinition.getCode());
+ List<TaskDefinition> subTaskDefinitions =
subTaskDefinitionLogList.stream().map(taskDefinitionLog -> {
+ taskDefinitionLog.setExpansion(true);
+ return (TaskDefinition) taskDefinitionLog;
+ }).collect(Collectors.toList());
+ taskRelations.addAll(subTaskRelations);
+ taskDefinitionLogList.addAll(subTaskDefinitionLogList);
+ taskDefinitions.addAll(subTaskDefinitions);
+ }
+ }
+ }
+
/**
* generate DagData
*/
@Override
- public DagData genDagData(ProcessDefinition processDefinition) {
- List<ProcessTaskRelation> taskRelations =
this.findRelationByCode(processDefinition.getCode(),
processDefinition.getVersion());
+ public DagData genDagData(ProcessDefinition processDefinition, boolean
showSubTask) {
+ List<ProcessTaskRelation> taskRelations =
findRelationByCode(processDefinition.getCode(), processDefinition.getVersion());
List<TaskDefinitionLog> taskDefinitionLogList =
genTaskDefineList(taskRelations);
- List<TaskDefinition> taskDefinitions =
taskDefinitionLogList.stream().map(t -> (TaskDefinition)
t).collect(Collectors.toList());
+ List<TaskDefinition> taskDefinitions =
taskDefinitionLogList.stream().map(TaskDefinition.class::cast).collect(Collectors.toList());
+ // when enable showSubTask try to find sub-process task info.
+ if (showSubTask) {
+ genSubTaskData(taskRelations, taskDefinitionLogList,
taskDefinitions, taskDefinitions);
Review Comment:
The third param is the same as the forth one, is it correct?
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java:
##########
@@ -2649,17 +2653,62 @@ public DAG<String, TaskNode, TaskNodeRelation>
genDagGraph(ProcessDefinition pro
return DagHelper.buildDagGraph(processDag);
}
+ private void genSubTaskData(List<ProcessTaskRelation> taskRelations,
List<TaskDefinitionLog> taskDefinitionLogList,
Review Comment:
please add notes.
##########
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/process/ProcessServiceImpl.java:
##########
@@ -2649,17 +2653,62 @@ public DAG<String, TaskNode, TaskNodeRelation>
genDagGraph(ProcessDefinition pro
return DagHelper.buildDagGraph(processDag);
}
+ private void genSubTaskData(List<ProcessTaskRelation> taskRelations,
List<TaskDefinitionLog> taskDefinitionLogList,
+ List<TaskDefinition> taskDefinitions,
List<TaskDefinition> curTaskDefinitions) {
+ List<TaskDefinition> copyList = new ArrayList<>(curTaskDefinitions);
+ for (TaskDefinition taskDefinition : copyList) {
+ if
(TaskConstants.TASK_TYPE_SUB_PROCESS.equals(taskDefinition.getTaskType())) {
+ JsonNode processDefinitionCode =
JSONUtils.parseObject(taskDefinition.getTaskParams())
+ .findValue("processDefinitionCode");
+ long subProcessId = processDefinitionCode.asLong();
+ ProcessDefinition subProcess =
processDefineMapper.queryByCode(subProcessId);
+ List<ProcessTaskRelation> subTaskRelations =
findRelationByCode(subProcess.getCode(), subProcess.getVersion());
+ // bind to subProcess
+ for (ProcessTaskRelation subTaskRelation : subTaskRelations) {
+ if (subTaskRelation.getPreTaskCode() == 0) {
+
subTaskRelation.setPreTaskCode(taskDefinition.getCode());
+
subTaskRelation.setPreTaskVersion(taskDefinition.getVersion());
+ }
+ TaskDefinition subTask =
findTaskDefinition(subTaskRelation.getPostTaskCode(),
subTaskRelation.getPostTaskVersion());
+ // recursive expansion
+ if
(TaskConstants.TASK_TYPE_SUB_PROCESS.equals(subTask.getTaskType())) {
+ genSubTaskData(taskRelations, taskDefinitionLogList,
taskDefinitions, Lists.newArrayList(subTask));
+ }
+ }
+ List<TaskDefinitionLog> subTaskDefinitionLogList =
genTaskDefineList(subTaskRelations);
+ // deletes an expansion task
+ subTaskDefinitionLogList.removeIf(task -> task.getCode() ==
taskDefinition.getCode());
+ List<TaskDefinition> subTaskDefinitions =
subTaskDefinitionLogList.stream().map(taskDefinitionLog -> {
+ taskDefinitionLog.setExpansion(true);
+ return (TaskDefinition) taskDefinitionLog;
+ }).collect(Collectors.toList());
+ taskRelations.addAll(subTaskRelations);
+ taskDefinitionLogList.addAll(subTaskDefinitionLogList);
+ taskDefinitions.addAll(subTaskDefinitions);
+ }
+ }
+ }
+
/**
* generate DagData
*/
@Override
- public DagData genDagData(ProcessDefinition processDefinition) {
- List<ProcessTaskRelation> taskRelations =
this.findRelationByCode(processDefinition.getCode(),
processDefinition.getVersion());
+ public DagData genDagData(ProcessDefinition processDefinition, boolean
showSubTask) {
Review Comment:
please update the notes of `genDagData`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]