Commit 53710e6e authored by wenmo's avatar wenmo

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

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