一种有限状态自动机在Java下的实现方法技术

技术编号:34465508 阅读:23 留言:0更新日期:2022-08-10 08:38
本发明专利技术公开一种有限状态自动机在Java下的实现方法,涉及软件开发技术领域,包括:分析业务逻辑,提取业务中包含的State、Transition条件、触发Event及Action,定义State、Event;定义StateMachineImpl,基于Trasition类和Target类实现有限状态机StateMachine接口;定义TransitionBuilderImpl,实现TransitionBuilder接口,构建Transition对象;定义StateMachineBuilderImpl,实现StateMachineBuilder接口,构建StateMachine对象;在触发Event的业务代码中,调用StateMachine的sendEvent方法,StateMachine根据已构造的State关系,执行Action,并返回Transition后的State。本发明专利技术可以将状态的维护与业务代码解耦,提高代码的健壮性、可维护性。性。性。

【技术实现步骤摘要】
一种有限状态自动机在Java下的实现方法


[0001]本专利技术涉及软件开发
,具体的说是一种有限状态自动机在Java下的实现方法。

技术介绍

[0002]在Java语言中,目前已有一些成熟的有限状态自动机框架,Spring Statemachine则是其中最常用的一种。Spring社区提供的状态机框架能很好地与Spring框架进行集成。其主要特点为:提供层次化的状态机结构、更为复杂的状态机配置、类型安全的配置适配器、基于Zookeeper的分布式状态机、配置持久化、Spring IOC框架集成等。该框架具有丰富的配置项,可满足许多不同的使用场景,然而繁多的配置项、复杂的接口设计使得该框架的学习成本较高。

技术实现思路

[0003]本专利技术针对目前技术发展的需求和不足之处,提供一种有限状态自动机在Java下的实现方法,解决实际业务场景中多状态维护困难的问题,将状态的维护与业务代码解耦,提高代码的健壮性、可维护性。
[0004]本专利技术的一种有限状态自动机在Java下的实现方法,解决上述技术问题采用的技术方案如下:
[0005]一种有限状态自动机在Java下的实现方法,其实现过程包括:
[0006]分析业务逻辑,提取业务中包含的State、State之间的Transition条件、触发Event以及State Transition后所触发的Action,并使用枚举类型定义State、Event;
[0007]定义有限状态机接口的实现类StateMachineImpl,基于Trasition类和Target类实现有限状态机StateMachine接口,此时,调用方已经通过Action接口,定义了State Transition后所触发的Action;
[0008]定义过渡生成器TransitionBuilderImpl,实现过渡生成器TransitionBuilder接口,过渡生成器TransitionBuilder通过其接口构建Transition对象;
[0009]定义有限状态机建造者的实现类StateMachineBuilderImpl,实现有限状态机建造者StateMachineBuilder接口,有限状态机建造者StateMachineBuilder将已定义的State、Event、Action进行关联,并通过其接口构建有限状态机StateMachine对象;
[0010]在触发Event的业务代码中,调用有限状态机StateMachine的sendEvent方法,有限状态机StateMachine会自动根据已经构造出的State关系,执行Action,并返回Transition后的State。
[0011]具体的,Trasition类基于Action接口定义了Trasition的所有信息,包括源State、目标State、Event、以及Action;
[0012]Target类基于Action接口定义了Trasition的目标State、以及Trasition发生时需要执行的Action。
[0013]具体的,过渡生成器TransitionBuilder接口通过from方法定义了Transition的源State,通过to方法定义了Transition的目标State,通过onEvent方法定义了引起该Transition的Event,通过doAction方法定义了当该Transition发生时需要执行的Action,通过and方法返回StateMachineBuilder,用于链式调用,通过buildTransition方法用于构建最终的Transition对象。
[0014]更具体的,有限状态机建造者StateMachineBuilder接口通过addTransition方法创建了一个过渡生成器TransitionBuilder,用于构建Transition,通过build方法用于构建最终的有限状态机StateMachine对象。
[0015]更具体的,有限状态机建造者StateMachineBuilder提供了一系列语义化的建造方法,用于简化调用方对有限状态机StateMachine对象的构造过程。
[0016]更具体的,有限状态机StateMachine接口通过sendEvent方法触发Event,并需要指定当前的State以及触发的Event类型,有限状态机StateMachine接口的params是可选参数,用于Action中传递用户的自定义参数。
[0017]具体的,有限状态机接口的实现类StateMachineImpl内部通过双层Map存储了Transition的具体信息,其中,第一层Map的键为源State,第二层Map的键为事件,最终的值为Target。
[0018]更具体的,在一次Transition中,源State通过Event的触发Transition到目标State,并触发相关操作。
[0019]优选的,Action接口为函数式接口,由调用方实现。
[0020]本专利技术的一种有限状态自动机在Java下的实现方法,与现有技术相比具有的有益效果是:
[0021](1)本专利技术用于解决实际业务场景中多状态维护困难的问题,可以将状态的维护与业务代码解耦,提高代码的健壮性、可维护性;
[0022](2)本专利技术程序结构精简,不依赖于第三方组件,并提供了语义化的接口,屏蔽内部代码逻辑,从而降低了使用者的学习成本,易于使用。
附图说明
[0023]附图1是本专利技术的实现类图。
具体实施方式
[0024]为使本专利技术的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本专利技术的技术方案进行清楚、完整的描述。
[0025]需要补充的是,以下实施例涉及的相关词汇解释如下:
[0026]State,表示状态,描述对象的状态信息。
[0027]Transition,表示变换,描述状态之间的转换关系。
[0028]Event,表示事件,是变换的触发者。
[0029]Action,表示操作,描述变换触发后需要执行的操作。
[0030]Interface,表示接口。
[0031]实施例一:
[0032]结合附图1,本实施例提出一种有限状态自动机在Java下的实现方法,其实现过程包括:
[0033]分析业务逻辑,提取业务中包含的State、State之间的Transition条件、触发Event以及State Transition后所触发的Action,并使用枚举类型定义State、Event;
[0034]定义有限状态机接口的实现类StateMachineImpl,基于Trasition类和Target类实现有限状态机StateMachine接口,此时,调用方已经通过Action接口,定义了State Transition后所触发的Action;
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种有限状态自动机在Java下的实现方法,其特征在于,其实现过程包括:分析业务逻辑,提取业务中包含的State、State之间的Transition条件、触发Event以及State Transition后所触发的Action,并使用枚举类型定义State、Event;定义有限状态机接口的实现类StateMachineImpl,基于Trasition类和Target类实现有限状态机StateMachine接口,此时,调用方已经通过Action接口,定义了State Transition后所触发的Action;定义过渡生成器TransitionBuilderImpl,实现过渡生成器TransitionBuilder接口,过渡生成器TransitionBuilder通过其接口构建Transition对象;定义有限状态机建造者的实现类StateMachineBuilderImpl,实现有限状态机建造者StateMachineBuilder接口,有限状态机建造者StateMachineBuilder将已定义的State、Event、Action进行关联,并通过其接口构建有限状态机StateMachine对象;在触发Event的业务代码中,调用有限状态机StateMachine的sendEvent方法,有限状态机StateMachine会自动根据已经构造出的State关系,执行Action,并返回Transition后的State。2.根据权利要求1所述的一种有限状态自动机在Java下的实现方法,其特征在于,Trasition类基于Action接口定义了Trasition的所有信息,包括源State、目标State、Event、以及Action;Target类基于Action接口定义了Trasition的目标State、以及Trasition发生时需要执行的Action。3.根据权利要求1所述的一种有限状态自动机在Java下的实现方法,其特征在于,过渡生成器TransitionBuilder接口通过from方法定义了Transition的源State,通过to方法定义了Transiti...

【专利技术属性】
技术研发人员:张兆林张宏原张建伟肖雪
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1