Files
orbit/weave/model/signal.go

51 lines
2.6 KiB
Go
Raw Permalink 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"`
// PayloadVersion 固定信号契约版本;为空仅表示不能参与新等待匹配的历史记录。
PayloadVersion *string `db:"payload_version"`
// TargetStepKey 信号目标步骤键,用于早到信号的后续匹配。
TargetStepKey string `db:"target_step_key"`
// TargetActivationSequence 目标激活序号,早到首轮为1;为空仅表示身份未核实的历史信号。
TargetActivationSequence *uint32 `db:"target_activation_sequence"`
// CorrelationKey 精确UTF8操作关联,新信号最多512字节,历史兼容764字节,保留尾部空格。
CorrelationKey string `db:"correlation_key"`
// Payload 版本化输入或事件内容;仅承载通用 JSON,不解释行业规则。
Payload core.JSON `db:"payload"`
// ActorID 经认证的操作主体标识,不能直接信任请求自报值。
ActorID string `db:"actor_id"`
// EvidenceRef 可选受控证据引用,最多512个无空白字符;平台不请求该地址。
EvidenceRef *string `db:"evidence_ref"`
// State 当前状态;只允许定义的状态转换并配合事务校验。
State SignalState `db:"state"`
// Disposition 稳定消费/拒绝分类;PENDING时为空,不记录原始错误或业务参数。
Disposition *string `db:"disposition"`
// AcceptedAt 信号可靠受理时间,不能用稍后的消费时间替代。
AcceptedAt time.Time `db:"accepted_at"`
// ExpiresAt 过期时间,统一 UTC;到期后的行为由对应资源策略决定。
ExpiresAt time.Time `db:"expires_at"`
// AvailableAt 未匹配信号下次到期检查时间;数据库故障只推迟检查,不延长原受理截止。
AvailableAt time.Time `db:"available_at"`
// ConsumedWaitID 消费该信号的等待记录;尚未消费时为空。
ConsumedWaitID *core.ID `db:"consumed_wait_id"`
}
func (Signal) TableName() string { return "weave_signals" }