feat: establish Orbit models, migrations and development baseline
This commit is contained in:
57
pulse/model/state.go
Normal file
57
pulse/model/state.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package model
|
||||
|
||||
// TaskState 表示任务状态,与执行尝试状态独立;任务终态不重新打开。
|
||||
type TaskState string
|
||||
|
||||
const (
|
||||
TaskWaiting TaskState = "WAITING" // 等待派发、延时或退避到期。
|
||||
TaskLeased TaskState = "LEASED" // 已领取但尚未获得开始授权。
|
||||
TaskRunning TaskState = "RUNNING" // 已授权处理器开始执行。
|
||||
TaskNeedsReview TaskState = "NEEDS_REVIEW" // 结果未知或需要人工核查。
|
||||
TaskSucceeded TaskState = "SUCCEEDED" // 业务处理器成功结果已保存。
|
||||
TaskFailed TaskState = "FAILED" // 已知失败且不再继续执行。
|
||||
TaskCancelled TaskState = "CANCELLED" // 取消已确认,不能理解为业务回滚。
|
||||
)
|
||||
|
||||
func (s TaskState) Terminal() bool {
|
||||
return s == TaskSucceeded || s == TaskFailed || s == TaskCancelled
|
||||
}
|
||||
|
||||
// CanTransitionTo 只检查状态图,不能代替数据库事务中的权限、版本、租约、
|
||||
// 暂停门控、副作用证据和重试预算校验。
|
||||
func (s TaskState) CanTransitionTo(next TaskState) bool {
|
||||
switch s {
|
||||
case TaskWaiting:
|
||||
return next == TaskLeased || next == TaskCancelled || next == TaskFailed
|
||||
case TaskLeased:
|
||||
return next == TaskRunning || next == TaskWaiting || next == TaskCancelled || next == TaskFailed
|
||||
case TaskRunning:
|
||||
return next == TaskSucceeded || next == TaskWaiting || next == TaskFailed || next == TaskNeedsReview || next == TaskCancelled
|
||||
case TaskNeedsReview:
|
||||
return next == TaskSucceeded || next == TaskFailed
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
type AttemptState string
|
||||
|
||||
const (
|
||||
AttemptLeased AttemptState = "LEASED"
|
||||
AttemptRunning AttemptState = "RUNNING"
|
||||
AttemptSucceeded AttemptState = "SUCCEEDED"
|
||||
AttemptFailed AttemptState = "FAILED"
|
||||
AttemptCancelled AttemptState = "CANCELLED"
|
||||
AttemptExpired AttemptState = "EXPIRED"
|
||||
AttemptUnknown AttemptState = "UNKNOWN"
|
||||
)
|
||||
|
||||
// RecoverySafety 表示恢复安全等级,空值或未知值默认需要核查。
|
||||
type RecoverySafety string
|
||||
|
||||
const (
|
||||
RecoveryIdempotent RecoverySafety = "IDEMPOTENT" // 接入方明确保证可幂等恢复。
|
||||
RecoveryReconcileOnly RecoverySafety = "RECONCILE_ONLY" // 恢复前必须查询结果或人工核查。
|
||||
)
|
||||
|
||||
func (s RecoverySafety) CanRecoverAutomatically() bool { return s == RecoveryIdempotent }
|
||||
Reference in New Issue
Block a user