<!-- generated-by: gsd-doc-writer -->
# 数据状态能力与业务状态

规则 `CORE-STATE-001`。权威类型：[DataStatusFeature](../../ineed-core-data-base/src/main/java/com/ineed/core/data/datastatus/DataStatusFeature.java)、[EnableDataStatus](../../ineed-core-data-base/src/main/java/com/ineed/core/data/datastatus/EnableDataStatus.java)。

## 开发顺序

1. 逐个实体声明需要的能力：`FIXED`、`ENABLED`、`DEFAULT`、`PRIMARY`、`LOCKED`、`PUBLISHED`。
2. 选择基类并由最终实体显式开启额外能力。`AbstractTenantBase*Entity` 系列默认提供 `FIXED`；不要认为字段存在就已开放全部状态动作。
3. 对齐 Manager、Service、Controller、权限与前端 `dataStatusCapabilities`。
4. 确定默认值、互斥/唯一范围、批量行为和状态切换后的业务约束。

填写方式见[需求模板](../project-development/module-requirements-template.md)，代码排布见[源码风格](../project-development/code-style-guide.md)。未声明的开关不能在生成代码时默认开启。

## 通用状态与领域状态机

通用状态位表达独立能力，例如启停、锁定、是否发布。业务状态机表达流程与允许转移，例如草稿、待审核、已批准、已执行。

同一条数据可以同时有两种状态，但必须明确哪种状态控制哪些动作。`PUBLISHED` 不自动提供版本冻结、审核、发布时间或发布快照。

## 验证

验证未开启能力的动作、重复状态请求、批量中存在非法对象、默认/主项的唯一范围、逻辑删除后的状态行为，以及两条运行时的同义结果。事件规则只为实际发生的状态变化发事件，详见[集成事件规范](../core/integration-event-guide.md)。
