You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MDriven状态机状态有效值定义及起止状态配置规则咨询

MDriven状态机有效值判定核心规则
  • 状态绑定属性的合法取值范围,严格限定为状态机内预先定义的正式状态节点对应的枚举值,所有未在状态机中声明的取值都会被框架判定为非法值,写入时直接抛出校验错误,不需要额外编写取值范围校验逻辑,框架在属性赋值、持久化两个节点都会自动拦截非法值。
  • 单个实体实例的同一状态机实例,同一时间仅能持有一个激活状态,不支持多状态并存,互斥类业务状态(比如你要实现的三类产品状态)不需要额外写互斥判断,框架原生保证状态唯一性。
  • 状态值变更必须沿预设的迁移路径执行,直接绕过状态机给状态属性赋值的操作,不会被框架认可,持久化时会触发一致性校验拦截。
  • 跨状态迁移时会自动执行绑定的守卫条件逻辑,仅当守卫条件返回true时,目标状态才属于本次变更的合法有效值;若守卫条件不满足、或状态进入/退出绑定的动作执行抛出异常,状态会自动回滚到迁移前的原值,目标状态判定为无效。
仓库产品三状态功能实现参考

给产品实体配置状态机时,直接按实际业务流定义节点和迁移即可:

  • 先为产品实体新增ProductStatus类型的状态属性,枚举值固定为三个:供应商发货在途、在库、已发往客户
  • 配置合法迁移链路,从规则层面避免非法跳转:
    • 采购单确认发货时,触发迁移到「供应商发货在途」状态
    • 仓库完成入库核验、签收数量匹配采购应收量时,触发迁移到「在库」状态,守卫条件可直接绑定入库数量校验、批次校验等逻辑
    • 销售单完成出库复核、物流揽收时,触发迁移到「已发往客户」状态
  • 所有状态变更统一调用状态机的触发方法执行,不要直接修改状态属性,框架会自动拦截不符合链路的跳转(比如直接从「供应商发货在途」跳到「已发往客户」这类不符合业务逻辑的操作)。
起始状态、终止状态定义规范

起始状态

  • 一个状态机有且仅有一个起始状态,属于框架内置的伪状态,不会作为业务状态值持久化存储。
  • 起始状态仅能配置出向迁移、不能有任何入向迁移,业务流程中任何状态都不允许迁回起始状态。
  • 实体实例首次创建、状态机初始化时,会自动从起始状态沿预设迁移进入第一个正式业务状态,没有配置出向迁移的起始状态属于非法配置,框架加载状态机时会直接报错。你的场景里如果产品创建时默认对应采购已发货的在途状态,直接把起始状态的出向迁移连到「供应商发货在途」即可,不需要额外编写实例创建时的状态赋值逻辑,框架会自动处理。

终止状态

  • 终止状态代表状态机生命周期完结,一个状态机可以根据业务需要配置0到多个终止状态。
  • 终止状态仅能配置入向迁移、不能配置任何出向迁移,实例进入终止状态后,所有针对该状态机的触发操作都会被拦截,状态值不再允许变更。
  • 你的业务场景中,如果产品发往客户后不需要再在仓库系统内跟踪后续状态,可以直接把「已发往客户」设为终止状态;如果后续还要对接退货、召回、售后换新等流程,就不要将其设为终止状态,预留后续迁移入口即可。

内容的提问来源于stack exchange,提问作者Erik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:15:32