Commit db4daa6b by liyuan

Merge remote-tracking branch 'origin/developer' into developer

parents a2ff8d94 6f3a19e5
package com.byit.job.enums;
/**
* @program: byit-myth-job->IEnum
* @description: 所有的枚举类均继承此接口
* @author: huangfu
* @date: 2019/11/13 15:46
**/
public interface IEnum {
/**
* 返码值
* @return
*/
int getCode();
/**
* 返回执行信息
* @return
*/
String getMsg();
}
package com.byit.job.enums;
/**
* 任务执行接执行的结果码值
* @author huangfu
*/
public enum JobResultEnum implements IEnum {
SUCCESS(200,"任务执行成功"),
FAIL(500,"任务执行失败"),
FAIL_TIMEOUT(502,"超时错误");
private int code;
private String msg;
JobResultEnum() {
}
JobResultEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
@Override
public int getCode() {
return this.code;
}
@Override
public String getMsg() {
return this.msg;
}
}
\ No newline at end of file
package com.byit.job.handler;
import com.byit.job.handler.interfaces.IJobHandler;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->AbsIJobHandler
* @description: TODO
* @author: huangfu
* @date: 2019/11/13 16:06
**/
public abstract class BaseJobHandler implements IJobHandler {
@Override
public void init(String param) {
}
@Override
public void destroy(String param) {
}
}
package com.byit.job.handler.annotation;
import java.lang.annotation.*;
/**
* 主要应用在本地java任务上
*/
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface JobHandler {
String value();
}
package com.byit.job.handler.impl;
import com.byit.job.handler.BaseJobHandler;
import com.byit.job.handler.interfaces.IJobHandler;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->GlueJobHandler
* @description: 任务节点处理程序
* @author: huangfu
* @date: 2019/11/13 16:23
**/
public class GlueJobHandler extends BaseJobHandler {
/**
* 任务实例
*/
private IJobHandler jobHandler;
/**
* 作业更新时间
*/
private long glueUpdateTime;
public GlueJobHandler(IJobHandler jobHandler, long glueUpdateTime) {
this.jobHandler = jobHandler;
this.glueUpdateTime = glueUpdateTime;
}
/**
* 回调任务节点
* @param param
* @return
* @throws Exception
*/
@Override
public ReturnResult<String> execute(String param) throws Exception {
return jobHandler.execute(param);
}
}
package com.byit.job.handler.interfaces;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->IJobHandler
* @description: 所有执行器的执行类的基类,即所有类型的执行器都是此接口的实现类
* @author: huangfu
* @date: 2019/11/13 15:31
**/
public interface IJobHandler {
/**
* 所有的任务执行程序必须回调此方法执行
* @param param
* @return
* @throws Exception
*/
ReturnResult<String> execute(String param) throws Exception;
/**
* 初始化时调用
* @param param
*/
void init(String param);
/**
* 销毁时调用
* @param param
*/
void destroy(String param);
}
package com.byit.job.model;
import com.byit.job.enums.JobResultEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @program: byit-myth-job->ReturnResult
* @description: 服务调用的返回结果
* @author: huangfu
* @date: 2019/11/13 15:39
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReturnResult<T> implements Serializable {
public static final long serialVersionUID = 1573630876693L;
public static final ReturnResult SUCCESS = new ReturnResult(null);
public static final ReturnResult FAIL = new ReturnResult(JobResultEnum.FAIL.getCode(),JobResultEnum.FAIL.getMsg());
public static final ReturnResult FAIL_TIMEOUT = new ReturnResult(JobResultEnum.FAIL_TIMEOUT.getCode(),JobResultEnum.FAIL_TIMEOUT.getMsg());
private int code;
private String msg;
private T content;
/**
* 默认就是错误
* @param code
* @param msg
*/
public ReturnResult(int code, String msg) {
this.code = code;
this.msg = msg;
}
/**
* 默认就是成功
* @param content
*/
public ReturnResult(T content) {
this.code = JobResultEnum.SUCCESS.getCode();
this.content = content;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>byit-myth-executor</artifactId>
<groupId>myth-job</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>myth-job</groupId>
<artifactId>myth-executor-api</artifactId>
</project>
\ No newline at end of file
package com.byit.api;
import com.byit.job.model.ReturnResult;
/**
* @program: byit-myth-job->JavaBeanExcutor
* @description: API外部调用接口
* @author: huangfu
* @date: 2019/11/13 16:52
**/
public interface JavaBeanExecutor {
/**
* 执行接口
* @param param
* @return
*/
ReturnResult<String> execute(String param);
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>byit-myth-executor</artifactId>
<groupId>myth-job</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>myth-job</groupId>
<artifactId>myth-executor-client</artifactId>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>byit-myth-executor</artifactId>
<groupId>myth-job</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>myth-job</groupId>
<artifactId>myth-job-server</artifactId>
</project>
\ No newline at end of file
......@@ -10,12 +10,28 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>byit-myth-executor</artifactId>
<packaging>pom</packaging>
<modules>
<module>myth-executor-api</module>
<module>myth-executor-client</module>
<module>myth-job-server</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--执行器核心控制-->
<dependency>
<groupId>myth-job</groupId>
<artifactId>myth-executor-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment