feat: persist workflow signals and arbitrate poll completion
This commit is contained in:
@@ -19,20 +19,30 @@ type Signal struct {
|
||||
RequestDigest core.Digest `db:"request_digest"`
|
||||
// Type 事件或信号的稳定类型标识。
|
||||
Type string `db:"type"`
|
||||
// PayloadVersion 固定信号契约版本;为空仅表示不能参与新等待匹配的历史记录。
|
||||
PayloadVersion *string `db:"payload_version"`
|
||||
// TargetStepKey 信号目标步骤键,用于早到信号的后续匹配。
|
||||
TargetStepKey string `db:"target_step_key"`
|
||||
// CorrelationKey 外部业务操作关联键,防止旧信号误用于新工作。
|
||||
// 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"`
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ type Wait struct {
|
||||
SignalName *string `db:"signal_name"`
|
||||
// PayloadVersion 激活时冻结的信号内容契约版本;TIMER及待核实历史记录为空。
|
||||
PayloadVersion *string `db:"payload_version"`
|
||||
// WinnerSignalID 胜出的外部信号;时间或查询结果胜出时为空,须核对双向归属。
|
||||
WinnerSignalID *core.ID `db:"winner_signal_id"`
|
||||
// CorrelationKey 精确UTF8业务关联且保留尾部空格;新受理最多512字节,历史兼容764字节,TIMER为空串。
|
||||
CorrelationKey string `db:"correlation_key"`
|
||||
// DeadlineAt 等待截止时间,用可靠受理时间判断信号是否按时到达。
|
||||
|
||||
Reference in New Issue
Block a user