L3 中的工位(Segment)是一个运行对象,其执行状态描述的是该对象在生产运行中的阶段性事实。
状态本身具有以下特征:
离散、有限、可枚举
与执行生命周期严格绑定
具有恢复与追溯价值
因此,状态必须以持久化对象的形式存在。
一、总体架构设计
L3 工位状态持久化涉及三个主要模块:
| 模块 | 作用 | 输入/输出 |
|---|---|---|
| Event Ingestor | 接收 L2 层事件反馈 | 输入:执行事件(OperationStarted, OperationCompleted, Exception 等);输出:事件入队 |
| Segment State Manager | 管理工位状态机、执行状态持久化 | 输入:事件流;输出:Segment 当前状态、状态迁移日志 |
| State Store / Snapshot | 持久化 Segment 状态与事件历史 | 输入:状态变化、事件;输出:查询接口、恢复接口 |
数据流:
L2 Execution Event --> Event Ingestor --> Segment State Manager --> State Store状态持久化的核心是Segment State Manager + State Store。Event Ingestor 只是接收和标准化事件。
二、工位状态管理设计
1. Segment State 数据结构
SegmentState { SegmentID // 工位唯一标识 CurrentState // Idle, Ready, Executing, Completed, Suspended ActiveJobID // 当前作业/批次引用 LastEventID // 触发状态的最后事件 StateEnterTime // 状态进入时间 StateChangeReason // 触发原因(事件类型/约束) }每条状态变化都在 State Store 持久化,同时保留事件 ID 与时间戳。
2. 状态机设计
状态集合:Idle → Ready → Executing → Completed / Suspended / Aborted
状态迁移由事件驱动:
OperationStarted→ Idle/Ready → ExecutingOperationCompleted→ Executing → CompletedOperationSuspended→ Executing → Suspended
状态迁移前必须校验:
当前状态允许迁移
执行约束满足(能力、资源可用性)
状态机逻辑封装在 Segment State Manager 内部。
三、事件反馈机制(L2 → L3)
1. 事件标准化
L2 层反馈事件必须包含:
| 字段 | 说明 |
|---|---|
| EventID | 唯一标识 |
| SegmentID | 所属工位 |
| EventType | OperationStarted / OperationCompleted / Exception 等 |
| Timestamp | 事件发生时间 |
| Context | 作业、批次、资源等上下文信息 |
2. 异步消息处理
L3 通过事件队列接收事件(Kafka/RabbitMQ/IEC 62264 Event Bus)
消息处理顺序保证状态机连续性
重复事件幂等处理
3. 状态驱动持久化
Segment State Manager 从队列读取事件
驱动状态机计算新状态
写入 State Store
产生可查询接口供调度或运行分析使用
四、持久化与快照策略
1. 状态存储(State Store)
存储内容:SegmentState + 状态变迁日志 + 原始事件引用
支持:
当前状态查询
历史状态回放
审计与追溯
2. 快照机制
定期生成 Segment 状态快照
快照用于:
系统重启快速恢复
状态一致性检查
性能优化,减少事件重放量
3. 恢复流程
系统启动加载最近快照
从事件历史中重放快照之后的事件
完整恢复 SegmentState 与状态机上下文
五、接口设计与运行语义
1. 查询接口
GET /segments/{SegmentID}/state 返回: { CurrentState, ActiveJobID, StateEnterTime, LastEventID }2. 状态变化通知
L3 可以对上层调度或执行决策系统提供回调或事件广播:
SegmentAvailable
SegmentBusy
SegmentSuspended
3. 调度集成
调度系统只依赖 L3 提供的当前 Segment 状态与能力信息
L3 内部处理状态机与约束逻辑,调度无需直接访问 L2 事件
六、关键设计原则(工程注意事项)
事件驱动:状态来源于 L2 事件,不允许直接写入状态
状态机约束:每个 Segment 状态迁移必须合法
持久化与快照:保证系统可恢复、可审计、可回溯
L3 内聚:所有逻辑封装在 L3,不依赖外部系统进行状态计算
幂等性与顺序性:事件重放或重复处理不会破坏状态一致性