This is an automated email from the ASF dual-hosted git repository.
zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 4b5eb1a2bb [Improvement-14894][dolphinscheduler-alert] alert message
contains the operator (#14910)
4b5eb1a2bb is described below
commit 4b5eb1a2bb07a75c8430271af0aef38e013f73a8
Author: Chenshuai <[email protected]>
AuthorDate: Mon Sep 25 10:50:28 2023 +0800
[Improvement-14894][dolphinscheduler-alert] alert message contains the
operator (#14910)
* feat: add operator in alert info
* fix: optimize get user info directly
* fix: also optimize get user info directly
* fix: code style
* fix: code style
* fix: update test case
* fix: code check style
---------
Co-authored-by: Jim Chen <[email protected]>
Co-authored-by: David Zollo <[email protected]>
Co-authored-by: Rick Cheng <[email protected]>
Co-authored-by: caishunfeng <[email protected]>
Co-authored-by: xiangzihao <[email protected]>
---
.../dao/entity/ProcessAlertContent.java | 2 +
.../service/alert/ProcessAlertManager.java | 44 ++++++++++++++++++++++
.../service/alert/ProcessAlertManagerTest.java | 12 ++++++
3 files changed, 58 insertions(+)
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
index 4382f17f8f..bc96c9f173 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
@@ -61,6 +61,8 @@ public class ProcessAlertContent implements Serializable {
private CommandType processType;
@JsonProperty("processState")
private WorkflowExecutionStatus processState;
+ @JsonProperty("modifyBy")
+ private String modifyBy;
@JsonProperty("recovery")
private Flag recovery;
@JsonProperty("runTimes")
diff --git
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManager.java
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManager.java
index 4a403215ba..dc679d927f 100644
---
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManager.java
+++
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManager.java
@@ -29,10 +29,14 @@ import org.apache.dolphinscheduler.dao.entity.Alert;
import org.apache.dolphinscheduler.dao.entity.DqExecuteResult;
import org.apache.dolphinscheduler.dao.entity.DqExecuteResultAlertContent;
import org.apache.dolphinscheduler.dao.entity.ProcessAlertContent;
+import org.apache.dolphinscheduler.dao.entity.ProcessDefinitionLog;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
import org.apache.dolphinscheduler.dao.entity.TaskAlertContent;
import org.apache.dolphinscheduler.dao.entity.TaskInstance;
+import org.apache.dolphinscheduler.dao.entity.User;
+import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionLogMapper;
+import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import org.apache.dolphinscheduler.plugin.task.api.enums.dp.DqTaskState;
import org.apache.commons.collections4.CollectionUtils;
@@ -59,6 +63,12 @@ public class ProcessAlertManager {
@Autowired
private AlertDao alertDao;
+ @Autowired
+ private ProcessDefinitionLogMapper processDefinitionLogMapper;
+
+ @Autowired
+ private UserMapper userMapper;
+
/**
* command type convert chinese
*
@@ -104,6 +114,16 @@ public class ProcessAlertManager {
ProjectUser projectUser) {
String res = "";
+ ProcessDefinitionLog processDefinitionLog = processDefinitionLogMapper
+
.queryByDefinitionCodeAndVersion(processInstance.getProcessDefinitionCode(),
+ processInstance.getProcessDefinitionVersion());
+
+ String modifyBy = "";
+ if (processDefinitionLog != null) {
+ User operator =
userMapper.selectById(processDefinitionLog.getOperator());
+ modifyBy = operator == null ? "" : operator.getUserName();
+ }
+
if (processInstance.getState().isSuccess()) {
List<ProcessAlertContent> successTaskList = new ArrayList<>(1);
ProcessAlertContent processAlertContent =
ProcessAlertContent.builder()
@@ -115,6 +135,7 @@ public class ProcessAlertManager {
.processName(processInstance.getName())
.processType(processInstance.getCommandType())
.processState(processInstance.getState())
+ .modifyBy(modifyBy)
.recovery(processInstance.getRecovery())
.runTimes(processInstance.getRunTimes())
.processStartTime(processInstance.getStartTime())
@@ -137,6 +158,7 @@ public class ProcessAlertManager {
.processId(processInstance.getId())
.processDefinitionCode(processInstance.getProcessDefinitionCode())
.processName(processInstance.getName())
+ .modifyBy(modifyBy)
.taskCode(task.getTaskCode())
.taskName(task.getName())
.taskType(task.getTaskType())
@@ -166,11 +188,21 @@ public class ProcessAlertManager {
List<ProcessAlertContent> toleranceTaskInstanceList = new
ArrayList<>();
+ ProcessDefinitionLog processDefinitionLog = processDefinitionLogMapper
+
.queryByDefinitionCodeAndVersion(processInstance.getProcessDefinitionCode(),
+ processInstance.getProcessDefinitionVersion());
+ String modifyBy = "";
+ if (processDefinitionLog != null) {
+ User operator =
userMapper.selectById(processDefinitionLog.getOperator());
+ modifyBy = operator == null ? "" : operator.getUserName();
+ }
+
for (TaskInstance taskInstance : toleranceTaskList) {
ProcessAlertContent processAlertContent =
ProcessAlertContent.builder()
.processId(processInstance.getId())
.processDefinitionCode(processInstance.getProcessDefinitionCode())
.processName(processInstance.getName())
+ .modifyBy(modifyBy)
.taskCode(taskInstance.getTaskCode())
.taskName(taskInstance.getName())
.taskHost(taskInstance.getHost())
@@ -413,6 +445,17 @@ public class ProcessAlertManager {
Alert alert = new Alert();
String cmdName = getCommandCnName(processInstance.getCommandType());
List<ProcessAlertContent> blockingNodeList = new ArrayList<>(1);
+
+ ProcessDefinitionLog processDefinitionLog = processDefinitionLogMapper
+
.queryByDefinitionCodeAndVersion(processInstance.getProcessDefinitionCode(),
+ processInstance.getProcessDefinitionVersion());
+
+ String modifyBy = "";
+ if (processDefinitionLog != null) {
+ User operator =
userMapper.selectById(processDefinitionLog.getOperator());
+ modifyBy = operator == null ? "" : operator.getUserName();
+ }
+
ProcessAlertContent processAlertContent = ProcessAlertContent.builder()
.projectCode(projectUser.getProjectCode())
.projectName(projectUser.getProjectName())
@@ -421,6 +464,7 @@ public class ProcessAlertManager {
.processName(processInstance.getName())
.processType(processInstance.getCommandType())
.processState(processInstance.getState())
+ .modifyBy(modifyBy)
.runTimes(processInstance.getRunTimes())
.processStartTime(processInstance.getStartTime())
.processEndTime(processInstance.getEndTime())
diff --git
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManagerTest.java
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManagerTest.java
index 2dc864eb1e..c9fe3eea84 100644
---
a/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManagerTest.java
+++
b/dolphinscheduler-service/src/test/java/org/apache/dolphinscheduler/service/alert/ProcessAlertManagerTest.java
@@ -24,6 +24,8 @@ import org.apache.dolphinscheduler.dao.AlertDao;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
import org.apache.dolphinscheduler.dao.entity.TaskInstance;
+import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionLogMapper;
+import org.apache.dolphinscheduler.dao.mapper.UserMapper;
import java.util.ArrayList;
import java.util.Date;
@@ -51,6 +53,12 @@ public class ProcessAlertManagerTest {
@Mock
private AlertDao alertDao;
+ @Mock
+ private ProcessDefinitionLogMapper processDefinitionLogMapper;
+
+ @Mock
+ private UserMapper userMapper;
+
/**
* send worker alert fault tolerance
*/
@@ -81,6 +89,8 @@ public class ProcessAlertManagerTest {
processInstance.setState(WorkflowExecutionStatus.SUCCESS);
processInstance.setCommandType(CommandType.COMPLEMENT_DATA);
processInstance.setWarningGroupId(1);
+ processInstance.setProcessDefinitionCode(1L);
+ processInstance.setProcessDefinitionVersion(1);
ProjectUser projectUser = new ProjectUser();
TaskInstance taskInstance = new TaskInstance();
@@ -106,6 +116,8 @@ public class ProcessAlertManagerTest {
processInstance.setEndTime(new Date());
processInstance.setHost("127.0.0.1");
processInstance.setWarningGroupId(1);
+ processInstance.setProcessDefinitionCode(1L);
+ processInstance.setProcessDefinitionVersion(1);
ProjectUser projectUser = new ProjectUser();