知北游z 2022-02-28 17:24 采纳率: 50%
浏览 136
已结题

spring状态机使用choice,执行了withChoice的guard和action,收到的状态不对目标状态还是中间状态

spring状态机使用choice,执行了withChoice的guard和action,但是withChoice的guard和action收到的状态不对,目标状态还是中间状态。
configureStates里已经配置了 choice(StatusEnum.B)
状态机基本配置如下:

.and().withExternal().source(StatusEnum.A)
                .event(EventEnum.CHANGE)
                .target(StatusEnum.B)

                 .and().withChoice()
                .source(StatusEnum.B)
                .first(StatusEnum.C, guard(),handlerAction1())
                .last(StatusEnum.D,handlerAction2());

状态为StatusEnum.A的数据在执行 stateMachine.sendEvent(EventEnum.CHANGE); 根据官方描述状态从
StatusEnum.A 变为 StatusEnum.B(中间状态)后,后自动触发withChoice的配置根据guard,再做一次变更。事实上也确实触发了withChoice的guard和action,但是guard和action收到的状态不对。理论上收到的应该是状态机变更后的状态,即source 为StatusEnum.B,target为StatusEnum.C或者StatusEnum.D。但是guard和action里接收到的依然是 source 为StatusEnum.A,target为StatusEnum.B的状态。这是什么原因呢

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月8日
    • 创建了问题 2月28日

    悬赏问题

    • ¥20 python忆阻器数字识别
    • ¥15 无法输出helloworld
    • ¥15 高通uboot 打印ubi init err 22
    • ¥20 PDF元数据中的XMP媒体管理属性
    • ¥15 R语言中lasso回归报错
    • ¥15 网站突然不能访问了,上午还好好的
    • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
    • ¥15 semrush,SEO,内嵌网站,api
    • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
    • ¥15 振荡电路,ADS仿真