Files
orbit/weave/model/signal.go

41 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package model
import (
"time"
core "git.yuntuo.hk/k2safe/orbit/model"
)
// Signal 表示已可靠受理的外部信号,受理与消费是两个阶段。
// 对应表 weave_signals;这是服务端持久化模型,不直接作为 API 响应。
type Signal struct {
// Record 包含命名空间、记录标识、并发版本和 UTC 时间。
core.Record
// WorkflowID 所属流程实例标识。
WorkflowID core.ID `db:"workflow_id"`
// KeyDigest 稳定幂等键或资源键的 SHA-256 摘要。
KeyDigest core.Digest `db:"key_digest"`
// RequestDigest 规范化请求语义的 SHA-256 摘要,用于识别同键不同内容。
RequestDigest core.Digest `db:"request_digest"`
// Type 事件或信号的稳定类型标识。
Type string `db:"type"`
// TargetStepKey 信号目标步骤键,用于早到信号的后续匹配。
TargetStepKey string `db:"target_step_key"`
// CorrelationKey 外部业务操作关联键,防止旧信号误用于新工作。
CorrelationKey string `db:"correlation_key"`
// Payload 版本化输入或事件内容;仅承载通用 JSON,不解释行业规则。
Payload core.JSON `db:"payload"`
// ActorID 经认证的操作主体标识,不能直接信任请求自报值。
ActorID string `db:"actor_id"`
// State 当前状态;只允许定义的状态转换并配合事务校验。
State SignalState `db:"state"`
// AcceptedAt 信号可靠受理时间,不能用稍后的消费时间替代。
AcceptedAt time.Time `db:"accepted_at"`
// ExpiresAt 过期时间,统一 UTC;到期后的行为由对应资源策略决定。
ExpiresAt time.Time `db:"expires_at"`
// ConsumedWaitID 消费该信号的等待记录;尚未消费时为空。
ConsumedWaitID *core.ID `db:"consumed_wait_id"`
}
func (Signal) TableName() string { return "weave_signals" }