39 lines
1.8 KiB
Go
39 lines
1.8 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
|
||
core "git.yuntuo.hk/k2safe/orbit/model"
|
||
)
|
||
|
||
// Wait 表示可恢复的信号或时间等待,不长期占用业务 Worker。
|
||
// 对应表 weave_waits;这是服务端持久化模型,不直接作为 API 响应。
|
||
type Wait struct {
|
||
// Record 包含命名空间、记录标识、并发版本和 UTC 时间。
|
||
core.Record
|
||
// WorkflowID 所属流程实例标识。
|
||
WorkflowID core.ID `db:"workflow_id"`
|
||
// ActivationID 所属步骤激活,区分旧轮次和人工恢复后的新轮次。
|
||
ActivationID core.ID `db:"activation_id"`
|
||
// Kind 节点或等待类型,决定由哪类推进规则处理。
|
||
Kind string `db:"kind"`
|
||
// State 当前状态;只允许定义的状态转换并配合事务校验。
|
||
State WaitState `db:"state"`
|
||
// SignalName 激活时冻结的信号名称;TIMER及待核实历史记录为空。
|
||
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 等待截止时间,用可靠受理时间判断信号是否按时到达。
|
||
DeadlineAt time.Time `db:"deadline_at"`
|
||
// WakeTaskID 内部定时唤醒任务;无需定时唤醒时为空。
|
||
WakeTaskID *core.ID `db:"wake_task_id"`
|
||
// ResolvedAt 等待或查询节点结清的时间;尚未结清时为空。
|
||
ResolvedAt *time.Time `db:"resolved_at"`
|
||
}
|
||
|
||
func (Wait) TableName() string { return "weave_waits" }
|