简单易用ColaMachine

一.基本介绍
概念介绍
1.COLA框架的状态机组件是一种轻量级的、无状态的、基于注解的状态机实现,可以方便地状态流转业务对象的状态转换。
2.COLA框架的状态机使用了连贯接口(Fluent Interfaces)来定义状态和事件,以及对应的动作和检查,并却保了先后顺序,保证了代码的可读性。
状态机DSL(Domain Specific Languages)带来的表达能力,相比较于if-else的代码要更优雅更容易理解。
www.cnblogs.com/hzbook/arch…
核心属性
State:状态
Event:事件,状态由事件触发,引起变化
Transition:流转,表示从一个状态到另一个状态
External Transition:外部流转,两个不同状态之间的流转
Internal Transition:内部流转,同一个状态之间的流转
Condition:条件,表示是否允许到达某个状态
Action:动作,到达某个状态之后,可以做什么
二.使用介绍
1.依赖引入

<dependency>

    <groupId>com.alibaba.cola</groupId>`

    <artifactId>cola-component-statemachine</artifactId>`

    <version>4.3.1</version>

</dependency>

2.Fluent Interfaces接口

StateMachineBuilder<States, Events, Context> builder = StateMachineBuilderFactory.create();

        //external transition

        builder.externalTransition()

                .from(States.STATE1)

                .to(States.STATE2)

                .on(Events.EVENT1)

                .when(checkCondition())

                .perform(doAction());

        //internal transition`

        builder.internalTransition()`

                .within(States.STATE2)

                .on(Events.INTERNAL_EVENT)

                .when(checkCondition())

                .perform(doAction());
        //external transitions

        builder.externalTransitions()
                .fromAmong(States.STATE1, States.STATE2, States.STATE3)`

                .to(States.STATE4)

                .on(Events.EVENT4)

                .when(checkCondition())

                .perform(doAction());
`        builder.build(machineId);
        StateMachine<States, Events, Context> stateMachine = StateMachineFactory.get(machineId);`

        stateMachine.showStateMachine();

3.触发状态机执行

OrderState target = stateMachine.fireEvent(States.STATE1, Events.EVENT4, ``new Order());

核心方法介绍
StateMachineBuilder

三.简单场景模拟

五.优缺点总结

优点总结如下:

   1.代码简单,易于学习,便于根据我们的业务线基础上做二次开发。

   2.无状态,减少内存消耗,线程先天安全。

3.先天支持事务

4.先天会自己抛出异常,不会像spring stateMachine出现将异常吃掉情况(当然通过反射确实可以将异常抛出)。

5.包小,摒弃了spring stateMachine中没有必要的功能,功能相对单一,包自然就小了。同时减少了资源的浪费。

六.源码解析,实现原理

https://www.processon.com/view/link/64784de92d286d12cd074c31

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值