本文主要研究一下otter的NodeTaskjava
otter/node/common/src/main/java/com/alibaba/otter/node/common/config/model/NodeTask.javanode
public class NodeTask implements Serializable { private static final long serialVersionUID = 5442938515474956890L; private Pipeline pipeline; private List<StageType> stage = new ArrayList<StageType>(); // 任務類型 private List<TaskEvent> event = new ArrayList<TaskEvent>(); // 任務事件,新增/修改 private boolean shutdown = false; public boolean isShutdown() { return shutdown; } public void setShutdown(boolean shutdown) { this.shutdown = shutdown; } /** * 任務事件,新增/刪除/修改 */ public static enum TaskEvent { CREATE, DELETE; public boolean isCreate() { return this.equals(TaskEvent.CREATE); } public boolean isDelete() { return this.equals(TaskEvent.DELETE); } } public Pipeline getPipeline() { return pipeline; } public void setPipeline(Pipeline pipeline) { this.pipeline = pipeline; } public List<StageType> getStage() { return stage; } public void setStage(List<StageType> stage) { this.stage = stage; } public List<TaskEvent> getEvent() { return event; } public void setEvent(List<TaskEvent> event) { this.event = event; } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } }
otter/shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/pipeline/Pipeline.javagit
public class Pipeline implements Serializable { private static final long serialVersionUID = 5055655233043393285L; private Long id; private Long channelId; // 對應關聯的channel惟一標示id private String name; private String description; // 描述信息 private List<Node> selectNodes; private List<Node> extractNodes; private List<Node> loadNodes; private List<DataMediaPair> pairs; private Date gmtCreate; private Date gmtModified; private PipelineParameter parameters = new PipelineParameter(); //...... }
otter/shared/common/src/main/java/com/alibaba/otter/shared/common/model/config/enums/StageType.javagithub
public enum StageType { SELECT, EXTRACT, TRANSFORM, LOAD; public boolean isSelect() { return this.equals(StageType.SELECT); } public boolean isExtract() { return this.equals(StageType.EXTRACT); } /** * transform和load必定會同時出現 */ public boolean isTransform() { return this.equals(StageType.TRANSFORM); } /** * transform和load必定會同時出現 */ public boolean isLoad() { return this.equals(StageType.LOAD); } }
NodeTask定義了pipeline、stage、event屬性;Pipeline定義了id、channelId、name、description、selectNodes、extractNodes、loadNodes、pairs、parameters等屬性;StageType分SELECT, EXTRACT, TRANSFORM, LOAD這個類型ide