Commit 53710e6e authored by wenmo's avatar wenmo

新增 作业生命周期与任务实例同步联动

parent 1b21aa6f
......@@ -159,7 +159,7 @@ public class TaskController {
*/
@GetMapping(value = "/cancelTask")
public Result cancelTask(@RequestParam Integer id) {
return Result.succeed(taskService.cancelTask(id),"操作成功");
return taskService.cancelTask(id);
}
/**
......
......@@ -46,7 +46,7 @@ public interface TaskService extends ISuperService<Task> {
Result offLineTask(Integer id, String type);
boolean cancelTask(Integer id);
Result cancelTask(Integer id);
boolean recoveryTask(Integer id);
......
......@@ -349,7 +349,7 @@ public class TaskServiceImpl extends SuperServiceImpl<TaskMapper, Task> implemen
task.setStep(JobLifeCycle.ONLINE.getValue());
task.setJobInstanceId(jobResult.getJobInstanceId());
if (updateById(task)) {
return Result.succeed("上线成功");
return Result.succeed(jobResult,"上线成功");
} else {
return Result.failed("由于未知原因,上线失败");
}
......@@ -383,14 +383,21 @@ public class TaskServiceImpl extends SuperServiceImpl<TaskMapper, Task> implemen
}
@Override
public boolean cancelTask(Integer id) {
public Result cancelTask(Integer id) {
Task task = getById(id);
Assert.check(task);
if (JobLifeCycle.ONLINE != JobLifeCycle.get(task.getStep())) {
if(Asserts.isNotNull(task.getJobInstanceId())&&task.getJobInstanceId()!=0){
return Result.failed("当前有作业正在运行,注销失败,请停止后注销");
}
task.setStep(JobLifeCycle.CANCEL.getValue());
return updateById(task);
if (updateById(task)) {
return Result.succeed("注销成功");
} else {
return Result.failed("由于未知原因,注销失败");
}
}
return false;
return Result.failed("当前有作业已上线,无法注销,请下线后注销");
}
@Override
......
export const RUN_MODE = {
LOCAL:'local',
STANDALONE:'standalone',
YARN_SESSION:'yarn-session',
YARN_PER_JOB:'yarn-per-job',
YARN_APPLICATION:'yarn-application',
KUBERNETES_SESSION:'kubernetes-session',
KUBERNETES_APPLICATION:'kubernetes-application',
LOCAL: 'local',
STANDALONE: 'standalone',
YARN_SESSION: 'yarn-session',
YARN_PER_JOB: 'yarn-per-job',
YARN_APPLICATION: 'yarn-application',
KUBERNETES_SESSION: 'kubernetes-session',
KUBERNETES_APPLICATION: 'kubernetes-application',
};
export const DIALECT = {
FLINKSQL:'FlinkSql',
FLINKJAR:'FlinkJar',
FLINKSQLENV:'FlinkSqlEnv',
SQL:'Sql',
MYSQL:'Mysql',
ORACLE:'Oracle',
SQLSERVER:'SqlServer',
POSTGRESQL:'PostGreSql',
CLICKHOUSE:'ClickHouse',
DORIS:'Doris',
JAVA:'Java',
FLINKSQL: 'FlinkSql',
FLINKJAR: 'FlinkJar',
FLINKSQLENV: 'FlinkSqlEnv',
SQL: 'Sql',
MYSQL: 'Mysql',
ORACLE: 'Oracle',
SQLSERVER: 'SqlServer',
POSTGRESQL: 'PostGreSql',
CLICKHOUSE: 'ClickHouse',
DORIS: 'Doris',
JAVA: 'Java',
};
export const CHART = {
LINE:'折线图',
BAR:'条形图',
PIE:'饼图',
LINE: '折线图',
BAR: '条形图',
PIE: '饼图',
};
export const isSql = (dialect: string)=>{
switch (dialect){
export const isSql = (dialect: string) => {
switch (dialect) {
case DIALECT.SQL:
case DIALECT.MYSQL:
case DIALECT.ORACLE:
......@@ -43,8 +43,54 @@ export const isSql = (dialect: string)=>{
}
};
export const isOnline = (type: string)=>{
switch (type){
export const isExecuteSql = (dialect: string) => {
if (!dialect) {
return true;
}
switch (dialect) {
case DIALECT.SQL:
case DIALECT.MYSQL:
case DIALECT.ORACLE:
case DIALECT.SQLSERVER:
case DIALECT.POSTGRESQL:
case DIALECT.CLICKHOUSE:
case DIALECT.DORIS:
case DIALECT.FLINKSQL:
return true;
default:
return false;
}
};
export const isTask = (dialect: string) => {
if (!dialect) {
return true;
}
switch (dialect) {
case DIALECT.SQL:
case DIALECT.MYSQL:
case DIALECT.ORACLE:
case DIALECT.SQLSERVER:
case DIALECT.POSTGRESQL:
case DIALECT.CLICKHOUSE:
case DIALECT.DORIS:
case DIALECT.FLINKSQL:
case DIALECT.FLINKJAR:
return true;
default:
return false;
}
};
export const isRunningTask = (jobInstanceId: number) => {
if (jobInstanceId && jobInstanceId != 0) {
return true;
}
return false;
};
export const isOnline = (type: string) => {
switch (type) {
case RUN_MODE.LOCAL:
case RUN_MODE.STANDALONE:
case RUN_MODE.YARN_SESSION:
......@@ -65,3 +111,9 @@ export const TASKSTEPS = {
CANCEL: 6,
};
export const isDeletedTask = (step: number) => {
if (step && step === TASKSTEPS.CANCEL) {
return true;
}
return false;
};
......@@ -743,6 +743,9 @@ export default (): React.ReactNode => {
<li>
<Link>修复 用户未登录时后台报错及鉴权问题</Link>
</li>
<li>
<Link>新增 作业生命周期与任务实例同步联动</Link>
</li>
</ul>
</Paragraph>
</Timeline.Item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment