Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
74e4e58c
提交
74e4e58c
authored
5月 19, 2016
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
GLUE编辑器以及后端交互更新
上级
5c1bba33
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
395 行增加
和
69 行删除
+395
-69
JobCodeController.java
...c/main/java/com/xxl/job/controller/JobCodeController.java
+49
-3
JobInfoController.java
...c/main/java/com/xxl/job/controller/JobInfoController.java
+8
-0
XxlJobLogGlue.java
...n/src/main/java/com/xxl/job/core/model/XxlJobLogGlue.java
+69
-0
IXxlJobLogDao.java
...ob-admin/src/main/java/com/xxl/job/dao/IXxlJobLogDao.java
+2
-0
IXxlJobLogGlueDao.java
...dmin/src/main/java/com/xxl/job/dao/IXxlJobLogGlueDao.java
+21
-0
XxlJobLogDaoImpl.java
.../src/main/java/com/xxl/job/dao/impl/XxlJobLogDaoImpl.java
+8
-0
XxlJobLogGlueDaoImpl.java
.../main/java/com/xxl/job/dao/impl/XxlJobLogGlueDaoImpl.java
+54
-0
XxlJobLogGlueMapper.xml
...src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
+79
-0
XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+7
-0
index.ftl
...-admin/src/main/webapp/WEB-INF/template/jobcode/index.ftl
+75
-55
jobcode.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobcode.index.1.js
+22
-10
jobinfo.index.1.js
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
+1
-1
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/controller/JobCodeController.java
浏览文件 @
74e4e58c
package
com
.
xxl
.
job
.
controller
;
package
com
.
xxl
.
job
.
controller
;
import
java
x.servlet.http.HttpServletReque
st
;
import
java
.util.Li
st
;
import
javax.annotation.Resource
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -9,6 +12,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
...
@@ -9,6 +12,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.ReturnT
;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.model.XxlJobLogGlue
;
import
com.xxl.job.dao.IXxlJobInfoDao
;
import
com.xxl.job.dao.IXxlJobLogGlueDao
;
/**
/**
* job code controller
* job code controller
...
@@ -17,15 +23,55 @@ import com.xxl.job.core.model.XxlJobInfo;
...
@@ -17,15 +23,55 @@ import com.xxl.job.core.model.XxlJobInfo;
@Controller
@Controller
@RequestMapping
(
"/jobcode"
)
@RequestMapping
(
"/jobcode"
)
public
class
JobCodeController
{
public
class
JobCodeController
{
@Resource
private
IXxlJobInfoDao
xxlJobInfoDao
;
@Resource
private
IXxlJobLogGlueDao
xxlJobLogGlueDao
;
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
,
HttpServletRequest
request
)
{
public
String
index
(
Model
model
,
String
jobGroup
,
String
jobName
)
{
XxlJobInfo
jobInfo
=
xxlJobInfoDao
.
load
(
jobGroup
,
jobName
);
List
<
XxlJobLogGlue
>
jobLogGlues
=
xxlJobLogGlueDao
.
selectList
(
jobGroup
,
jobName
);
model
.
addAttribute
(
"jobInfo"
,
jobInfo
);
model
.
addAttribute
(
"jobLogGlues"
,
jobLogGlues
);
return
"jobcode/index"
;
return
"jobcode/index"
;
}
}
@RequestMapping
(
"/save"
)
@RequestMapping
(
"/save"
)
@ResponseBody
@ResponseBody
public
ReturnT
<
String
>
save
(
Model
model
,
XxlJobInfo
jobInfo
,
HttpServletRequest
request
)
{
public
ReturnT
<
String
>
save
(
Model
model
,
String
jobGroup
,
String
jobName
,
String
glueSource
,
String
glueRemark
)
{
// valid
if
(
glueRemark
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
"请输入备注"
);
}
if
(
glueRemark
.
length
()<
6
||
glueRemark
.
length
()>
100
)
{
return
new
ReturnT
<
String
>(
500
,
"备注长度应该在6至100之间"
);
}
XxlJobInfo
jobInfoOld
=
xxlJobInfoDao
.
load
(
jobGroup
,
jobName
);
if
(
jobInfoOld
==
null
)
{
return
new
ReturnT
<
String
>(
500
,
"任务不存在"
);
}
// log old code
XxlJobLogGlue
xxlJobLogGlue
=
new
XxlJobLogGlue
();
xxlJobLogGlue
.
setJobGroup
(
jobInfoOld
.
getJobGroup
());
xxlJobLogGlue
.
setJobName
(
jobInfoOld
.
getJobName
());
xxlJobLogGlue
.
setGlueSource
(
jobInfoOld
.
getGlueSource
());
xxlJobLogGlue
.
setGlueRemark
(
jobInfoOld
.
getGlueRemark
());
// init new code
jobInfoOld
.
setGlueSource
(
glueSource
);
jobInfoOld
.
setGlueRemark
(
glueRemark
);
// update new code ,and log old code
xxlJobInfoDao
.
update
(
jobInfoOld
);
if
(
StringUtils
.
isNotBlank
(
xxlJobLogGlue
.
getGlueSource
())
&&
StringUtils
.
isNotBlank
(
xxlJobLogGlue
.
getGlueRemark
()))
{
xxlJobLogGlueDao
.
save
(
xxlJobLogGlue
);
// remove code backup more than 30
xxlJobLogGlueDao
.
removeOld
(
xxlJobLogGlue
.
getJobGroup
(),
xxlJobLogGlue
.
getJobName
(),
3
);
}
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
}
...
...
xxl-job-admin/src/main/java/com/xxl/job/controller/JobInfoController.java
浏览文件 @
74e4e58c
...
@@ -22,6 +22,8 @@ import com.xxl.job.core.model.ReturnT;
...
@@ -22,6 +22,8 @@ import com.xxl.job.core.model.ReturnT;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.model.XxlJobInfo
;
import
com.xxl.job.core.util.DynamicSchedulerUtil
;
import
com.xxl.job.core.util.DynamicSchedulerUtil
;
import
com.xxl.job.dao.IXxlJobInfoDao
;
import
com.xxl.job.dao.IXxlJobInfoDao
;
import
com.xxl.job.dao.IXxlJobLogDao
;
import
com.xxl.job.dao.IXxlJobLogGlueDao
;
import
com.xxl.job.service.job.RemoteHttpJobBean
;
import
com.xxl.job.service.job.RemoteHttpJobBean
;
/**
/**
...
@@ -34,6 +36,10 @@ public class JobInfoController {
...
@@ -34,6 +36,10 @@ public class JobInfoController {
@Resource
@Resource
private
IXxlJobInfoDao
xxlJobInfoDao
;
private
IXxlJobInfoDao
xxlJobInfoDao
;
@Resource
public
IXxlJobLogDao
xxlJobLogDao
;
@Resource
private
IXxlJobLogGlueDao
xxlJobLogGlueDao
;
@RequestMapping
@RequestMapping
public
String
index
(
Model
model
)
{
public
String
index
(
Model
model
)
{
...
@@ -216,6 +222,8 @@ public class JobInfoController {
...
@@ -216,6 +222,8 @@ public class JobInfoController {
try
{
try
{
DynamicSchedulerUtil
.
removeJob
(
jobName
,
jobGroup
);
DynamicSchedulerUtil
.
removeJob
(
jobName
,
jobGroup
);
xxlJobInfoDao
.
delete
(
jobGroup
,
jobName
);
xxlJobInfoDao
.
delete
(
jobGroup
,
jobName
);
xxlJobLogDao
.
delete
(
jobGroup
,
jobName
);
xxlJobLogGlueDao
.
delete
(
jobGroup
,
jobName
);
return
ReturnT
.
SUCCESS
;
return
ReturnT
.
SUCCESS
;
}
catch
(
SchedulerException
e
)
{
}
catch
(
SchedulerException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
...
...
xxl-job-admin/src/main/java/com/xxl/job/core/model/XxlJobLogGlue.java
0 → 100644
浏览文件 @
74e4e58c
package
com
.
xxl
.
job
.
core
.
model
;
/**
* xxl-job log for glue, used to track job code process
* @author xuxueli 2016-5-19 17:57:46
*/
public
class
XxlJobLogGlue
{
private
int
id
;
private
String
jobGroup
;
private
String
jobName
;
private
String
glueSource
;
private
String
glueRemark
;
private
String
addTime
;
private
String
updateTime
;
public
int
getId
()
{
return
id
;
}
public
void
setId
(
int
id
)
{
this
.
id
=
id
;
}
public
String
getJobGroup
()
{
return
jobGroup
;
}
public
void
setJobGroup
(
String
jobGroup
)
{
this
.
jobGroup
=
jobGroup
;
}
public
String
getJobName
()
{
return
jobName
;
}
public
void
setJobName
(
String
jobName
)
{
this
.
jobName
=
jobName
;
}
public
String
getGlueSource
()
{
return
glueSource
;
}
public
void
setGlueSource
(
String
glueSource
)
{
this
.
glueSource
=
glueSource
;
}
public
String
getGlueRemark
()
{
return
glueRemark
;
}
public
void
setGlueRemark
(
String
glueRemark
)
{
this
.
glueRemark
=
glueRemark
;
}
public
String
getAddTime
()
{
return
addTime
;
}
public
void
setAddTime
(
String
addTime
)
{
this
.
addTime
=
addTime
;
}
public
String
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
String
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
@Override
public
String
toString
()
{
return
"XxlJobLogGlue [id="
+
id
+
", jobGroup="
+
jobGroup
+
", jobName="
+
jobName
+
", glueSource="
+
glueSource
+
", glueRemark="
+
glueRemark
+
", addTime="
+
addTime
+
", updateTime="
+
updateTime
+
"]"
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/dao/IXxlJobLogDao.java
浏览文件 @
74e4e58c
...
@@ -21,4 +21,6 @@ public interface IXxlJobLogDao {
...
@@ -21,4 +21,6 @@ public interface IXxlJobLogDao {
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateTriggerInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
int
updateHandleInfo
(
XxlJobLog
xxlJobLog
);
public
int
delete
(
String
jobGroup
,
String
jobName
);
}
}
xxl-job-admin/src/main/java/com/xxl/job/dao/IXxlJobLogGlueDao.java
0 → 100644
浏览文件 @
74e4e58c
package
com
.
xxl
.
job
.
dao
;
import
java.util.List
;
import
com.xxl.job.core.model.XxlJobLogGlue
;
/**
* job log for glue
* @author xuxueli 2016-5-19 18:04:56
*/
public
interface
IXxlJobLogGlueDao
{
public
int
save
(
XxlJobLogGlue
xxlJobLogGlue
);
public
List
<
XxlJobLogGlue
>
selectList
(
String
jobGroup
,
String
jobName
);
public
int
removeOld
(
String
jobGroup
,
String
jobName
,
int
limit
);
public
int
delete
(
String
jobGroup
,
String
jobName
);
}
xxl-job-admin/src/main/java/com/xxl/job/dao/impl/XxlJobLogDaoImpl.java
浏览文件 @
74e4e58c
...
@@ -84,5 +84,13 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
...
@@ -84,5 +84,13 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
}
}
return
sqlSessionTemplate
.
update
(
"XxlJobLogMapper.updateHandleInfo"
,
xxlJobLog
);
return
sqlSessionTemplate
.
update
(
"XxlJobLogMapper.updateHandleInfo"
,
xxlJobLog
);
}
}
@Override
public
int
delete
(
String
jobGroup
,
String
jobName
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
delete
(
"XxlJobLogMapper.delete"
,
params
);
}
}
}
xxl-job-admin/src/main/java/com/xxl/job/dao/impl/XxlJobLogGlueDaoImpl.java
0 → 100644
浏览文件 @
74e4e58c
package
com
.
xxl
.
job
.
dao
.
impl
;
import
java.util.HashMap
;
import
java.util.List
;
import
javax.annotation.Resource
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.springframework.stereotype.Repository
;
import
com.xxl.job.core.model.XxlJobLogGlue
;
import
com.xxl.job.dao.IXxlJobLogGlueDao
;
/**
* job log for glue
* @author xuxueli 2016-5-19 18:17:52
*/
@Repository
public
class
XxlJobLogGlueDaoImpl
implements
IXxlJobLogGlueDao
{
@Resource
public
SqlSessionTemplate
sqlSessionTemplate
;
@Override
public
int
save
(
XxlJobLogGlue
xxlJobLogGlue
)
{
return
sqlSessionTemplate
.
insert
(
"XxlJobLogGlueMapper.save"
,
xxlJobLogGlue
);
}
@Override
public
List
<
XxlJobLogGlue
>
selectList
(
String
jobGroup
,
String
jobName
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
selectList
(
"XxlJobLogGlueMapper.selectList"
,
params
);
}
@Override
public
int
removeOld
(
String
jobGroup
,
String
jobName
,
int
limit
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
params
.
put
(
"limit"
,
limit
);
return
sqlSessionTemplate
.
delete
(
"XxlJobLogGlueMapper.removeOld"
,
params
);
}
@Override
public
int
delete
(
String
jobGroup
,
String
jobName
)
{
HashMap
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobName"
,
jobName
);
return
sqlSessionTemplate
.
delete
(
"XxlJobLogGlueMapper.delete"
,
params
);
}
}
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml
0 → 100644
浏览文件 @
74e4e58c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"XxlJobLogGlueMapper"
>
<resultMap
id=
"XxlJobLogGlue"
type=
"com.xxl.job.core.model.XxlJobLogGlue"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"job_group"
property=
"jobGroup"
/>
<result
column=
"job_name"
property=
"jobName"
/>
<result
column=
"glue_source"
property=
"glueSource"
/>
<result
column=
"glue_remark"
property=
"glueRemark"
/>
<result
column=
"add_time"
property=
"addTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
t.id,
t.job_group,
t.job_name,
t.glue_source,
t.glue_remark,
t.add_time,
t.update_time
</sql>
<insert
id=
"save"
parameterType=
"com.xxl.job.core.model.XxlJobLogGlue"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
INSERT INTO `xxl_job_qrtz_trigger_logglue` (
`job_group`,
`job_name`,
`glue_source`,
`glue_remark`,
`add_time`,
`update_time`
) VALUES (
#{jobGroup},
#{jobName},
#{glueSource},
#{glueRemark},
now(),
now()
);
<selectKey
resultType=
"java.lang.Integer"
order=
"AFTER"
keyProperty=
"id"
>
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
<select
id=
"selectList"
parameterType=
"java.util.HashMap"
resultMap=
"XxlJobLogGlue"
>
SELECT
<include
refid=
"Base_Column_List"
/>
FROM xxl_job_qrtz_trigger_logglue AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup != null and jobGroup != ''"
>
AND t.job_group = #{jobGroup}
</if>
<if
test=
"jobName != null and jobName != ''"
>
AND t.job_name = #{jobName}
</if>
</trim>
ORDER BY id DESC
</select>
<delete
id=
"removeOld"
parameterType=
"java.util.HashMap"
>
DELETE FROM xxl_job_qrtz_trigger_logglue
WHERE id NOT in(
SELECT id FROM(
SELECT id FROM xxl_job_qrtz_trigger_logglue
WHERE `job_group` = #{jobGroup} and `job_name` = #{jobName}
ORDER BY update_time desc
LIMIT 0, #{limit}
) t1
)
</delete>
<delete
id=
"delete"
parameterType=
"java.util.HashMap"
>
DELETE FROM xxl_job_qrtz_trigger_logglue
WHERE job_group = #{jobGroup} and job_name = #{jobName}
</delete>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
74e4e58c
...
@@ -130,4 +130,10 @@
...
@@ -130,4 +130,10 @@
WHERE `id`= #{id}
WHERE `id`= #{id}
</update>
</update>
<delete
id=
"delete"
>
delete from `xxl_job_qrtz_trigger_log`
WHERE job_group = #{jobGroup}
AND job_name = #{jobName}
</delete>
</mapper>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/webapp/WEB-INF/template/jobcode/index.ftl
浏览文件 @
74e4e58c
...
@@ -16,59 +16,80 @@
...
@@ -16,59 +16,80 @@
</head>
</head>
<body
class=
" layout-top-nav"
>
<body
class=
" layout-top-nav"
>
<div
class=
"wrapper"
>
<
#
if
!
jobInfo
?
exists
>
<div
class=
"wrapper"
>
<div
class=
"content-wrapper"
>
<div
class=
"content-wrapper"
>
<!-- Content Header (Page header) -->
<section
class=
"content-header"
>
<section
class=
"content-header"
>
<h1>
抱歉,任务不存在.
</small></h1>
<h1>
任务调度中心
<small>
任务CODE管理
</small></h1>
</section>
</section>
</div>
</div>
<
#
else
>
<div
class=
"wrapper"
>
<!-- Main content -->
<div
class=
"content-wrapper"
>
<section
class=
"content"
>
<!-- Content Header (Page header) -->
<div
class=
"row"
>
<section
class=
"content-header"
>
<div
class=
"col-xs-4"
>
<h1>
任务调度中心
<small>
任务GLUE管理
</small></h1>
<div
class=
"input-group margin"
>
</section>
<div
class=
"input-group-btn"
>
<!-- Main content -->
<button
type=
"button"
class=
"btn btn-info"
>
版本回溯
</button>
<section
class=
"content"
>
</div>
<div
class=
"row"
>
<select
class=
"form-control"
id=
"jobGroup"
>
<div
class=
"col-xs-4"
>
<option
value=
"999"
>
逻辑调整版本C
</option>
<div
class=
"input-group margin"
>
<option
value=
"999"
>
逻辑调整版本B
</option>
<div
class=
"input-group-btn"
>
<option
value=
"999"
>
逻辑调整版本A
</option>
<button
type=
"button"
class=
"btn btn-info"
>
版本回溯
</button>
<option
value=
"999"
>
代码初始化
</option>
</div>
</select>
<select
class=
"form-control"
id=
"glue_version"
>
</div>
<option
value=
"glue_now"
>
${jobInfo.glueRemark}【线上】
</option>
</div>
<
#
if
jobLogGlues
?
exists
&&
jobLogGlues
?
size
gt
0
>
<div
class=
"col-xs-4"
>
<
#
list
jobLogGlues
as
glue
>
<div
class=
"input-group margin"
>
<option
value=
"glue_log_${glue.id}"
>
${glue.glueRemark}
</option>
<div
class=
"input-group-btn"
>
</
#
list>
<button
type=
"button"
class=
"btn btn-info"
>
备注
</button>
</
#
if>
</div>
</select>
<input
type=
"text"
class=
"form-control"
id=
"codeRemark"
value=
"${jobName}"
autocomplete=
"on"
>
</div>
<textarea
id=
"glue_now"
style=
"display:none;"
>
${jobInfo.glueSource}
</textarea>
</div>
<
#
if
jobLogGlues
?
exists
&&
jobLogGlues
?
size
gt
0
>
<div
class=
"col-xs-2"
>
<
#
list
jobLogGlues
as
glue
>
<div
class=
"input-group margin"
>
<textarea
id=
"glue_log_${glue.id}"
style=
"display:none;"
>
${glue.glueSource}
</textarea>
<div
class=
"input-group-btn"
>
</
#
list>
<button
type=
"button"
class=
"btn btn-primary"
id=
"save"
>
保存
</button>
</
#
if>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"col-xs-4"
>
<div
class=
"input-group margin"
>
<div
class=
"row"
>
<div
class=
"input-group-btn"
>
<div
class=
"col-xs-12"
>
<button
type=
"button"
class=
"btn btn-info"
>
备注
</button>
<div
class=
"box callout callout-info"
>
</div>
<textarea
id=
"codeSource"
></textarea>
<input
type=
"text"
class=
"form-control"
id=
"glueRemark"
value=
"${jobName}"
autocomplete=
"on"
>
</div>
</div>
<div
class=
"col-xs-2"
>
<div
class=
"input-group margin"
>
<div
class=
"input-group-btn"
>
<button
type=
"button"
class=
"btn btn-primary"
id=
"save"
>
保存
</button>
</div>
<div
class=
"input-group-btn"
>
<button
type=
"button"
class=
"btn btn-default"
id=
"demoCode_btn"
>
DEMO
</button>
</div>
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-xs-12"
>
<div
class=
"box callout callout-info"
>
<textarea
id=
"glueSource"
></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</section>
</div>
<!-- footer -->
<
@
netCommon
.
commonFooter
/>
</div>
</div>
<!-- footer -->
<
@
netCommon
.
commonFooter
/>
</div>
<textarea
id=
"demoCode"
style=
"display:none;"
>
<textarea
id=
"demoCode"
style=
"display:none;"
>
package com.xxl.job.service.handler;
package com.xxl.job.service.handler;
...
@@ -83,11 +104,7 @@ public class DemoJobHandler extends IJobHandler {
...
@@ -83,11 +104,7 @@ public class DemoJobHandler extends IJobHandler {
@Override
@Override
public JobHandleStatus handle(String... params) throws Exception {
public JobHandleStatus handle(String... params) throws Exception {
logger.info(" ... params:" + params);
logger.info("demo run success...");
for (int i = 0; i
<
5
;
i
++)
{
TimeUnit
.
SECONDS
.
sleep
(
1
);
logger
.
info
("
handler
run:
{}",
i
);
}
return JobHandleStatus.SUCCESS;
return JobHandleStatus.SUCCESS;
}
}
}
}
...
@@ -100,8 +117,11 @@ public class DemoJobHandler extends IJobHandler {
...
@@ -100,8 +117,11 @@ public class DemoJobHandler extends IJobHandler {
<script
src=
"${request.contextPath}/static/plugins/codemirror/addon/hint/show-hint.js"
></script>
<script
src=
"${request.contextPath}/static/plugins/codemirror/addon/hint/show-hint.js"
></script>
<script
src=
"${request.contextPath}/static/plugins/codemirror/addon/hint/anyword-hint.js"
></script>
<script
src=
"${request.contextPath}/static/plugins/codemirror/addon/hint/anyword-hint.js"
></script>
<script>
<script>
var
id
=
$
{
id
!-
1
};
var
jobGroup
=
'${jobInfo.jobGroup}'
;
var
jobName
=
'${jobInfo.jobName}'
;
</script>
</script>
<script
src=
"${request.contextPath}/static/js/jobcode.index.1.js"
></script>
<script
src=
"${request.contextPath}/static/js/jobcode.index.1.js"
></script>
</
#
if>
</body>
</body>
</html>
</html>
xxl-job-admin/src/main/webapp/static/js/jobcode.index.1.js
浏览文件 @
74e4e58c
$
(
function
()
{
$
(
function
()
{
// init code editor
// init code editor
var
codeEditor
=
CodeMirror
.
fromTextArea
(
document
.
getElementById
(
"
cod
eSource"
),
{
var
codeEditor
=
CodeMirror
.
fromTextArea
(
document
.
getElementById
(
"
glu
eSource"
),
{
mode
:
"text/x-java"
,
mode
:
"text/x-java"
,
lineNumbers
:
true
,
lineNumbers
:
true
,
matchBrackets
:
true
matchBrackets
:
true
});
});
codeEditor
.
setValue
(
$
(
"#demoCode"
).
val
()
);
codeEditor
.
setValue
(
$
(
"#glue_now"
).
val
()
);
// code change
$
(
"#glue_version"
).
change
(
function
(){
var
temp
=
$
(
"#"
+
$
(
this
).
val
()
).
val
();
codeEditor
.
setValue
(
temp
);
});
// democode
$
(
"#demoCode_btn"
).
click
(
function
()
{
codeEditor
.
setValue
(
$
(
"#demoCode"
).
val
()
);
});
// editor height
// editor height
var
height
=
Math
.
max
(
document
.
documentElement
.
clientHeight
,
document
.
body
.
offsetHeight
);
var
height
=
Math
.
max
(
document
.
documentElement
.
clientHeight
,
document
.
body
.
offsetHeight
);
...
@@ -14,14 +25,14 @@ $(function() {
...
@@ -14,14 +25,14 @@ $(function() {
// code source save
// code source save
$
(
"#save"
).
click
(
function
()
{
$
(
"#save"
).
click
(
function
()
{
var
cod
eSource
=
codeEditor
.
getValue
();
var
glu
eSource
=
codeEditor
.
getValue
();
var
codeRemark
=
$
(
"#cod
eRemark"
).
val
();
var
glueRemark
=
$
(
"#glu
eRemark"
).
val
();
if
(
!
cod
eRemark
)
{
if
(
!
glu
eRemark
)
{
ComAlert
.
show
(
2
,
"请输入备注"
);
ComAlert
.
show
(
2
,
"请输入备注"
);
return
;
return
;
}
}
if
(
codeRemark
.
length
<
6
||
cod
eRemark
.
length
>
100
)
{
if
(
glueRemark
.
length
<
6
||
glu
eRemark
.
length
>
100
)
{
ComAlert
.
show
(
2
,
"备注长度应该在6至100之间"
);
ComAlert
.
show
(
2
,
"备注长度应该在6至100之间"
);
return
;
return
;
}
}
...
@@ -31,9 +42,10 @@ $(function() {
...
@@ -31,9 +42,10 @@ $(function() {
type
:
'POST'
,
type
:
'POST'
,
url
:
base_url
+
'/jobcode/save'
,
url
:
base_url
+
'/jobcode/save'
,
data
:
{
data
:
{
'jobInfo.id'
:
id
,
'jobGroup'
:
jobGroup
,
'jobInfo.codeSource'
:
codeSource
,
'jobName'
:
jobName
,
'jobInfo.codeRemark'
:
codeRemark
'glueSource'
:
glueSource
,
'glueRemark'
:
glueRemark
},
},
dataType
:
"json"
,
dataType
:
"json"
,
success
:
function
(
data
){
success
:
function
(
data
){
...
@@ -43,7 +55,7 @@ $(function() {
...
@@ -43,7 +55,7 @@ $(function() {
window
.
location
.
reload
();
window
.
location
.
reload
();
});
});
}
else
{
}
else
{
ComAlert
.
alert
(
data
.
msg
);
ComAlert
.
show
(
2
,
data
.
msg
);
}
}
}
}
});
});
...
...
xxl-job-admin/src/main/webapp/static/js/jobinfo.index.1.js
浏览文件 @
74e4e58c
...
@@ -92,7 +92,7 @@ $(function() {
...
@@ -92,7 +92,7 @@ $(function() {
// log url
// log url
var
codeHtml
=
""
;
var
codeHtml
=
""
;
if
(
row
.
glueSwitch
!=
0
){
if
(
row
.
glueSwitch
!=
0
){
var
codeUrl
=
base_url
+
'/jobcode?
id='
+
row
.
id
;
var
codeUrl
=
base_url
+
'/jobcode?
jobGroup='
+
row
.
jobGroup
+
'&jobName='
+
row
.
jobName
;
codeHtml
=
'<button class="btn btn-warning btn-xs" type="button" onclick="javascript:window.open(
\'
'
+
codeUrl
+
'
\'
)" >GLUE</button> '
codeHtml
=
'<button class="btn btn-warning btn-xs" type="button" onclick="javascript:window.open(
\'
'
+
codeUrl
+
'
\'
)" >GLUE</button> '
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论