Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
aef9ef6c
提交
aef9ef6c
authored
8月 30, 2017
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
事件调度:系统支持Cron、子任务触发、事件触发(API)三种方式触发任务调度;
上级
03979398
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
16 行增加
和
18 行删除
+16
-18
XXL-JOB官方文档.md
doc/XXL-JOB官方文档.md
+1
-0
XxlJobTrigger.java
...in/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
+4
-0
AdminBizImpl.java
...ain/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
+4
-15
XxlJobServiceImpl.java
...ava/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+5
-1
common.macro.ftl
.../src/main/webapp/WEB-INF/template/common/common.macro.ftl
+2
-2
没有找到文件。
doc/XXL-JOB官方文档.md
浏览文件 @
aef9ef6c
...
@@ -992,6 +992,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
...
@@ -992,6 +992,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
7、执行器注册线程销毁时, 主动摘除注册机器信息,提高执行器注册的实时性;
-
7、执行器注册线程销毁时, 主动摘除注册机器信息,提高执行器注册的实时性;
-
8、调度中心任务监控线程销毁时,批量对失败任务告警,防止告警信息丢失;
-
8、调度中心任务监控线程销毁时,批量对失败任务告警,防止告警信息丢失;
-
9、调度中心API服务:支持API方式触发任务执行;
-
9、调度中心API服务:支持API方式触发任务执行;
-
10、事件调度:系统支持Cron、子任务触发、事件触发(API)三种方式触发任务调度;
### TODO LIST
### TODO LIST
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
-
1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java
浏览文件 @
aef9ef6c
...
@@ -34,6 +34,10 @@ public class XxlJobTrigger {
...
@@ -34,6 +34,10 @@ public class XxlJobTrigger {
// load data
// load data
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
// job info
XxlJobInfo
jobInfo
=
XxlJobDynamicScheduler
.
xxlJobInfoDao
.
loadById
(
jobId
);
// job info
if
(
jobInfo
==
null
)
{
logger
.
warn
(
">>>>>>>>>>>> xxl-job trigger fail, jobId invalid,jobId={}"
,
jobId
);
return
;
}
XxlJobGroup
group
=
XxlJobDynamicScheduler
.
xxlJobGroupDao
.
load
(
jobInfo
.
getJobGroup
());
// group info
XxlJobGroup
group
=
XxlJobDynamicScheduler
.
xxlJobGroupDao
.
load
(
jobInfo
.
getJobGroup
());
// group info
ExecutorBlockStrategyEnum
blockStrategy
=
ExecutorBlockStrategyEnum
.
match
(
jobInfo
.
getExecutorBlockStrategy
(),
ExecutorBlockStrategyEnum
.
SERIAL_EXECUTION
);
// block strategy
ExecutorBlockStrategyEnum
blockStrategy
=
ExecutorBlockStrategyEnum
.
match
(
jobInfo
.
getExecutorBlockStrategy
(),
ExecutorBlockStrategyEnum
.
SERIAL_EXECUTION
);
// block strategy
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java
浏览文件 @
aef9ef6c
...
@@ -69,21 +69,10 @@ public class AdminBizImpl implements AdminBiz {
...
@@ -69,21 +69,10 @@ public class AdminBizImpl implements AdminBiz {
for
(
int
i
=
0
;
i
<
childJobKeys
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
childJobKeys
.
length
;
i
++)
{
String
[]
jobKeyArr
=
childJobKeys
[
i
].
split
(
"_"
);
String
[]
jobKeyArr
=
childJobKeys
[
i
].
split
(
"_"
);
if
(
jobKeyArr
!=
null
&&
jobKeyArr
.
length
==
2
)
{
if
(
jobKeyArr
!=
null
&&
jobKeyArr
.
length
==
2
)
{
XxlJobInfo
childJobInfo
=
xxlJobInfoDao
.
loadById
(
Integer
.
valueOf
(
jobKeyArr
[
1
]));
ReturnT
<
String
>
triggerChildResult
=
xxlJobService
.
triggerJob
(
Integer
.
valueOf
(
jobKeyArr
[
1
]));
if
(
childJobInfo
!=
null
)
{
// add msg
try
{
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务{2}, 子任务Key: {3}, 子任务触发备注: {4}"
,
boolean
ret
=
XxlJobDynamicScheduler
.
triggerJob
(
String
.
valueOf
(
childJobInfo
.
getId
()),
String
.
valueOf
(
childJobInfo
.
getJobGroup
()));
(
i
+
1
),
childJobKeys
.
length
,
(
triggerChildResult
.
getCode
()==
ReturnT
.
SUCCESS_CODE
?
"成功"
:
"失败"
),
childJobKeys
[
i
],
triggerChildResult
.
getMsg
());
// add msg
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务成功, 子任务Key: {2}, status: {3}, 子任务描述: {4}"
,
(
i
+
1
),
childJobKeys
.
length
,
childJobKeys
[
i
],
ret
,
childJobInfo
.
getJobDesc
());
}
catch
(
SchedulerException
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
else
{
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务失败, 子任务xxlJobInfo不存在, 子任务Key: {2}"
,
(
i
+
1
),
childJobKeys
.
length
,
childJobKeys
[
i
]);
}
}
else
{
}
else
{
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务失败, 子任务Key格式错误, 子任务Key: {2}"
,
childTriggerMsg
+=
MessageFormat
.
format
(
"<br> {0}/{1} 触发子任务失败, 子任务Key格式错误, 子任务Key: {2}"
,
(
i
+
1
),
childJobKeys
.
length
,
childJobKeys
[
i
]);
(
i
+
1
),
childJobKeys
.
length
,
childJobKeys
[
i
]);
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
浏览文件 @
aef9ef6c
...
@@ -264,6 +264,10 @@ public class XxlJobServiceImpl implements XxlJobService {
...
@@ -264,6 +264,10 @@ public class XxlJobServiceImpl implements XxlJobService {
@Override
@Override
public
ReturnT
<
String
>
triggerJob
(
int
id
)
{
public
ReturnT
<
String
>
triggerJob
(
int
id
)
{
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
XxlJobInfo
xxlJobInfo
=
xxlJobInfoDao
.
loadById
(
id
);
if
(
xxlJobInfo
==
null
)
{
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
"任务ID非法"
);
}
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
group
=
String
.
valueOf
(
xxlJobInfo
.
getJobGroup
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
String
name
=
String
.
valueOf
(
xxlJobInfo
.
getId
());
...
@@ -272,7 +276,7 @@ public class XxlJobServiceImpl implements XxlJobService {
...
@@ -272,7 +276,7 @@ public class XxlJobServiceImpl implements XxlJobService {
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
return
ReturnT
.
FAIL
;
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
e
.
getMessage
())
;
}
}
}
}
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl
浏览文件 @
aef9ef6c
...
@@ -60,8 +60,8 @@
...
@@ -60,8 +60,8 @@
<#macro commonHeader>
<#macro commonHeader>
<header class="main-header">
<header class="main-header">
<a href="${request.contextPath}/" class="logo">
<a href="${request.contextPath}/" class="logo">
<span class="logo-mini"><b>X
</b>XL
</span>
<span class="logo-mini"><b>X
XL</b>
</span>
<span class="logo-lg"><b>任务调度
</b>中心
</span>
<span class="logo-lg"><b>任务调度
中心</b>
</span>
</a>
</a>
<nav class="navbar navbar-static-top" role="navigation">
<nav class="navbar navbar-static-top" role="navigation">
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"><span class="sr-only">切换导航</span></a>
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button"><span class="sr-only">切换导航</span></a>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论