thingsboard-client-demo/src/main/java/com/tuoheng/machine/instruction/AbstractInstruction.java

63 lines
1.5 KiB
Java

package com.tuoheng.machine.instruction;
/**
* 抽象指令基类,提供默认实现和下游节点管理
*/
public abstract class AbstractInstruction implements Instruction {
/**
* 成功后执行的下一个指令
*/
private Instruction onSuccessInstruction;
/**
* 失败后执行的下一个指令
*/
private Instruction onFailureInstruction;
/**
* 无论成功失败都执行的下一个指令
*/
private Instruction alwaysNextInstruction;
@Override
public Instruction getOnSuccessInstruction() {
return onSuccessInstruction;
}
@Override
public Instruction getOnFailureInstruction() {
return onFailureInstruction;
}
@Override
public Instruction getAlwaysNextInstruction() {
return alwaysNextInstruction;
}
/**
* 设置成功后执行的指令(支持链式调用)
*/
public <T extends AbstractInstruction> T onSuccess(Instruction instruction) {
this.onSuccessInstruction = instruction;
return (T) this;
}
/**
* 设置失败后执行的指令(支持链式调用)
*/
public <T extends AbstractInstruction> T onFailure(Instruction instruction) {
this.onFailureInstruction = instruction;
return (T) this;
}
/**
* 设置无论成功失败都执行的指令(支持链式调用)
*/
public <T extends AbstractInstruction> T then(Instruction instruction) {
this.alwaysNextInstruction = instruction;
return (T) this;
}
}