maven依赖
<dependency>
<groupId>com.alibaba.cola</groupId>
<artifactId>cola-component-statemachine</artifactId>
<version>4.3.2</version>
</dependency>
示例
String ORDER_STATE_MACHINE = "orderStateMachine";
StateMachineBuilder<StatusEnum, EventEnum, DataContext> builder = StateMachineBuilderFactory.create();
builder.externalTransition()
.from(StatusEnum.A)
.to(StatusEnum.B)
.on(EventEnum.OPERATE1)
.when(checkCondition())
.perform(doAction());
builder.internalTransition()
.within(StatusEnum.A)
.on(EventEnum.OPERATE1)
.when(checkCondition())
.perform(doAction());
builder.externalTransitions()
.fromAmong(StatusEnum.A, StatusEnum.B)
.to(StatusEnum.C)
.on(EventEnum.OPERATE1)
.when(checkCondition())
.perform(doAction());
StateMachine<StatusEnum, EventEnum, DataContext> orderStateMachine = builder.build(ORDER_STATE_MACHINE);
orderStateMachine.fireEvent(StatusEnum.A, EventEnum.OPERATE1,new DataContext());
StateMachineBuilderFactory相关API
create() 创建状态机构造器对象(StateMachineBuilder)
StateMachineBuilder<S, E, C> 相关API
三个泛型(状态枚举、事件枚举、流转数据对象)
externalTransition() 创建一个外部流转的构建器(ExternalTransitionBuilder)
externalTransitions() 创建多个外部流转的构建器(ExternalTransitionsBuilder)
internalTransition() 创建内部流转的构建器(InternalTransitionBuilder)
setFailCallback(FailCallback<S, E, C> var1) 配置失败回处理逻辑
build(String var1) 对状态机开始构建(StateMachine),并在StateMachineFactory中注册
StateMachine<S, E, C> 相关API
verify(S var1, E var2) 验证一个事件E是否可以从当前状态S触发
fireEvent(S var1, E var2, C var3) 向状态机发送一个事件E,触发状态机,并返回目标状态
getMachineId() 获取状态机的标识符MachineId
showStateMachine() 显示状态机的结构
generatePlantUML() 获取状态流程的 PlantUML 字符串
StateMachineFactory 相关API
register(StateMachine<S, E, C> stateMachine) 注册状态机
get(String machineId) 获取状态机
ExternalTransitionBuilder 相关API
from(S var1) 设置起始状态
ExternalTransitionsBuilder 相关API
fromAmong(S... var1) 设置起始状态(多值)
InternalTransitionBuilder 相关API
within(S var1) 设置当前状态
From<S, E, C> 相关API
to(S var1) 设置目标状态
To<S, E, C> 相关API
on(E var1) 设置事件
On<S, E, C> 相关API
when(Condition<C> var1) 设置流转需要校验的条件
When<S, E, C> 相关API
perform(Action<S, E, C> var1) 设置流转的业务流程