spring-state-machine的action踩坑
发表于|更新于
|浏览量:
善则称人,过则称己,则民不争。——佚名
今天在状态机的action里进行事件触发,发现并没有触发
这是因为在action触发后,state才会进行更改,而不是在state触发后。。。
例如此处我们在action的execute打断点:

可以看到还没有更改状态
如果需要在state触发以后紧接着触发event,则可以放到拦截器里spring-state-machine拦截器处理
相关推荐
2024-02-12
异步转Mono
小利不争,小忿不发,可以合众。——傅昭 今天分享一个异步方法转Mono的方式,利用reactor.core.publisher.Mono#create: 1234567891011return Mono.create(sink -> rtmClient.subscribe(channelName, options, new ResultCallback<Void>() { @Override public void onSuccess(Void unused) { sink.success(unused); } @Override public void onFailure(ErrorInfo errorInfo) { sink.error(new IllegalStateException(errorInfo.getErrorReason())); }})); 即可实现
2024-09-12
Java生态AI大模型框架langchat
开成花灾的玫瑰不是灿烂,而是荒凉。——严歌苓 Github: GitHub - TyCoding/langchat: LangChat: Java LLMs/AI Project, Supports Multi AI Providers( OpenAI / Gemini / Ollama / Azure / 智谱 / 阿里通义大模型 / 百度千帆大模型), Java生态下AI大模型产品解决方案,快速构建企业级AI知识库、AI机器人应用 官方文档: https://langchat.cn/ 介绍: LangChat是Java生态下企业级AIGC项目解决方案,在RBAC权限体系的基础上,集成AIGC大模型能力,帮助企业快速定制AI知识库、企业AI机器人。 接入 OpenAI / Gemini / Ollama / Azure / Claude / 智谱AI / 阿里通义大模型 / 百度千帆大模型 等大模型。 English 网站文...
2024-12-26
web框架Play
如果法官偷窃了自己,盗贼便有权偷窃别人。——莎士比亚 Github: https://github.com/playframework/playframework 官方网站: https://www.playframework.com/ 最近了解了一个非常有趣的Web框架:Play Framework。它是一个现代化的全栈Web框架,基于Java和Scala开发,特别适合构建高性能、可扩展的Web应用和REST API。Play Framework 的设计理念是快速开发和响应式编程,非常适合现代应用的需求。 安装和配置非常简单。对于使用Java或Scala的开发者,只需要安装SBT(Simple Build Tool)就可以快速启动一个Play项目。 安装SBT:如果你是Java开发者,可以从 sbt 官网 下载并安装。完成后可以通过以下命令验证安装: 1sbt sbtVersion 创建项目:创建一个新的Play项目非常简单,只需运行: 1sbt new playframework/play-java-seed.g8 如果你是Scala用户,可以选择: 1sbt n...
2023-11-09
spring-state-machine守卫踩坑
真正的艺术家绝不顾虑作品的前途。——罗曼·罗兰 今天发现一个问题,如果我们是动态构建状态机,在传入指定守卫为null时,代码不会报错,且事件不会过渡到下一个状态 解决方式: 1234567builder.configureTransitions().withExternal() .name(transition.getName()) .source(transition.getSourceState()) .event(transition.getEvent()) .target(transition.getTargetState()) .action(Opp.of(transition.getAction()).orElse(SerCons.nothing()::accept)) .guard(Opp.of(transition.getGuard()).orElseGet(() -> c -> true)) 提供默认值 引入的是import org.dromara.streamquery....
2020-07-30
jenkinsのMaven项目构建
首先安装插件 安装完了我们新建项目就可以选maven项目了 新建一个项目,配置仓库地址 配置maven命令 然后页面稍微做一点点修改,push,Build Now 成功后刷新发现项目已经成功部署
2023-06-15
wrapper支持typeHandler
错误经不起失败,但真理却不怕失败。——泰戈尔 相关pr: https://gitee.com/dromara/stream-query/pulls/340 大致使用方式 123456789101112131415161718192021222324@Testvoid selectTest() { Name name = new Name(); name.setUsername("VampireAchao"); name.setNickname("阿超"); UserInfoWithJsonName user = new UserInfoWithJsonName(); user.setName(name); Database.saveFewSql(Lists.of(user)); Database.updateFewSql(Lists.of(user)); LambdaQueryWrapper<UserInfoWithJsonName> wrapper = QueryCondition.qu...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog