Authored by fu

重复率

Showing 30 changed files with 157 additions and 179 deletions
... ... @@ -14,3 +14,5 @@ yoho-jobs-client/target/
yoho-jobs-server/target/
yoho-jobs-dal/target/
yoho-jobs-server/.eclipse-pmd
.idea/
*.iml
... ...
... ... @@ -20,12 +20,13 @@
</properties>
<dependencies>
</dependencies>
<modules>
<module>yoho-jobs-client</module>
<module>yoho-jobs-server</module>
<module>yoho-jobs-server-web</module>
<module>yoho-jobs-dal</module>
<module>yoho-jobs-common</module>
</modules>
</project>
\ No newline at end of file
... ...
... ... @@ -28,5 +28,10 @@
<groupId>com.yoho.core</groupId>
<artifactId>yoho-core-rest-client-simple</artifactId>
</dependency>
<dependency>
<groupId>com.yoho.dsf.yhjobs</groupId>
<artifactId>yoho-jobs-common</artifactId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
... ...
... ... @@ -3,7 +3,7 @@
*/
package com.yoho.jobs.client;
import com.yoho.jobs.client.domain.ProcessResult;
import com.yoho.jobs.common.domain.ProcessResult;
/**
* @author yanzhang.fu
... ...
... ... @@ -10,7 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.yoho.jobs.client.JobProcessor;
import com.yoho.jobs.client.domain.JobInfo;
import com.yoho.jobs.common.domain.JobInfo;
/**
... ...
/**
*
*/
package com.yoho.jobs.client.domain;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanzhang.fu
* Job处理结果
*/
@Getter
@Setter
public class ProcessResult implements Serializable{
/**
*
*/
private static final long serialVersionUID = 2822878240316344250L;
/**
* 任务执行状态码
*/
private String code;
/**
* 任务信息
*/
private JobInfo jobInfo;
/**
* 任务执行附加信息
*/
private String message;
/**
* 本次任务开始时间
*/
private String beginTime;
/**
* 本次任务结束时间
*/
private String endTime;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(" ProcessResult is [ code=");
sb.append(code);
sb.append(", beginTime=");
sb.append(beginTime);
sb.append(" ,endTime=");
sb.append(endTime);
sb.append(", message=");
sb.append(message);
sb.append("]");
return sb.toString();
}
}
///**
// *
// */
//package com.yoho.jobs.client.domain;
//
//import java.io.Serializable;
//
//import com.yoho.jobs.common.domain.JobInfo;
//
//import lombok.Getter;
//import lombok.Setter;
//
///**
// * @author yanzhang.fu
// * Job处理结果
// */
//@Getter
//@Setter
//public class ProcessResult implements Serializable{
//
//
// /**
// *
// */
// private static final long serialVersionUID = 2822878240316344250L;
//
// /**
// * 任务执行状态码
// */
// private String code;
//
// /**
// * 任务信息
// */
// private JobInfo jobInfo;
//
// /**
// * 任务执行附加信息
// */
// private String message;
//
// /**
// * 本次任务开始时间
// */
// private String beginTime;
//
// /**
// * 本次任务结束时间
// */
// private String endTime;
//
// @Override
// public String toString() {
// StringBuffer sb = new StringBuffer();
// sb.append(" ProcessResult is [ code=");
// sb.append(code);
// sb.append(", beginTime=");
// sb.append(beginTime);
// sb.append(" ,endTime=");
// sb.append(endTime);
// sb.append(", message=");
// sb.append(message);
// sb.append("]");
// return sb.toString();
// }
//}
... ...
... ... @@ -34,8 +34,8 @@ import com.yoho.core.rest.client.ServiceCaller;
import com.yoho.jobs.client.JobProcessor;
import com.yoho.jobs.client.YHJobDef;
import com.yoho.jobs.client.container.JobContainer;
import com.yoho.jobs.client.domain.JobInfo;
import com.yoho.jobs.client.domain.ProcessResult;
import com.yoho.jobs.common.domain.JobInfo;
import com.yoho.jobs.common.domain.ProcessResult;
/**
*
... ...
... ... @@ -12,8 +12,8 @@ import com.yoho.core.common.utils.DateUtil;
import com.yoho.core.common.utils.LocalIp;
import com.yoho.jobs.client.constant.JobConstant;
import com.yoho.jobs.client.container.JobContainer;
import com.yoho.jobs.client.domain.JobInfo;
import com.yoho.jobs.client.domain.ProcessResult;
import com.yoho.jobs.common.domain.JobInfo;
import com.yoho.jobs.common.domain.ProcessResult;
/**
* @author yanzhang.fu
... ...
... ... @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service;
import com.yoho.jobs.client.JobProcessor;
import com.yoho.jobs.client.YHJobDef;
import com.yoho.jobs.client.domain.ProcessResult;
import com.yoho.jobs.common.domain.ProcessResult;
/**
* @author yanzhang.fu
... ...
... ... @@ -4,7 +4,7 @@ import org.springframework.stereotype.Service;
import com.yoho.jobs.client.JobProcessor;
import com.yoho.jobs.client.YHJobDef;
import com.yoho.jobs.client.domain.ProcessResult;
import com.yoho.jobs.common.domain.ProcessResult;
@Service("testJobProcessor1")
@YHJobDef(cronExpress = "*/5 * * * * ?", jobName = "testjobname1", processor = "com.yoho.jobs.processor.TestJobProcessor1", scheduleType = 1, module = "order")
... ...
... ... @@ -9,7 +9,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.fastjson.JSON;
import com.yoho.jobs.client.domain.JobInfo;
import com.yoho.jobs.common.domain.JobInfo;
public class ZkOpt {
... ...
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yoho.dsf.yhjobs</groupId>
<artifactId>yoho-jobs</artifactId>
<version>1.3.0-SNAPSHOT</version>
</parent>
<artifactId>yoho-jobs-common</artifactId>
<name>yoho-jobs-common</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
... ...
Manifest-Version: 1.0
Class-Path:
... ...
/**
*
*/
package com.yoho.jobs.client.domain;
package com.yoho.jobs.common.domain;
import lombok.Getter;
import lombok.Setter;
... ...
/**
*
*/
package com.yoho.jobs.server.domain;
package com.yoho.jobs.common.domain;
import java.io.Serializable;
import com.yoho.jobs.common.domain.JobInfo;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanzhang.fu
*
* Job处理结果
*/
@Setter
@Getter
public class ClientProcessResult {
@Setter
public class ProcessResult implements Serializable{
/**
*
*/
private static final long serialVersionUID = 2822878240316344250L;
/**
* 任务执行状态码
... ...
... ... @@ -3,7 +3,7 @@ package com.yoho.jobs.dal;
*
*/
import com.yoho.jobs.dal.domain.ProcessResult;
import com.yoho.jobs.dal.domain.ProcessResultVO;
/**
* @author yanzhang.fu
... ... @@ -11,7 +11,7 @@ import com.yoho.jobs.dal.domain.ProcessResult;
*/
public interface IJobResultMapper {
public void insertJob(ProcessResult jobResult);
public void insertJob(ProcessResultVO jobResult);
// public ProcessResult selectJob(String jobName,String module);
... ...
... ... @@ -14,7 +14,7 @@ import lombok.Setter;
*/
@Getter
@Setter
public class ProcessResult implements Serializable{
public class ProcessResultVO implements Serializable{
/**
... ...
<?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="com.yoho.jobs.dal.IJobResultMapper">
<resultMap id="BaseResultMap" type="com.yoho.jobs.dal.domain.ProcessResult">
<resultMap id="BaseResultMap" type="com.yoho.jobs.dal.domain.ProcessResultVO">
<id column="code" property="code" jdbcType="VARCHAR" />
<result column="message" property="message" jdbcType="VARCHAR" />
<result column="beginTime" property="beginTime" jdbcType="VARCHAR" />
... ... @@ -26,7 +26,7 @@
activeMode
</sql>
<insert id="insertJob" parameterType="com.yoho.jobs.dal.domain.ProcessResult">
<insert id="insertJob" parameterType="com.yoho.jobs.dal.domain.ProcessResultVO">
insert into
job_run_log(code, message, beginTime, endTime, jobName,
jobGroup,
... ...
... ... @@ -36,5 +36,10 @@
<groupId>com.yoho.core</groupId>
<artifactId>yoho-core-rest-server</artifactId>
</dependency>
<dependency>
<groupId>com.yoho.dsf.yhjobs</groupId>
<artifactId>yoho-jobs-common</artifactId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
... ...
... ... @@ -12,8 +12,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.yoho.jobs.common.domain.JobInfo;
import com.yoho.jobs.server.domain.ConstantEnum;
import com.yoho.jobs.server.domain.JobInfo;
import com.yoho.jobs.server.domain.JobResponse;
import com.yoho.jobs.server.domain.ShowAllJobResponse;
import com.yoho.jobs.server.scheduler.JobService;
... ...
... ... @@ -5,15 +5,13 @@ package com.yoho.jobs.server.controller;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import com.yoho.jobs.common.domain.ProcessResult;
import com.yoho.jobs.dal.IJobResultMapper;
import com.yoho.jobs.dal.domain.ProcessResult;
import com.yoho.jobs.server.domain.ClientProcessResult;
import com.yoho.jobs.server.domain.JobResponse;
import com.yoho.jobs.dal.domain.ProcessResultVO;
/**
* @author yanzhang.fu
... ... @@ -27,13 +25,13 @@ public class SaveJobInfoController {
private IJobResultMapper jobResultMapper;
@RequestMapping("/saveJobResult")
public void saveJobResult(@RequestBody ClientProcessResult jobInfo) {
ProcessResult result = new ProcessResult();
public void saveJobResult(@RequestBody ProcessResult jobInfo) {
ProcessResultVO result = new ProcessResultVO();
convert(result, jobInfo);
jobResultMapper.insertJob(result);
}
private void convert(ProcessResult result, ClientProcessResult jobInfo) {
private void convert(ProcessResultVO result, ProcessResult jobInfo) {
result.setActiveMode(jobInfo.getJobInfo().getActiveMode());
result.setBeginTime(jobInfo.getBeginTime());
result.setCode(jobInfo.getCode());
... ...
/**
*
*/
package com.yoho.jobs.server.domain;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @author yanzhang.fu Job 在zk上的信息
*/
@Setter
@Getter
@ToString
public class JobInfo {
/**
* 任务名称
*/
private String jobName;
/**
* 任务组名
*/
private String jobGroup;
/**
* 业务处理类
*/
private String processor;
/**
* 任务类型:单机-0,非单机-1
*/
private int jobType;
/**
* 任务执行ip 可为空,当为单机任务时,若该字段为空,任意取节点IP执行。
*/
private String processIp;
/**
* 任务归属模块
*/
private String module;
/**
* 定时表达式
*/
private String cronExpression;
/**
* 任务描述
*/
private String desc;
/**
* 任务状态:0:未执行 1:正在执行
*/
private int status;
/**
* 运营触发操作 0-执行 ;1-更新; 2-停止;3-新增
*/
private int operator;
/**
* 任务执行时依赖上下文 json串
*/
private String context;
/**
* 0:单次任务 1-周期性任务
*/
private int activeMode;
}
... ... @@ -7,6 +7,8 @@ import java.util.concurrent.ScheduledFuture;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import com.yoho.jobs.common.domain.JobInfo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
... ...
... ... @@ -6,6 +6,8 @@ package com.yoho.jobs.server.domain;
import java.util.List;
import java.util.Map;
import com.yoho.jobs.common.domain.JobInfo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
... ...
... ... @@ -21,8 +21,8 @@ import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import com.yoho.core.common.utils.LocalIp;
import com.yoho.jobs.common.domain.JobInfo;
import com.yoho.jobs.server.domain.ConstantEnum;
import com.yoho.jobs.server.domain.JobInfo;
import com.yoho.jobs.server.domain.ScheduleJobInfo;
import com.yoho.jobs.server.scheduler.Container;
import com.yoho.jobs.server.scheduler.JobScheduleService;
... ...
... ... @@ -6,7 +6,7 @@ package com.yoho.jobs.server.scheduler;
import java.util.List;
import java.util.Map;
import com.yoho.jobs.server.domain.JobInfo;
import com.yoho.jobs.common.domain.JobInfo;
/**
... ...
... ... @@ -17,8 +17,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import com.yoho.jobs.common.domain.JobInfo;
import com.yoho.jobs.server.domain.ConstantEnum;
import com.yoho.jobs.server.domain.JobInfo;
import com.yoho.jobs.server.domain.ScheduleJobInfo;
import com.yoho.jobs.server.scheduler.Container;
import com.yoho.jobs.server.scheduler.JobService;
... ... @@ -178,7 +178,9 @@ public class JobServiceImpl implements JobService {
if (logger.isDebugEnabled()) {
logger.debug("stop job {}", jobInfo);
}
if (jobInfo.getStatus() == ConstantEnum.JobStatusEnum.STOPPING.getValue()) {
ScheduleJobInfo updateScheduleJobInfo = Container.CONTAINER.getJobsByModule(jobInfo.getModule())
.get(jobInfo.getJobName());
if (updateScheduleJobInfo.getJobInfo().getStatus() == ConstantEnum.JobStatusEnum.STOPPING.getValue()) {
return;
}
... ... @@ -190,8 +192,7 @@ public class JobServiceImpl implements JobService {
// 存在
String jobPath = JOBINFO_PATH + "/" + jobInfo.getModule() + "/jobinfo/" + jobInfo.getJobName();
jobInfo.setOperator(ConstantEnum.JobOperatorEnum.STOP.getValue());
ScheduleJobInfo updateScheduleJobInfo = Container.CONTAINER.getJobsByModule(jobInfo.getModule())
.get(jobInfo.getJobName());
updateScheduleJobInfo.getFuture().cancel(false);
updateScheduleJobInfo.getJobInfo().setOperator(ConstantEnum.JobOperatorEnum.STOP.getValue());
updateScheduleJobInfo.getJobInfo().setStatus(ConstantEnum.JobStatusEnum.STOPPING.getValue());
... ...
... ... @@ -10,7 +10,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import com.yoho.jobs.server.domain.JobInfo;
import com.yoho.jobs.common.domain.JobInfo;
/**
* @author yanzhang.fu
... ...
package org.yoho.jobs.server;
import org.junit.Test;
//import org.junit.Test;
/**
* Unit test for simple App.
*/
public class AppTest {
@Test
// @Test
public void test() {
String path = "/job/jobclient/order/jobinfo/testjobname";
String prefix = "/job/jobclient/";
... ...