Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
8a8d7a5c
提交
8a8d7a5c
authored
7月 18, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
coding snapshot
上级
20ab6b14
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
220 行增加
和
180 行删除
+220
-180
README.md
README.md
+12
-2
tables_xxl_job.sql
db/tables_xxl_job.sql
+8
-6
JobInfoController.java
.../java/com/xxl/job/admin/controller/JobInfoController.java
+3
-3
JobLogController.java
...n/java/com/xxl/job/admin/controller/JobLogController.java
+7
-0
Constants.java
.../main/java/com/xxl/job/admin/core/constant/Constants.java
+3
-3
IXxlJobInfoDao.java
...n/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
+5
-3
XxlJobInfoDaoImpl.java
...in/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
+11
-5
IXxlJobService.java
...c/main/java/com/xxl/job/admin/service/IXxlJobService.java
+2
-2
XxlJobServiceImpl.java
...ava/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+11
-11
log4j.properties
xxl-job-admin/src/main/resources/log4j.properties
+1
-1
XxlJobInfoMapper.xml
...in/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+17
-10
XxlJobLogGlueMapper.xml
...src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
+4
-4
XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+7
-7
jobinfo.index.ftl
...rc/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
+0
-0
joblog.index.ftl
.../src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
+8
-5
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+86
-115
joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+32
-0
log4j.xml
xxl-job-executor-example/src/main/resources/log4j.xml
+2
-2
XxlJobInfoMapper.xml
...le/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
+1
-1
没有找到文件。
README.md
浏览文件 @
8a8d7a5c
...
@@ -251,11 +251,21 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L
...
@@ -251,11 +251,21 @@ XXL-JOB会为每次调度请求生成一个单独的日志文件,通过重写L
-
2、执行器异步回调执行日志;
-
2、执行器异步回调执行日志;
-
3、【重要】在 “调度中心” 支持HA的基础上,扩展执行器的Failover支持,支持配置多执行期地址;
-
3、【重要】在 “调度中心” 支持HA的基础上,扩展执行器的Failover支持,支持配置多执行期地址;
#### 4.6 版本 V1.4.0 新特性
-
1、任务依赖: 通过事件触发方式实现, 任务执行成功并回调SUCCESS时, 会主动触发一次依赖任务的调度;
-
2、调度中心任务属性调整: jobName改为系统生成, 新增任务时不需要指定;
-
3、问题修复:
-
1.1、执行器jetty关闭优化,解决一处可能导致jetty无法关闭的问题;
-
1.2、执行器任务终止时,执行队列回调优化,解决一处导致任务无法回调的问题;
-
1.3、调度中心中列表分页参数优化,解决一处因服务器限制post长度而引起的问题;
-
1.4、执行器Jobhandler注解优化,解决一处因事务代理导致的容器无法加载JobHandler的问题;
-
1.5、远程调度优化,禁用retry策略,解决一处可能导致重复调用的问题;
#### 规划中
#### 规划中
-
1、任务终止时,任务队列中调度回调通过被终止的接口;
-
2、任务执行规则自定义:假如前一个任务正在执行,后续调度执行规则支持自定义;
-
2、任务执行规则自定义:假如前一个任务正在执行,后续调度执行规则支持自定义;
串行(默认,当前逻辑):后续调度入调度队列;
串行(默认,当前逻辑):后续调度入调度队列;
并行:后续调度并行执行;
并行:后续调度并行执行;
Pass:后续调度被Pass;
Pass:后续调度被Pass;
-
3、兼容oracle;
-
3、兼容oracle;
-
4、任务依赖;
db/tables_xxl_job.sql
浏览文件 @
8a8d7a5c
...
@@ -143,7 +143,9 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
...
@@ -143,7 +143,9 @@ CREATE TABLE XXL_JOB_QRTZ_LOCKS
PRIMARY
KEY
(
SCHED_NAME
,
LOCK_NAME
)
PRIMARY
KEY
(
SCHED_NAME
,
LOCK_NAME
)
);
);
CREATE
TABLE
`xxl_job_qrtz_trigger_info`
(
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_INFO
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
...
@@ -162,9 +164,9 @@ CREATE TABLE `xxl_job_qrtz_trigger_info` (
...
@@ -162,9 +164,9 @@ CREATE TABLE `xxl_job_qrtz_trigger_info` (
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_source`
text
COMMENT
'GLUE源代码'
,
`glue_remark`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'GLUE备注'
,
`glue_remark`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'GLUE备注'
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
4
DEFAULT
CHARSET
=
utf8
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`xxl_job_qrtz_trigger_log`
(
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_LOG
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_group`
varchar
(
255
)
NOT
NULL
COMMENT
'任务组'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
`job_name`
varchar
(
255
)
NOT
NULL
COMMENT
'任务名'
,
...
@@ -181,9 +183,9 @@ CREATE TABLE `xxl_job_qrtz_trigger_log` (
...
@@ -181,9 +183,9 @@ CREATE TABLE `xxl_job_qrtz_trigger_log` (
`handle_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行-状态'
,
`handle_status`
varchar
(
255
)
DEFAULT
NULL
COMMENT
'执行-状态'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
`handle_msg`
varchar
(
2048
)
DEFAULT
NULL
COMMENT
'执行-日志'
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
33
DEFAULT
CHARSET
=
utf8
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
CREATE
TABLE
`xxl_job_qrtz_trigger_logglue`
(
CREATE
TABLE
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
(
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT
,
`job_group`
varchar
(
255
)
NOT
NULL
,
`job_group`
varchar
(
255
)
NOT
NULL
,
`job_name`
varchar
(
255
)
NOT
NULL
,
`job_name`
varchar
(
255
)
NOT
NULL
,
...
@@ -192,7 +194,7 @@ CREATE TABLE `xxl_job_qrtz_trigger_logglue` (
...
@@ -192,7 +194,7 @@ CREATE TABLE `xxl_job_qrtz_trigger_logglue` (
`add_time`
timestamp
NULL
DEFAULT
NULL
,
`add_time`
timestamp
NULL
DEFAULT
NULL
,
`update_time`
timestamp
NULL
DEFAULT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
,
`update_time`
timestamp
NULL
DEFAULT
NULL
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
)
PRIMARY
KEY
(
`id`
)
)
ENGINE
=
InnoDB
AUTO_INCREMENT
=
5
DEFAULT
CHARSET
=
utf8
;
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
浏览文件 @
8a8d7a5c
...
@@ -35,9 +35,9 @@ public class JobInfoController {
...
@@ -35,9 +35,9 @@ public class JobInfoController {
@ResponseBody
@ResponseBody
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
public
Map
<
String
,
Object
>
pageList
(
@RequestParam
(
required
=
false
,
defaultValue
=
"0"
)
int
start
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
@RequestParam
(
required
=
false
,
defaultValue
=
"10"
)
int
length
,
String
jobGroup
,
String
job
Name
,
String
filterTime
)
{
String
jobGroup
,
String
job
Desc
,
String
filterTime
)
{
return
xxlJobService
.
pageList
(
start
,
length
,
jobGroup
,
job
Name
,
filterTime
);
return
xxlJobService
.
pageList
(
start
,
length
,
jobGroup
,
job
Desc
,
filterTime
);
}
}
@RequestMapping
(
"/add"
)
@RequestMapping
(
"/add"
)
...
@@ -47,7 +47,7 @@ public class JobInfoController {
...
@@ -47,7 +47,7 @@ public class JobInfoController {
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
int
glueSwitch
,
String
glueSource
,
String
glueRemark
)
{
int
glueSwitch
,
String
glueSource
,
String
glueRemark
)
{
return
xxlJobService
.
add
(
jobGroup
,
job
Name
,
job
Cron
,
jobDesc
,
executorAddress
,
executorHandler
,
executorParam
,
return
xxlJobService
.
add
(
jobGroup
,
jobCron
,
jobDesc
,
executorAddress
,
executorHandler
,
executorParam
,
author
,
alarmEmail
,
alarmThreshold
,
glueSwitch
,
glueSource
,
glueRemark
);
author
,
alarmEmail
,
alarmThreshold
,
glueSwitch
,
glueSource
,
glueRemark
);
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
浏览文件 @
8a8d7a5c
...
@@ -47,6 +47,13 @@ public class JobLogController {
...
@@ -47,6 +47,13 @@ public class JobLogController {
model
.
addAttribute
(
"JobGroupList"
,
JobGroupEnum
.
values
());
model
.
addAttribute
(
"JobGroupList"
,
JobGroupEnum
.
values
());
return
"joblog/joblog.index"
;
return
"joblog/joblog.index"
;
}
}
@RequestMapping
(
"/getJobsByGroup"
)
@ResponseBody
public
ReturnT
<
List
<
XxlJobLog
>>
listJobByGroup
(
String
jobGroup
){
List
<
XxlJobLog
>
list
=
xxlJobInfoDao
.
getJobsByGroup
(
jobGroup
);
return
new
ReturnT
<
List
<
XxlJobLog
>>(
list
);
}
@RequestMapping
(
"/pageList"
)
@RequestMapping
(
"/pageList"
)
@ResponseBody
@ResponseBody
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/core/constant/Constants.java
浏览文件 @
8a8d7a5c
...
@@ -7,9 +7,9 @@ package com.xxl.job.admin.core.constant;
...
@@ -7,9 +7,9 @@ package com.xxl.job.admin.core.constant;
public
class
Constants
{
public
class
Constants
{
public
enum
JobGroupEnum
{
public
enum
JobGroupEnum
{
DEFAULT
(
"默认"
),
defaults
(
"默认"
),
WAIMAI
(
"外卖"
),
waimai
(
"外卖"
),
MOVIE
(
"电影"
);
movie
(
"电影"
);
private
String
desc
;
private
String
desc
;
private
JobGroupEnum
(
String
desc
){
private
JobGroupEnum
(
String
desc
){
this
.
desc
=
desc
;
this
.
desc
=
desc
;
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobInfoDao.java
浏览文件 @
8a8d7a5c
...
@@ -3,6 +3,7 @@ package com.xxl.job.admin.dao;
...
@@ -3,6 +3,7 @@ package com.xxl.job.admin.dao;
import
java.util.List
;
import
java.util.List
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobInfo
;
import
com.xxl.job.admin.core.model.XxlJobLog
;
/**
/**
...
@@ -11,8 +12,8 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
...
@@ -11,8 +12,8 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
*/
*/
public
interface
IXxlJobInfoDao
{
public
interface
IXxlJobInfoDao
{
public
List
<
XxlJobInfo
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Name
);
public
List
<
XxlJobInfo
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Desc
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Name
);
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Desc
);
public
int
save
(
XxlJobInfo
info
);
public
int
save
(
XxlJobInfo
info
);
...
@@ -21,5 +22,6 @@ public interface IXxlJobInfoDao {
...
@@ -21,5 +22,6 @@ public interface IXxlJobInfoDao {
public
int
update
(
XxlJobInfo
item
);
public
int
update
(
XxlJobInfo
item
);
public
int
delete
(
String
jobGroup
,
String
jobName
);
public
int
delete
(
String
jobGroup
,
String
jobName
);
public
List
<
XxlJobLog
>
getJobsByGroup
(
String
jobGroup
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobInfoDaoImpl.java
浏览文件 @
8a8d7a5c
...
@@ -5,6 +5,7 @@ import java.util.List;
...
@@ -5,6 +5,7 @@ import java.util.List;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
com.xxl.job.admin.core.model.XxlJobLog
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
...
@@ -22,23 +23,23 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
...
@@ -22,23 +23,23 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
public
SqlSessionTemplate
sqlSessionTemplate
;
public
SqlSessionTemplate
sqlSessionTemplate
;
@Override
@Override
public
List
<
XxlJobInfo
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Name
)
{
public
List
<
XxlJobInfo
>
pageList
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Desc
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"job
Name"
,
jobName
);
params
.
put
(
"job
Desc"
,
jobDesc
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobInfoMapper.pageList"
,
params
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobInfoMapper.pageList"
,
params
);
}
}
@Override
@Override
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Name
)
{
public
int
pageListCount
(
int
offset
,
int
pagesize
,
String
jobGroup
,
String
job
Desc
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"offset"
,
offset
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"pagesize"
,
pagesize
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"job
Name"
,
jobName
);
params
.
put
(
"job
Desc"
,
jobDesc
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobInfoMapper.pageListCount"
,
params
);
return
sqlSessionTemplate
.
selectOne
(
"XxlJobInfoMapper.pageListCount"
,
params
);
}
}
...
@@ -70,5 +71,10 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
...
@@ -70,5 +71,10 @@ public class XxlJobInfoDaoImpl implements IXxlJobInfoDao {
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.delete"
,
params
);
return
sqlSessionTemplate
.
update
(
"XxlJobInfoMapper.delete"
,
params
);
}
}
@Override
public
List
<
XxlJobLog
>
getJobsByGroup
(
String
jobGroup
)
{
return
sqlSessionTemplate
.
selectList
(
"XxlJobInfoMapper.getJobsByGroup"
,
jobGroup
);
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java
浏览文件 @
8a8d7a5c
...
@@ -11,9 +11,9 @@ import com.xxl.job.admin.core.model.ReturnT;
...
@@ -11,9 +11,9 @@ import com.xxl.job.admin.core.model.ReturnT;
*/
*/
public
interface
IXxlJobService
{
public
interface
IXxlJobService
{
public
Map
<
String
,
Object
>
pageList
(
int
start
,
int
length
,
String
jobGroup
,
String
job
Name
,
String
filterTime
);
public
Map
<
String
,
Object
>
pageList
(
int
start
,
int
length
,
String
jobGroup
,
String
job
Desc
,
String
filterTime
);
public
ReturnT
<
String
>
add
(
String
jobGroup
,
String
job
Name
,
String
jobCron
,
String
jobDesc
,
public
ReturnT
<
String
>
add
(
String
jobGroup
,
String
job
Cron
,
String
jobDesc
,
String
executorAddress
,
String
executorHandler
,
String
executorParam
,
String
executorAddress
,
String
executorHandler
,
String
executorParam
,
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
int
glueSwitch
,
String
glueSource
,
String
glueRemark
);
int
glueSwitch
,
String
glueSource
,
String
glueRemark
);
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
浏览文件 @
8a8d7a5c
...
@@ -3,6 +3,7 @@ package com.xxl.job.admin.service.impl;
...
@@ -3,6 +3,7 @@ package com.xxl.job.admin.service.impl;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.UUID
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
...
@@ -36,11 +37,11 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -36,11 +37,11 @@ public class XxlJobServiceImpl implements IXxlJobService {
private
IXxlJobLogGlueDao
xxlJobLogGlueDao
;
private
IXxlJobLogGlueDao
xxlJobLogGlueDao
;
@Override
@Override
public
Map
<
String
,
Object
>
pageList
(
int
start
,
int
length
,
String
jobGroup
,
String
job
Name
,
String
filterTime
)
{
public
Map
<
String
,
Object
>
pageList
(
int
start
,
int
length
,
String
jobGroup
,
String
job
Desc
,
String
filterTime
)
{
// page list
// page list
List
<
XxlJobInfo
>
list
=
xxlJobInfoDao
.
pageList
(
start
,
length
,
jobGroup
,
job
Name
);
List
<
XxlJobInfo
>
list
=
xxlJobInfoDao
.
pageList
(
start
,
length
,
jobGroup
,
job
Desc
);
int
list_count
=
xxlJobInfoDao
.
pageListCount
(
start
,
length
,
jobGroup
,
job
Name
);
int
list_count
=
xxlJobInfoDao
.
pageListCount
(
start
,
length
,
jobGroup
,
job
Desc
);
// fill job info
// fill job info
if
(
list
!=
null
&&
list
.
size
()>
0
)
{
if
(
list
!=
null
&&
list
.
size
()>
0
)
{
...
@@ -58,7 +59,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -58,7 +59,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
@Override
@Override
public
ReturnT
<
String
>
add
(
String
jobGroup
,
String
job
Name
,
String
jobCron
,
String
jobDesc
,
public
ReturnT
<
String
>
add
(
String
jobGroup
,
String
job
Cron
,
String
jobDesc
,
String
executorAddress
,
String
executorHandler
,
String
executorParam
,
String
executorAddress
,
String
executorHandler
,
String
executorParam
,
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
String
author
,
String
alarmEmail
,
int
alarmThreshold
,
int
glueSwitch
,
String
glueSource
,
String
glueRemark
)
{
int
glueSwitch
,
String
glueSource
,
String
glueRemark
)
{
...
@@ -66,9 +67,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -66,9 +67,6 @@ public class XxlJobServiceImpl implements IXxlJobService {
if
(
JobGroupEnum
.
match
(
jobGroup
)
==
null
)
{
if
(
JobGroupEnum
.
match
(
jobGroup
)
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
"请选择“任务组”"
);
return
new
ReturnT
<
String
>(
500
,
"请选择“任务组”"
);
}
}
if
(
StringUtils
.
isBlank
(
jobName
))
{
return
new
ReturnT
<
String
>(
500
,
"请输入“任务名”"
);
}
if
(!
CronExpression
.
isValidExpression
(
jobCron
))
{
if
(!
CronExpression
.
isValidExpression
(
jobCron
))
{
return
new
ReturnT
<
String
>(
500
,
"请输入格式正确的“Cron”"
);
return
new
ReturnT
<
String
>(
500
,
"请输入格式正确的“Cron”"
);
}
}
...
@@ -90,7 +88,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -90,7 +88,9 @@ public class XxlJobServiceImpl implements IXxlJobService {
if
(
alarmThreshold
<
0
)
{
if
(
alarmThreshold
<
0
)
{
alarmThreshold
=
0
;
alarmThreshold
=
0
;
}
}
// generate jobName
String
jobName
=
UUID
.
randomUUID
().
toString
();
try
{
try
{
if
(
DynamicSchedulerUtil
.
checkExists
(
jobName
,
jobGroup
))
{
if
(
DynamicSchedulerUtil
.
checkExists
(
jobName
,
jobGroup
))
{
return
new
ReturnT
<
String
>(
500
,
"此任务已存在,请更换任务组或任务名"
);
return
new
ReturnT
<
String
>(
500
,
"此任务已存在,请更换任务组或任务名"
);
...
@@ -99,7 +99,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -99,7 +99,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
e1
.
printStackTrace
();
e1
.
printStackTrace
();
return
new
ReturnT
<
String
>(
500
,
"此任务已存在,请更换任务组或任务名"
);
return
new
ReturnT
<
String
>(
500
,
"此任务已存在,请更换任务组或任务名"
);
}
}
// Backup to the database
// Backup to the database
XxlJobInfo
jobInfo
=
new
XxlJobInfo
();
XxlJobInfo
jobInfo
=
new
XxlJobInfo
();
jobInfo
.
setJobGroup
(
jobGroup
);
jobInfo
.
setJobGroup
(
jobGroup
);
...
@@ -117,7 +117,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -117,7 +117,7 @@ public class XxlJobServiceImpl implements IXxlJobService {
jobInfo
.
setExecutorHandler
(
executorHandler
);
jobInfo
.
setExecutorHandler
(
executorHandler
);
jobInfo
.
setExecutorParam
(
executorParam
);
jobInfo
.
setExecutorParam
(
executorParam
);
xxlJobInfoDao
.
save
(
jobInfo
);
xxlJobInfoDao
.
save
(
jobInfo
);
try
{
try
{
// add job 2 quartz
// add job 2 quartz
boolean
result
=
DynamicSchedulerUtil
.
addJob
(
jobInfo
);
boolean
result
=
DynamicSchedulerUtil
.
addJob
(
jobInfo
);
...
@@ -168,8 +168,8 @@ public class XxlJobServiceImpl implements IXxlJobService {
...
@@ -168,8 +168,8 @@ public class XxlJobServiceImpl implements IXxlJobService {
}
}
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
load
(
jobGroup
,
jobName
);
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
load
(
jobGroup
,
jobName
);
jobInfo
.
setJobCron
(
jobCron
);
jobInfo
.
setJobDesc
(
jobDesc
);
jobInfo
.
setJobDesc
(
jobDesc
);
jobInfo
.
setJobCron
(
jobCron
);
jobInfo
.
setAuthor
(
author
);
jobInfo
.
setAuthor
(
author
);
jobInfo
.
setAlarmEmail
(
alarmEmail
);
jobInfo
.
setAlarmEmail
(
alarmEmail
);
jobInfo
.
setAlarmThreshold
(
alarmThreshold
);
jobInfo
.
setAlarmThreshold
(
alarmThreshold
);
...
...
xxl-job-admin/src/main/resources/log4j.properties
浏览文件 @
8a8d7a5c
...
@@ -5,6 +5,6 @@ log4j.appender.console.layout=org.apache.log4j.PatternLayout
...
@@ -5,6 +5,6 @@ log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern
=
%d - xxl-job-admin - %p [%c] - <%m>%n
log4j.appender.console.layout.ConversionPattern
=
%d - xxl-job-admin - %p [%c] - <%m>%n
log4j.appender.logFile
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.logFile
=
org.apache.log4j.DailyRollingFileAppender
log4j.appender.logFile.File
=
${catalina.base}/logs
/xxl-job-admin.log
log4j.appender.logFile.File
=
/data/applogs/xxl-job
/xxl-job-admin.log
log4j.appender.logFile.layout
=
org.apache.log4j.PatternLayout
log4j.appender.logFile.layout
=
org.apache.log4j.PatternLayout
log4j.appender.logFile.layout.ConversionPattern
=
%d - xxl-job-admin - %p [%c] - <%m>%n
log4j.appender.logFile.layout.ConversionPattern
=
%d - xxl-job-admin - %p [%c] - <%m>%n
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
浏览文件 @
8a8d7a5c
...
@@ -50,13 +50,13 @@
...
@@ -50,13 +50,13 @@
<select
id=
"pageList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
<select
id=
"pageList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_info
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_INFO
AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
</if>
</if>
<if
test=
"job
Name != null and jobName
!= ''"
>
<if
test=
"job
Desc != null and jobDesc
!= ''"
>
AND t.job_
name like CONCAT(CONCAT('%', #{jobName
}), '%')
AND t.job_
desc like CONCAT(CONCAT('%', #{jobDesc
}), '%')
</if>
</if>
</trim>
</trim>
ORDER BY id DESC
ORDER BY id DESC
...
@@ -65,19 +65,19 @@
...
@@ -65,19 +65,19 @@
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
SELECT count(1)
SELECT count(1)
FROM
xxl_job_qrtz_trigger_info
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_INFO
AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
</if>
</if>
<if
test=
"job
Name != null and jobName
!= ''"
>
<if
test=
"job
Desc != null and jobDesc
!= ''"
>
AND t.job_
name like CONCAT(CONCAT('%', #{jobName
}), '%')
AND t.job_
desc like CONCAT(CONCAT('%', #{jobDesc
}), '%')
</if>
</if>
</trim>
</trim>
</select>
</select>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO
`xxl_job_qrtz_trigger_info`
(
INSERT INTO
XXL_JOB_QRTZ_TRIGGER_INFO
(
job_group,
job_group,
job_name,
job_name,
job_cron,
job_cron,
...
@@ -119,13 +119,13 @@
...
@@ -119,13 +119,13 @@
<select
id=
"load"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
<select
id=
"load"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_info
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_INFO
AS t
WHERE t.job_group = #{jobGroup}
WHERE t.job_group = #{jobGroup}
AND t.job_name = #{jobName}
AND t.job_name = #{jobName}
</select>
</select>
<update
id=
"update"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
>
<update
id=
"update"
parameterType=
"com.xxl.job.admin.core.model.XxlJobInfo"
>
UPDATE
`xxl_job_qrtz_trigger_info`
UPDATE
XXL_JOB_QRTZ_TRIGGER_INFO
SET
SET
job_cron = #{jobCron},
job_cron = #{jobCron},
job_desc = #{jobDesc},
job_desc = #{jobDesc},
...
@@ -146,10 +146,16 @@
...
@@ -146,10 +146,16 @@
<delete
id=
"delete"
parameterType=
"java.lang.String"
>
<delete
id=
"delete"
parameterType=
"java.lang.String"
>
DELETE
DELETE
FROM
FROM
xxl_job_qrtz_trigger_info
XXL_JOB_QRTZ_TRIGGER_INFO
WHERE
WHERE
job_group = #{jobGroup}
job_group = #{jobGroup}
AND job_name = #{jobName}
AND job_name = #{jobName}
</delete>
</delete>
<select
id=
"getJobsByGroup"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM XXL_JOB_QRTZ_TRIGGER_INFO AS t
WHERE t.job_group = #{jobGroup}
</select>
</mapper>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
浏览文件 @
8a8d7a5c
...
@@ -46,7 +46,7 @@
...
@@ -46,7 +46,7 @@
<select
id=
"selectList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLogGlue"
>
<select
id=
"selectList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLogGlue"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_logglue
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
...
@@ -59,10 +59,10 @@
...
@@ -59,10 +59,10 @@
</select>
</select>
<delete
id=
"removeOld"
parameterType=
"java.util.HashMap"
>
<delete
id=
"removeOld"
parameterType=
"java.util.HashMap"
>
DELETE FROM
xxl_job_qrtz_trigger_logglue
DELETE FROM
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
WHERE id NOT in(
WHERE id NOT in(
SELECT id FROM(
SELECT id FROM(
SELECT id FROM
xxl_job_qrtz_trigger_logglue
SELECT id FROM
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
WHERE `job_group` = #{jobGroup} and `job_name` = #{jobName}
WHERE `job_group` = #{jobGroup} and `job_name` = #{jobName}
ORDER BY update_time desc
ORDER BY update_time desc
LIMIT 0, #{limit}
LIMIT 0, #{limit}
...
@@ -71,7 +71,7 @@
...
@@ -71,7 +71,7 @@
</delete>
</delete>
<delete
id=
"delete"
parameterType=
"java.util.HashMap"
>
<delete
id=
"delete"
parameterType=
"java.util.HashMap"
>
DELETE FROM
xxl_job_qrtz_trigger_logglue
DELETE FROM
XXL_JOB_QRTZ_TRIGGER_LOGGLUE
WHERE job_group = #{jobGroup} and job_name = #{jobName}
WHERE job_group = #{jobGroup} and job_name = #{jobName}
</delete>
</delete>
...
...
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
8a8d7a5c
...
@@ -67,7 +67,7 @@
...
@@ -67,7 +67,7 @@
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
<select
id=
"pageListCount"
parameterType=
"java.util.HashMap"
resultType=
"int"
>
SELECT count(1)
SELECT count(1)
FROM
xxl_job_qrtz_trigger_log
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_LOG
AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
AND t.job_group = #{jobGroup}
...
@@ -86,19 +86,19 @@
...
@@ -86,19 +86,19 @@
<select
id=
"load"
parameterType=
"java.lang.Integer"
resultMap=
"XxlJobLog"
>
<select
id=
"load"
parameterType=
"java.lang.Integer"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_log
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_LOG
AS t
WHERE t.id = #{id}
WHERE t.id = #{id}
</select>
</select>
<select
id=
"loadByGroupAndName"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLog"
>
<select
id=
"loadByGroupAndName"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLog"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_log
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_LOG
AS t
WHERE t.job_group = #{jobGroup}
WHERE t.job_group = #{jobGroup}
AND t.job_name = #{jobName}
AND t.job_name = #{jobName}
</select>
</select>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
<insert
id=
"save"
parameterType=
"com.xxl.job.admin.core.model.XxlJobLog"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO
`xxl_job_qrtz_trigger_log`
(
INSERT INTO
XXL_JOB_QRTZ_TRIGGER_LOG
(
`job_group`,
`job_group`,
`job_name`,
`job_name`,
`job_cron`,
`job_cron`,
...
@@ -123,7 +123,7 @@
...
@@ -123,7 +123,7 @@
</insert>
</insert>
<update
id=
"updateTriggerInfo"
>
<update
id=
"updateTriggerInfo"
>
UPDATE
`xxl_job_qrtz_trigger_log`
UPDATE
XXL_JOB_QRTZ_TRIGGER_LOG
SET
SET
`trigger_time`= #{triggerTime},
`trigger_time`= #{triggerTime},
`trigger_status`= #{triggerStatus},
`trigger_status`= #{triggerStatus},
...
@@ -135,7 +135,7 @@
...
@@ -135,7 +135,7 @@
</update>
</update>
<update
id=
"updateHandleInfo"
>
<update
id=
"updateHandleInfo"
>
UPDATE
`xxl_job_qrtz_trigger_log`
UPDATE
XXL_JOB_QRTZ_TRIGGER_LOG
SET
SET
`handle_time`= #{handleTime},
`handle_time`= #{handleTime},
`handle_status`= #{handleStatus},
`handle_status`= #{handleStatus},
...
@@ -144,7 +144,7 @@
...
@@ -144,7 +144,7 @@
</update>
</update>
<delete
id=
"delete"
>
<delete
id=
"delete"
>
delete from
`xxl_job_qrtz_trigger_log`
delete from
XXL_JOB_QRTZ_TRIGGER_LOG
WHERE job_group = #{jobGroup}
WHERE job_group = #{jobGroup}
AND job_name = #{jobName}
AND job_name = #{jobName}
</delete>
</delete>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl
浏览文件 @
8a8d7a5c
差异被折叠。
点击展开。
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
浏览文件 @
8a8d7a5c
...
@@ -34,18 +34,21 @@
...
@@ -34,18 +34,21 @@
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col-xs-3"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务组
</span>
<span
class=
"input-group-addon"
>
分组
</span>
<select
class=
"form-control"
id=
"jobGroup"
>
<select
class=
"form-control"
id=
"jobGroup"
paramVal=
"${jobGroup}"
>
<option
value=
""
selected
>
请选择
</option>
<
#
list
JobGroupList
as
group
>
<
#
list
JobGroupList
as
group
>
<option
value=
"${group}"
<#
if
jobGroup =
=
group
>
selected
</
#
if>
>${group.desc}
</option>
<option
value=
"${group}"
<#
if
jobGroup =
=
group
&&
false
>
selected
</
#
if>
>${group.desc}
</option>
</
#
list>
</
#
list>
</select>
</select>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-3"
>
<div
class=
"col-xs-3"
>
<div
class=
"input-group"
>
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务名
</span>
<span
class=
"input-group-addon"
>
名称
</span>
<input
type=
"text"
class=
"form-control"
id=
"jobName"
value=
"${jobName}"
autocomplete=
"on"
>
<select
class=
"form-control"
id=
"jobName"
paramVal=
"${jobName}"
>
<option
value=
""
>
请选择
</option>
</select>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-4"
>
<div
class=
"col-xs-4"
>
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
8a8d7a5c
...
@@ -6,10 +6,11 @@ $(function() {
...
@@ -6,10 +6,11 @@ $(function() {
"serverSide"
:
true
,
"serverSide"
:
true
,
"ajax"
:
{
"ajax"
:
{
url
:
base_url
+
"/jobinfo/pageList"
,
url
:
base_url
+
"/jobinfo/pageList"
,
type
:
"post"
,
data
:
function
(
d
)
{
data
:
function
(
d
)
{
var
obj
=
{};
var
obj
=
{};
obj
.
jobGroup
=
$
(
'#jobGroup'
).
val
();
obj
.
jobGroup
=
$
(
'#jobGroup'
).
val
();
obj
.
job
Name
=
$
(
'#jobName
'
).
val
();
obj
.
job
Desc
=
$
(
'#jobDesc
'
).
val
();
obj
.
start
=
d
.
start
;
obj
.
start
=
d
.
start
;
obj
.
length
=
d
.
length
;
obj
.
length
=
d
.
length
;
return
obj
;
return
obj
;
...
@@ -33,7 +34,7 @@ $(function() {
...
@@ -33,7 +34,7 @@ $(function() {
return
data
;
return
data
;
}
}
},
},
{
"data"
:
'jobName'
},
{
"data"
:
'jobName'
,
"visible"
:
false
},
{
"data"
:
'jobDesc'
,
"visible"
:
true
},
{
"data"
:
'jobDesc'
,
"visible"
:
true
},
{
"data"
:
'jobCron'
,
"visible"
:
true
},
{
"data"
:
'jobCron'
,
"visible"
:
true
},
{
"data"
:
'jobClass'
,
"visible"
:
false
},
{
"data"
:
'jobClass'
,
"visible"
:
false
},
...
@@ -98,7 +99,6 @@ $(function() {
...
@@ -98,7 +99,6 @@ $(function() {
' jobCron="'
+
row
.
jobCron
+
'" '
+
' jobCron="'
+
row
.
jobCron
+
'" '
+
' jobDesc="'
+
row
.
jobDesc
+
'" '
+
' jobDesc="'
+
row
.
jobDesc
+
'" '
+
' jobClass="'
+
row
.
jobClass
+
'" '
+
' jobClass="'
+
row
.
jobClass
+
'" '
+
' jobData="'
+
row
.
jobData
+
'" '
+
' executorAddress="'
+
row
.
executorAddress
+
'" '
+
' executorAddress="'
+
row
.
executorAddress
+
'" '
+
' executorHandler="'
+
row
.
executorHandler
+
'" '
+
' executorHandler="'
+
row
.
executorHandler
+
'" '
+
' executorParam="'
+
row
.
executorParam
+
'" '
+
' executorParam="'
+
row
.
executorParam
+
'" '
+
...
@@ -214,77 +214,55 @@ $(function() {
...
@@ -214,77 +214,55 @@ $(function() {
errorElement
:
'span'
,
errorElement
:
'span'
,
errorClass
:
'help-block'
,
errorClass
:
'help-block'
,
focusInvalid
:
true
,
focusInvalid
:
true
,
rules
:
{
rules
:
{
jobName
:
{
jobDesc
:
{
required
:
true
,
required
:
true
,
minlength
:
4
,
maxlength
:
50
maxlength
:
100
,
},
myValid01
:
true
jobCron
:
{
},
required
:
true
jobCron
:
{
required
:
true
,
maxlength
:
100
},
jobDesc
:
{
required
:
true
,
maxlength
:
200
},
},
executorAddress
:
{
executorAddress
:
{
required
:
true
,
required
:
true
maxlength
:
200
},
},
executorHandler
:
{
executorHandler
:
{
required
:
true
,
required
:
true
maxlength
:
200
},
author
:
{
required
:
true
,
maxlength
:
200
},
},
alarmEmail
:
{
alarmEmail
:
{
required
:
true
,
required
:
true
maxlength
:
200
},
},
alarmThreshold
:
{
alarmThreshold
:
{
required
:
true
,
required
:
true
,
digits
:
true
digits
:
true
}
},
author
:
{
required
:
true
}
},
},
messages
:
{
messages
:
{
jobName
:
{
required
:
"请输入“任务名”"
,
minlength
:
"“任务名”长度不应低于4位"
,
maxlength
:
"“任务名”长度不应超过100位"
},
jobCron
:
{
required
:
"请输入“Cron”."
,
maxlength
:
"“Cron”长度不应超过100位"
},
jobDesc
:
{
jobDesc
:
{
required
:
"请输入“任务描述”."
,
required
:
"请输入“名称”."
maxlength
:
"“任务描述”长度不应超过200位"
},
},
jobCron
:
{
required
:
"请输入“Cron”."
},
executorAddress
:
{
executorAddress
:
{
required
:
"请输入“执行器地址”."
,
required
:
"请输入“执行器地址”."
maxlength
:
"“执行器地址”长度不应超过200位"
},
},
executorHandler
:
{
executorHandler
:
{
required
:
"请输入“jobHandler”."
,
required
:
"请输入“JobHandler”."
maxlength
:
"“jobHandler”长度不应超过200位"
},
author
:
{
required
:
"请输入“负责人”."
,
maxlength
:
"“负责人”长度不应超过50位"
},
},
alarmEmail
:
{
alarmEmail
:
{
required
:
"请输入“报警邮件”."
,
required
:
"请输入“报警邮件”."
maxlength
:
"“报警邮件”长度不应超过200位"
},
},
alarmThreshold
:
{
alarmThreshold
:
{
required
:
"请输入“报警阈值”."
,
required
:
"请输入“报警阈值”."
,
digits
:
"阀值应该为整数."
digits
:
"阀值应该为整数."
},
author
:
{
required
:
"请输入“负责人”."
}
}
},
},
highlight
:
function
(
element
)
{
highlight
:
function
(
element
)
{
$
(
element
).
closest
(
'.form-group'
).
addClass
(
'has-error'
);
$
(
element
).
closest
(
'.form-group'
).
addClass
(
'has-error'
);
},
},
...
@@ -348,10 +326,13 @@ $(function() {
...
@@ -348,10 +326,13 @@ $(function() {
// 更新
// 更新
$
(
"#job_list"
).
on
(
'click'
,
'.update'
,
function
()
{
$
(
"#job_list"
).
on
(
'click'
,
'.update'
,
function
()
{
// base data
$
(
"#updateModal .form input[name='jobGroupTitle']"
).
find
(
"option[value='"
+
$
(
this
).
parent
(
'p'
).
attr
(
"jobGroup"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#updateModal .form input[name='jobGroup']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobGroup"
));
$
(
"#updateModal .form input[name='jobGroup']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobGroup"
));
$
(
"#updateModal .form input[name='jobName']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobName"
));
$
(
"#updateModal .form input[name='jobName']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobName"
));
$
(
"#updateModal .form input[name='jobCron']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobCron"
));
$
(
"#updateModal .form input[name='jobDesc']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobDesc"
));
$
(
"#updateModal .form input[name='jobDesc']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobDesc"
));
$
(
"#updateModal .form input[name='jobCron']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"jobCron"
));
$
(
"#updateModal .form input[name='executorAddress']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorAddress"
));
$
(
"#updateModal .form input[name='executorAddress']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorAddress"
));
$
(
"#updateModal .form input[name='executorHandler']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorHandler"
));
$
(
"#updateModal .form input[name='executorHandler']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorHandler"
));
$
(
"#updateModal .form input[name='executorParam']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorParam"
));
$
(
"#updateModal .form input[name='executorParam']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"executorParam"
));
...
@@ -359,7 +340,7 @@ $(function() {
...
@@ -359,7 +340,7 @@ $(function() {
$
(
"#updateModal .form input[name='alarmEmail']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"alarmEmail"
));
$
(
"#updateModal .form input[name='alarmEmail']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"alarmEmail"
));
$
(
"#updateModal .form input[name='alarmThreshold']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"alarmThreshold"
));
$
(
"#updateModal .form input[name='alarmThreshold']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"alarmThreshold"
));
$
(
"#updateModal .form input[name='glueSwitch']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"glueSwitch"
));
$
(
"#updateModal .form input[name='glueSwitch']"
).
val
(
$
(
this
).
parent
(
'p'
).
attr
(
"glueSwitch"
));
// GLUE check
// GLUE check
var
$glueSwitch
=
$
(
"#updateModal .form input[name='glueSwitch']"
);
var
$glueSwitch
=
$
(
"#updateModal .form input[name='glueSwitch']"
);
var
$executorHandler
=
$
(
"#updateModal .form input[name='executorHandler']"
);
var
$executorHandler
=
$
(
"#updateModal .form input[name='executorHandler']"
);
...
@@ -376,68 +357,58 @@ $(function() {
...
@@ -376,68 +357,58 @@ $(function() {
var
updateModalValidate
=
$
(
"#updateModal .form"
).
validate
({
var
updateModalValidate
=
$
(
"#updateModal .form"
).
validate
({
errorElement
:
'span'
,
errorElement
:
'span'
,
errorClass
:
'help-block'
,
errorClass
:
'help-block'
,
focusInvalid
:
true
,
focusInvalid
:
true
,
rules
:
{
jobCron
:
{
rules
:
{
required
:
true
,
jobDesc
:
{
maxlength
:
100
required
:
true
,
},
maxlength
:
50
jobDesc
:
{
},
required
:
true
,
jobCron
:
{
maxlength
:
200
required
:
true
},
},
executorAddress
:
{
executorAddress
:
{
required
:
true
,
required
:
true
maxlength
:
200
},
},
executorHandler
:
{
executorHandler
:
{
required
:
true
required
:
true
,
},
maxlength
:
200
alarmEmail
:
{
},
required
:
true
author
:
{
},
required
:
true
,
alarmThreshold
:
{
maxlength
:
200
required
:
true
,
},
digits
:
true
alarmEmail
:
{
},
required
:
true
,
author
:
{
maxlength
:
200
required
:
true
},
}
alarmThreshold
:
{
},
required
:
true
,
messages
:
{
digits
:
true
jobDesc
:
{
}
required
:
"请输入“名称”."
},
},
messages
:
{
jobCron
:
{
jobCron
:
{
required
:
"请输入“Cron”."
required
:
"请输入“Cron”."
,
},
maxlength
:
"“Cron”长度不应超过100位"
executorAddress
:
{
},
required
:
"请输入“执行器地址”."
jobDesc
:
{
},
required
:
"请输入“任务描述”."
,
executorHandler
:
{
maxlength
:
"“任务描述”长度不应超过200位"
required
:
"请输入“JobHandler”."
},
},
executorAddress
:
{
alarmEmail
:
{
required
:
"请输入“执行器地址”."
,
required
:
"请输入“报警邮件”."
maxlength
:
"“执行器地址”长度不应超过200位"
},
},
alarmThreshold
:
{
executorHandler
:
{
required
:
"请输入“报警阈值”."
,
required
:
"请输入“jobHandler”."
,
digits
:
"阀值应该为整数."
maxlength
:
"“jobHandler”长度不应超过200位"
},
},
author
:
{
author
:
{
required
:
"请输入“负责人”."
required
:
"请输入“负责人”."
,
}
maxlength
:
"“负责人”长度不应超过50位"
},
},
highlight
:
function
(
element
)
{
alarmEmail
:
{
required
:
"请输入“报警邮件”."
,
maxlength
:
"“报警邮件”长度不应超过200位"
},
alarmThreshold
:
{
required
:
"请输入“报警阈值”."
,
digits
:
"阀值应该为整数."
}
},
highlight
:
function
(
element
)
{
$
(
element
).
closest
(
'.form-group'
).
addClass
(
'has-error'
);
$
(
element
).
closest
(
'.form-group'
).
addClass
(
'has-error'
);
},
},
success
:
function
(
label
)
{
success
:
function
(
label
)
{
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
8a8d7a5c
$
(
function
()
{
$
(
function
()
{
// 分组列表选中, 任务列表初始化和选中
var
ifParam
=
true
;
$
(
"#jobGroup"
).
on
(
"change"
,
function
()
{
var
jobGroup
=
$
(
this
).
children
(
'option:selected'
).
val
();
$
.
ajax
({
type
:
'POST'
,
async
:
false
,
// async, avoid js invoke pagelist before jobName data init
url
:
base_url
+
'/joblog/getJobsByGroup'
,
data
:
{
"jobGroup"
:
jobGroup
},
dataType
:
"json"
,
success
:
function
(
data
){
if
(
data
.
code
==
200
)
{
$
(
"#jobName"
).
html
(
'<option value="" >请选择</option>'
);
$
.
each
(
data
.
content
,
function
(
n
,
value
)
{
$
(
"#jobName"
).
append
(
'<option value="'
+
value
.
jobName
+
'" >'
+
value
.
jobDesc
+
'</option>'
);
});
if
(
$
(
"#jobName"
).
attr
(
"paramVal"
)){
$
(
"#jobName"
).
find
(
"option[value='"
+
$
(
"#jobName"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobName"
).
attr
(
"paramVal"
)
}
}
else
{
ComAlertTec
.
show
(
data
.
msg
);
}
},
});
});
if
(
$
(
"#jobGroup"
).
attr
(
"paramVal"
)){
$
(
"#jobGroup"
).
find
(
"option[value='"
+
$
(
"#jobGroup"
).
attr
(
"paramVal"
)
+
"']"
).
attr
(
"selected"
,
true
);
$
(
"#jobGroup"
).
change
();
$
(
"#jobGroup"
).
attr
(
""
)
}
// 过滤时间
// 过滤时间
$
(
'#filterTime'
).
daterangepicker
({
$
(
'#filterTime'
).
daterangepicker
({
timePicker
:
true
,
//是否显示小时和分钟
timePicker
:
true
,
//是否显示小时和分钟
...
...
xxl-job-executor-example/src/main/resources/log4j.xml
浏览文件 @
8a8d7a5c
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
</appender>
</appender>
<appender
name=
"FILE"
class=
"org.apache.log4j.DailyRollingFileAppender"
>
<appender
name=
"FILE"
class=
"org.apache.log4j.DailyRollingFileAppender"
>
<param
name=
"file"
value=
"/
logs/xxl-job-client-demo
.log"
/>
<param
name=
"file"
value=
"/
data/applogs/xxl-job/xxl-job-executor-example
.log"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<layout
class=
"org.apache.log4j.PatternLayout"
>
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
</appender>
</appender>
<appender
name=
"xxl-job"
class=
"com.xxl.job.core.log.XxlJobFileAppender"
>
<appender
name=
"xxl-job"
class=
"com.xxl.job.core.log.XxlJobFileAppender"
>
<param
name=
"filePath"
value=
"/
logs/xxl-job
/"
/>
<param
name=
"filePath"
value=
"/
data/applogs/xxl-job/jobhandler
/"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"append"
value=
"true"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<param
name=
"encoding"
value=
"UTF-8"
/>
<layout
class=
"org.apache.log4j.PatternLayout"
>
<layout
class=
"org.apache.log4j.PatternLayout"
>
...
...
xxl-job-executor-example/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml
浏览文件 @
8a8d7a5c
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
<select
id=
"load"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
<select
id=
"load"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobInfo"
>
SELECT
<include
refid=
"Base_Column_List"
/>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM
xxl_job_qrtz_trigger_info
AS t
FROM
XXL_JOB_QRTZ_TRIGGER_INFO
AS t
WHERE t.job_group = #{jobGroup}
WHERE t.job_group = #{jobGroup}
AND t.job_name = #{jobName}
AND t.job_name = #{jobName}
</select>
</select>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论