From 68f612080bf77ddfb79668aef18b77fcba455de3 Mon Sep 17 00:00:00 2001 From: sige Date: Fri, 22 Mar 2024 17:17:30 +0800 Subject: [PATCH] ~ --- .../com/my/graphiteDigesterBg/diframe/DiTask.java | 6 +++++- .../my/graphiteDigesterBg/diframe/DiTaskBase.java | 25 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java index 176e3f0..3f18ada 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTask.java @@ -2,7 +2,7 @@ package com.my.graphiteDigesterBg.diframe; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; public interface DiTask { // task status - enum TaskStatus { NEW, RUNNING, FINISHED, CANCELLED, WAITING, READY } + enum TaskStatus { NEW, RUNNING, FINISHED, CANCELLED, WAITING, STEP_WAITING, READY } // get status TaskStatus getStatus(); // get UUID @@ -19,4 +19,8 @@ public interface DiTask { void setStatus(TaskStatus status); void setUser(DiMdbUser user); DiMdbUser getUser(); + void prepare(); + + // get current step + DiTaskStep getStep(); } diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java index 0591d35..8f6596e 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/DiTaskBase.java @@ -1,9 +1,11 @@ package com.my.graphiteDigesterBg.diframe; +import com.my.graphiteDigesterBg.diframe.model.DiMdbNotification; import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.management.Notification; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -47,6 +49,11 @@ abstract public class DiTaskBase implements DiTask { } @Override + public void prepare() { + // implement this method in subclass + } + + @Override public void init() { Task task = this.getClass().getAnnotation(Task.class); this.execution.name = task.name(); @@ -66,6 +73,12 @@ abstract public class DiTaskBase implements DiTask { } } + // set runtime message + protected void setRuntimeMessage( String message ) { + this.execution.message = message; + this.execution.save(); + } + // set runtime status protected void setRuntimeStatus( String status ) { this.execution.runtimeStatus = status; @@ -114,10 +127,12 @@ abstract public class DiTaskBase implements DiTask { try { this.execute(); } catch ( Exception e ) { + this.onError(e); this.execution.status = "ERROR"; this.execution.message = e.getMessage(); this.execution.save(); this.status = TaskStatus.FINISHED; + DiMdbNotification.taskError(this, e.getMessage()); } } @@ -171,4 +186,14 @@ abstract public class DiTaskBase implements DiTask { public DiTaskAction getAction(String name) { return this.actions.get(name); } + + // error handler + protected void onError( Exception e ) { + // implement this method in subclass + } + + @Override + public DiTaskStep getStep() { + return null; + } }