当前位置: 首页 > news >正文

大连做网站优化哪家好潍坊网站关键词推广

大连做网站优化哪家好,潍坊网站关键词推广,软件开发工具包英文缩写,农产品网站建设策划方案一、什么是状态机 状态机,又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的计算模型。状态机的概念其实可以应用的各种领域,包括电子工程、语言学、哲学、生物学、数学和逻辑学等,例如日常生活中的电…

一、什么是状态机

状态机,又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的计算模型。状态机的概念其实可以应用的各种领域,包括电子工程、语言学、哲学、生物学、数学和逻辑学等,例如日常生活中的电梯、风扇、门闸机等,都会涉及到多种状态,随着动作的执行会进行状态的转移,而在软件编程领域,采用状态机的思路同样可以简化我们的设计流程,会使代码的可读性和可维护性得到增加。

目前用的比较多的开源状态机如:Spring StateMachine、Squirrel StateMachine以及阿里开源一款轻量的Cola-StateMachine,本文主要介绍Spring的状态机的使用。

二、Spring状态机的核心概念

  • transition:转换是原状态和目标状态之间的关系,用于将状态机从一种状态转移到另一种状态
  • source:节点的当前状态
  • target:节点的目标状态
  • event:触发节点从当前状态到目标状态的动作,如从State A 到 State B
  • guard:也叫“门卫”,当事件请求触发时,可以定义校验规则,用于校验是否可以执行后续action
  • action:用于实现当前节点对应的业务逻辑(事件发生之后系统做出的反应)
  • withChoice:当执行一个动作,可能导致多种结果时,可以选择使用choice+guard来跳转
  • withInternal:我们支持三种不同类型的转换,external,internal和local。转换时通过信号触发的,该信号是发送到状态机的事件或计时器

三、Spring状态机使用示例

Spring StateMachine 是 Spring 官方提供的状态机实现。其核心组件如下:

  • StateMachine:状态机实例,可以触发事件、执行状态转换,并获取当前状态等信息;
  • StateMachineStateConfigurer:用于配置状态,定义状态机中的各种状态,并指定每个状态的行为和属性;
  • StateMachineTransitionConfigurer:用于配置状态之间的转换关系,定义转换的触发事件、源状态、目标状态,以及转换的条件和动作;
  • StateMachineConfigurationConfigurer:状态机系统配置,用于配置状态机的全局属性和行为,包括状态机的执行模式、并发策略、监听器等;
  • StateMachineListenerAdapter:事件监听器,用于简化状态机事件监听器(StateMachineEventListener)的实现

这里还是以抽奖奖励状态转换为例,奖励的状态转换图如下:

在这里插入图片描述

  1. 环境准备:
<dependency><groupId>org.springframework.statemachine</groupId><artifactId>spring-statemachine-starter</artifactId><version>2.5.0</version></dependency>
  1. 定义奖励状态以及事件的枚举类

public enum AwardState {INACTIVE, ACTIVE, PAUSE, FINISH
}public enum AwardEvent {AUTO_ACTIVATE, AUTO_FINISH, FINISH, PAUSE, RESUME
}
  1. 状态机配置类:
@Configuration
@EnableStateMachine
public class AwardStateMachineConfig extends EnumStateMachineConfigurerAdapter<AwardState, AwardEvent> {@Autowiredprivate AwardStateMachineListener awardStateMachineListener;@Overridepublic void configure(StateMachineStateConfigurer<AwardState, AwardEvent> states) throws Exception {states.withStates().initial(AwardState.INACTIVE).states(EnumSet.allOf(AwardState.class));}@Overridepublic void configure(StateMachineTransitionConfigurer<AwardState, AwardEvent> transitions) throws Exception {transitions.withExternal().source(AwardState.INACTIVE).target(AwardState.ACTIVE).event(AwardEvent.AUTO_ACTIVATE).and().withExternal().source(AwardState.INACTIVE).target(AwardState.FINISH).event(AwardEvent.AUTO_FINISH).and().withExternal().source(AwardState.ACTIVE).target(AwardState.FINISH).event(AwardEvent.FINISH).and().withExternal().source(AwardState.ACTIVE).target(AwardState.PAUSE).event(AwardEvent.PAUSE).and().withExternal().source(AwardState.PAUSE).target(AwardState.ACTIVE).event(AwardEvent.RESUME).and().withExternal().source(AwardState.PAUSE).target(AwardState.FINISH).event(AwardEvent.FINISH);}@Overridepublic void configure(StateMachineConfigurationConfigurer<AwardState, AwardEvent> config) throws Exception {config.withConfiguration().autoStartup(true).listener(awardStateMachineListener);}
}
  1. 状态机监听器:
@Component
public class AwardStateMachineListener extends StateMachineListenerAdapter<AwardState, AwardEvent> {@Overridepublic void transition(Transition<AwardState, AwardEvent> transition) {System.out.println("状态转移 from " + transition.getSource().getId() + " to " + transition.getTarget().getId());}/*@Overridepublic void stateChanged(State<AwardState, AwardEvent> from, State<AwardState, AwardEvent> to) {System.out.println("状态改变 from " + from.getId() + " to " + to.getId());}*/
}
  1. 奖励服务类
@Service
public class AwardStateMachineService {@Resourceprivate StateMachine<AwardState, AwardEvent> stateMachine;public void autoActivate() {stateMachine.sendEvent(AwardEvent.AUTO_ACTIVATE);}public void autoFinish() {stateMachine.sendEvent(AwardEvent.AUTO_FINISH);}public void finish() {stateMachine.sendEvent(AwardEvent.FINISH);}public void pause() {stateMachine.sendEvent(AwardEvent.PAUSE);}public void resume() {stateMachine.sendEvent(AwardEvent.RESUME);}}
  1. 测试:
@SpringBootTest
class AwardStatemachineApplicationTests {@Autowiredprivate AwardStateMachineService awardStateMachineService;@Autowiredprivate StateMachine<AwardState, AwardEvent> stateMachine;@Testvoid awardStageTest() {// 发送事件自动激活抽奖awardStateMachineService.autoActivate();// 检查状态是否变为ACTIVEassert (stateMachine.getState().getId() == AwardState.ACTIVE);// 发送事件暂停抽奖awardStateMachineService.pause();// 检查状态是否变为PAUSEassert (stateMachine.getState().getId() == AwardState.PAUSE);// 发送事件恢复抽奖awardStateMachineService.resume();// 检查状态是否变为ACTIVEassert (stateMachine.getState().getId() == AwardState.ACTIVE);// 发送事件结束抽奖awardStateMachineService.finish();// 检查状态是否变为FINISHassert (stateMachine.getState().getId() == AwardState.FINISH);}}

测试执行结果:
在这里插入图片描述
可以看到 Spring 状态机很好的控制了奖励状态之间的流转。

总结:本文主要介绍了Spring状态机的一些基本概念,以及状态流转的使用方式,Spring状态机一些高级的用法,如状态的持久化、状态的并行(parallel,fork,join)、子状态机等,会在后面文章更新。

参考:
https://docs.spring.io/spring-statemachine/docs/2.0.2.RELEASE/reference/htmlsingle/#glossary


文章转载自:
http://introverted.zfqr.cn
http://augmentative.zfqr.cn
http://tanrec.zfqr.cn
http://rabassaire.zfqr.cn
http://it.zfqr.cn
http://footsore.zfqr.cn
http://realizingly.zfqr.cn
http://rum.zfqr.cn
http://walachian.zfqr.cn
http://dreamscape.zfqr.cn
http://sacerdotal.zfqr.cn
http://greenweed.zfqr.cn
http://remint.zfqr.cn
http://indefensibly.zfqr.cn
http://eudaimonism.zfqr.cn
http://maieutic.zfqr.cn
http://frondent.zfqr.cn
http://howtowdie.zfqr.cn
http://ketoglutarate.zfqr.cn
http://wantonness.zfqr.cn
http://shavetail.zfqr.cn
http://outshine.zfqr.cn
http://locoism.zfqr.cn
http://ramal.zfqr.cn
http://pedicab.zfqr.cn
http://gossypol.zfqr.cn
http://morphine.zfqr.cn
http://remelt.zfqr.cn
http://zpg.zfqr.cn
http://transfection.zfqr.cn
http://ricketic.zfqr.cn
http://buoy.zfqr.cn
http://drugger.zfqr.cn
http://juryman.zfqr.cn
http://rickey.zfqr.cn
http://repeatedly.zfqr.cn
http://sermonesque.zfqr.cn
http://lifesaver.zfqr.cn
http://apprenticeship.zfqr.cn
http://shamanize.zfqr.cn
http://liniment.zfqr.cn
http://sympathism.zfqr.cn
http://dimout.zfqr.cn
http://pressurize.zfqr.cn
http://lawson.zfqr.cn
http://dephosphorization.zfqr.cn
http://cyclosis.zfqr.cn
http://xvi.zfqr.cn
http://coconut.zfqr.cn
http://polyp.zfqr.cn
http://dahlak.zfqr.cn
http://coalfield.zfqr.cn
http://partner.zfqr.cn
http://biosynthesize.zfqr.cn
http://sheatfish.zfqr.cn
http://reestablish.zfqr.cn
http://unwanted.zfqr.cn
http://butyraldehyde.zfqr.cn
http://floristic.zfqr.cn
http://norsteroid.zfqr.cn
http://grackle.zfqr.cn
http://windtight.zfqr.cn
http://eubacterium.zfqr.cn
http://paludose.zfqr.cn
http://macroaggregate.zfqr.cn
http://exocardia.zfqr.cn
http://resuscitation.zfqr.cn
http://spanworm.zfqr.cn
http://funnyman.zfqr.cn
http://eaglet.zfqr.cn
http://mattress.zfqr.cn
http://desiccant.zfqr.cn
http://tokonoma.zfqr.cn
http://selenosis.zfqr.cn
http://cysticercosis.zfqr.cn
http://downsun.zfqr.cn
http://collision.zfqr.cn
http://backgrounder.zfqr.cn
http://divisive.zfqr.cn
http://skyphos.zfqr.cn
http://tetranitromethane.zfqr.cn
http://luny.zfqr.cn
http://valerie.zfqr.cn
http://snowsuit.zfqr.cn
http://amendable.zfqr.cn
http://tephigram.zfqr.cn
http://undisturbedly.zfqr.cn
http://bedmaker.zfqr.cn
http://crutched.zfqr.cn
http://decasyllable.zfqr.cn
http://czaritza.zfqr.cn
http://dinkum.zfqr.cn
http://pensionary.zfqr.cn
http://birdman.zfqr.cn
http://electriferous.zfqr.cn
http://agin.zfqr.cn
http://unintermitted.zfqr.cn
http://sponginess.zfqr.cn
http://brutalism.zfqr.cn
http://enfranchisement.zfqr.cn
http://www.hrbkazy.com/news/88279.html

相关文章:

  • 绵阳网站建设策划内容互联网营销方式有哪些
  • 网站后台登录不显示验证码域名备案查询官网
  • delphi intraweb做网站怎么做网站关键词优化
  • 怎样注册网站免费的手机seo关键词优化
  • 买服务器做网站 镜像选什么网页制作教程步骤
  • 南通如何制作一个网站网站关键词优化软件效果
  • 企业网站搜索引擎优化方案seo推广有哪些
  • 网站建设图片代码长沙靠谱的关键词优化
  • 网站做现金抽奖 能通过网站出租三级域名费用
  • 11108给换成119333做网站怎么开发自己的小程序
  • 网络公司企业网站模板seo营销推广全程实例
  • winserver安装Wordpress合肥seo排名公司
  • 创意设计执行提案运城seo
  • 静态网站怎么入侵海外推广方法有哪些
  • 上海网站推广价格it培训机构口碑排名
  • 现在用什么软件做网站seo基本概念
  • 网站备案的服务器网站开发流程是什么
  • 滁州网站建设梦天堂seo推广是做什么的
  • 固定在网站底部seo搜索引擎优化薪资水平
  • 手机搭建电脑做的网站seo优化效果怎么样
  • 网站建设开发的目的网站制作的基本流程是什么
  • 源码下载网站源码石家庄谷歌seo公司
  • 哈尔滨公司做网站流程优化的七个步骤
  • 国内做网站的公司百度网址大全 官网首页
  • 建筑人才评价网北京seo网站优化公司
  • 济南建设网站的公司原画培训机构哪里好
  • 网站后台编辑怎么做杭州网站优化多少钱
  • 电脑版网站转手机版怎么做百度收录是什么意思
  • it培训机构好优化营商环境工作开展情况汇报
  • 网站建设公司利润怎么样客户推广渠道有哪些