Jelajahi Sumber

交互优化

xueli.xue 9 tahun lalu
induk
melakukan
900c7e3bb1

+ 0 - 158
doc/XXL-JOB1.3.x用户手册.docx

@@ -1,158 +0,0 @@
-XXL-JOB 1.3 用户手册
-
-1. 简介	2
-1.1 背景	2
-1.1 发展	2
-1.2 概述	2
-1.2 特点	2
-1.3 下载	3
-1.4 环境	3
-2. 快速入门	4
-2.1 初始化"调度数据库"	4
-2.2 编译源码	5
-2.3 部署"调度中心"	5
-2.4 部署"执行器"	6
-2.5 开发第一个任务"Hello World"	6
-3. 系统详解	6
-3.1 源码目录介绍	6
-3.1 "调度数据库"详解	6
-3.2 "调度中心"详解	6
-3.3 "执行器"详解	6
-4. 任务详解	6
-4.1 BEAN模式任务	6
-4.2 GLUE任务任务	6
-5. 任务管理	6
-5.1 编辑任务信息	6
-5.2 编辑GLUE代码	6
-5.3 恢复/暂停	6
-5.4 手动触发一次调度	7
-5.5 查看日志	7
-5.6 删除任务	7
-6. 设计原理	7
-6.1 总体架构	7
-6.2 调度原理	7
-6.3 通讯原理	7
-6.4 执行器原理	7
-7. 其他	7
-7.1 接入登记	7
-7.2 报告问题	7
-
-
-
-1. 简介
-  1.1 背景
-  作业调度系统我使用过相当一部分,比如Java Timer、linux corntab和quartz,但是都遇到一些共同的问题,开发成本高,维护复杂等等。在我进入大众点评之后,我试用过内部调度系统,功能完善,但是开发和部署流程略复杂。
-  我钟爱KISS原则,因此我萌发了打造XXL-JOB的想法,期望是能够创造一种全新的调度体验。
-  1.2 发展
-  我于2015-11-28在github上创建XXL-JOB项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计......
-  于2016-12-05日XXL-JOB终于release了第一个大版本V1.0, 随后我将之发布到OSCHINA,XXL-JOB在OSCHINA上获得了@红薯的推荐,同期分别达到了OSCHINA的"热门动弹"排行第一和git.oschina的月热度排行第一,在此特别感谢红薯,感谢大家的关注和支持。
-  于2015-12月中旬我将XXL-JOB发表到我司内部知识库,得到内部同事认可。于2016-01-21开始我司展开XXL-JOB的内部接入和定制工作。
-  我司大众点评已接入XXL-JOB,内部别名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入应用推荐升级最新版本V1.3)。自2016-01-21接入至2016-05-20为止,该系统已调度40000余次,表现优异。
-  至今,XXL-JOB已接入多家公司的线上产品线,场景如电商业务,O2O业务和大数据作业等等,欢迎大家使用,XXL-JOB也将拥抱变化,持续发展。
-  1.3 概述
-  XXL-JOB是一款简单高效的分布式任务调度平台,支持可视化且实时动态的管理Trigger和Job。
-  1.4 特点
-  简单:支持通过Web在线开发Job并配置,流程简洁;
-  高效:任务动态部署和配置,节省打包和部署消耗,提高开发效率;
-  分布式:得益于Quartz的集群支持,XXL-JOB调度中心天生支持HA,避免单点故障;
-  实时Trigger:支持可视化的管理Trigger,动态管理Triggrer;
-  实时Job:支持可视化的管理Job,动态管理Job,V1.3支持在线开发业务代码;
-  1.5 下载
-  Github地址:https://github.com/xuxueli/xxl-job
-  Git@OSC地址:http://git.oschina.net/xuxueli0323/xxl-job
-  (我将会在两个git仓库同步发布最新代码)
-  
-  
-  (图1.3:github下载链接位置)
-  源码下载请前往github自行下载,下载位置见上图1.3;
-  1.6 环境
-  Maven3
-  JDK1.7
-  Tomcat7
-  Mysql5.5
-  
-  快速入门
-  2.1 初始化"调度数据库"
-                                        
-             (图2.1A:数据库建表SQL文件位置截图,)
-                                        
-  请下载项目源码并解压,然后前往"图2.1A"所示目录,获取SQL脚本并执行,脚本文件位置:"源码解压根目录"\xxl-job\doc\db\tables_xxl_job.sql
-  
-  
-                                        
-                    (图2.1B:调度数据库表一览)
-                                        
-  正常情况下,应该生成(图2.1B)中所示14张表。
-  
-  
-  
-  
-  
-  
-  
-  
-  
-
-  2.2 编译源码
-                                        
-                 (图2.2:项目源码导入Eclipse截图)
-                                        
-  解压源码,按照maven格式将源码导入IDE(文档以Eclipse为例),更新项目pom依赖,maven编译项目。
-  正常情况下,项目结构应该如图2.2所示,
-  2.3 配置部署"调度中心"
-  "调度中心"项目:xxl-job-admin
-  
-                                        
-                    (图2.2A:数据库JDBC配置截图)
-                                        
-  配置调度中心JDBC链接:请在图2.2A所示位置配置jdbc链接地址,链接地址请保持和 2.1章节 所创建的调度数据库的地址一致。
-                                        
-                       (图2.2B:系统配置截图)
-  
-  配置报警邮箱和登陆账号:请在图2.2B所示位置,设置自己的报警邮件发送邮箱和登陆账号密码。
-  
-                                        
-                    (图2.2C:调度中心部署截图)
-                                        
-  部署项目:如果已经正确进行上述配置,可将项目部署到eclipse下的tomcat服务器中。或者,将"调度中心"项目导出war包单独部署。
-                                        
-                 (图2.2D:"调度中心"登陆界面)
-                                        
-  访问链接:http://localhost:8080/xxl-job-admin/ 
-  至此"调度中心"项目已经部署结束。
-  2.4 配置部署"执行器"
-  "执行器"项目:xxl-job-client-demo
-                                        
-           (图2.4A:"执行器"项目Jdbc链接配置截图)
-  配置"执行器"项目Jdbc链接:请在图2.4A所示位置配置jdbc链接地址,链接地址请保持和 2.1章节 所创建的调度数据库的地址一致。
-                                        
-                   (图2.4B:"执行器"部署截图)
-  部署项目:如果已经正确进行上述配置,可将项目部署到eclipse下的tomcat服务器中。或者,将"执行器"项目导出war包单独部署。
-  至此"执行器"项目已经部署结束。
-  2.5 开发第一个任务"Hello World"
-  
-  系统详解
-  3.1 源码目录介绍
-  3.1 "调度数据库"详解
-  3.2 "调度中心"详解
-  3.3 "执行器"详解
-  任务详解
-  4.1 BEAN模式任务
-  4.2 GLUE任务任务
-  任务管理
-  5.1 编辑任务信息
-  5.2 编辑GLUE代码
-  5.3 恢复/暂停
-  5.4 手动触发一次调度
-  5.5 查看日志
-  5.6 删除任务
-  设计原理
-  6.1 总体架构
-  6.2 调度原理
-  6.3 通讯原理
-  6.4 执行器原理
-  其他
-  7.1 接入登记
-  更多接入公司,欢迎在https://github.com/xuxueli/xxl-job/issues/1 登记。
-  7.2 报告问题
-  XXL-JOB托管在Github上,如有问题可在ISSUES上提问,也可以加入技术交流群(仅作技术交流):367260654	 。

+ 4 - 3
xxl-job-admin/src/main/java/com/xxl/job/controller/JobInfoController.java

@@ -76,7 +76,8 @@ public class JobInfoController {
 	@ResponseBody
 	public ReturnT<String> add(String jobGroup, String jobName, String jobCron, String jobDesc,
 			String handler_address, String handler_name, String handler_params, 
-			String author, String alarmEmail, int alarmThreshold, int glueSwitch) {
+			String author, String alarmEmail, int alarmThreshold, 
+			int glueSwitch, String glueSource, String glueRemark) {
 		
 		// valid
 		if (JobGroupEnum.match(jobGroup) == null) {
@@ -134,8 +135,8 @@ public class JobInfoController {
 		jobInfo.setAlarmEmail(alarmEmail);
 		jobInfo.setAlarmThreshold(alarmThreshold);
 		jobInfo.setGlueSwitch(glueSwitch);
-		jobInfo.setGlueSource(null);
-		jobInfo.setGlueRemark(null);
+		jobInfo.setGlueSource(glueSource);
+		jobInfo.setGlueRemark(glueRemark);
 		xxlJobInfoDao.save(jobInfo);
 		
 		try {

+ 0 - 24
xxl-job-admin/src/main/webapp/WEB-INF/template/jobcode/index.ftl

@@ -71,9 +71,6 @@
 	                    	<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>
@@ -90,27 +87,6 @@
 		<!-- footer -->
 		<@netCommon.commonFooter />
 	</div>
-
-<textarea id="demoCode" style="display:none;" >
-package com.xxl.job.service.handler;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.xxl.job.client.handler.IJobHandler;
-import com.xxl.job.client.handler.IJobHandler.JobHandleStatus;
-
-public class DemoJobHandler extends IJobHandler {
-	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
-	
-	@Override
-	public JobHandleStatus handle(String... params) throws Exception {
-		logger.info("XXL-JOB, Hello World.");
-		return JobHandleStatus.SUCCESS;
-	}
-	
-}
-</textarea>
 	
 <@netCommon.comAlert />
 <@netCommon.commonScript />

+ 23 - 0
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/index.ftl

@@ -154,6 +154,29 @@
 	                    	</div>
 						</div>
 					</div>
+
+<input type="hidden" name="glueRemark" value="GLUE代码初始化" >
+<textarea name="glueSource" style="display:none;" >
+package com.xxl.job.service.handler;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.xxl.job.client.handler.IJobHandler;
+import com.xxl.job.client.handler.IJobHandler.JobHandleStatus;
+
+public class DemoJobHandler extends IJobHandler {
+	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
+	
+	@Override
+	public JobHandleStatus handle(String... params) throws Exception {
+		logger.info("XXL-JOB, Hello World.");
+		return JobHandleStatus.SUCCESS;
+	}
+	
+}
+</textarea>
+					
 				</form>
          	</div>
 		</div>

+ 0 - 5
xxl-job-admin/src/main/webapp/static/js/jobcode.index.1.js

@@ -14,11 +14,6 @@ $(function() {
 		codeEditor.setValue( temp );
 	});
 	
-	// democode
-	$("#demoCode_btn").click(function() {
-		codeEditor.setValue( $("#demoCode").val() );
-	});
-	
 	// editor height
 	var height = Math.max(document.documentElement.clientHeight, document.body.offsetHeight);
 	$(".CodeMirror").attr('style', 'height:'+ height +'px');

+ 1 - 1
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js

@@ -113,7 +113,7 @@ $(function() {
 		                		}
 		                		
 		                		if (row.triggerStatus == 'SUCCESS'){
-		                			var temp = '<a href="javascript:;" class="logDetail" _id="'+ row.id +'">查看日志</a>';
+		                			var temp = '<a href="javascript:;" class="logDetail" _id="'+ row.id +'">执行日志</a>';
 		                			if(!row.handleStatus){
 		                				temp += '<br><a href="javascript:;" class="logKill" _id="'+ row.id +'">终止任务</a>';
 		                			}