pub struct DefinitionRegistry { /* private fields */ }Expand description
业务作用:持有本进程可驱动的全部 workflow definition,按 (名称, 定义版本) 索引。
注册表只在启动阶段构建(register 全部完成后再交给 Orchestrator),运行期只读,
因此无内部锁;定义演进并存表示同名 workflow 注册多个版本。
Implementations§
Source§impl DefinitionRegistry
impl DefinitionRegistry
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
业务作用:判断当前快照是否没有任何流程定义,供动态 Catalog 空启动与静态模式门禁区分。
参数说明: 无。
返回:没有已注册定义时返回真。
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
业务作用:读取当前不可变快照中的定义数量,供启动报告与 Catalog generation 核对。
参数说明: 无。
返回:按 (workflow, definition_version) 去重后的定义数量。
Sourcepub fn definitions(&self) -> impl Iterator<Item = &WorkflowDefinition>
pub fn definitions(&self) -> impl Iterator<Item = &WorkflowDefinition>
业务作用:按稳定键顺序遍历当前快照的全部流程定义,供发布器生成完整 definition seal。
参数说明: 无。
返回:以 workflow 名称、定义版本排序的定义迭代器。
Sourcepub fn definitions_with_tenants(
&self,
) -> impl Iterator<Item = (Option<&str>, &WorkflowDefinition)>
pub fn definitions_with_tenants( &self, ) -> impl Iterator<Item = (Option<&str>, &WorkflowDefinition)>
业务作用:连同可选租户作用域遍历全部定义,供动态 capability 路由保持租户边界。
参数说明: 无。
返回:静态全局定义的租户为空,动态 Catalog 定义携带其规范租户。
Sourcepub fn register(&mut self, definition: WorkflowDefinition) -> Result<()>
pub fn register(&mut self, definition: WorkflowDefinition) -> Result<()>
业务作用:注册一个已通过构造预检的 definition,同一版本重复注册按摘要裁决。
参数说明:
definition: 待注册的流程定义。
返回:解决模式已具备 hosted 闭环且新增或摘要一致时返回 Ok;Callback/Manual
或同 (workflow, version) 摘要不一致返回错误,不允许带不完整合同启动。
Sourcepub fn register_for_tenant(
&mut self,
tenant: TenantId,
definition: WorkflowDefinition,
accepts_new: bool,
) -> Result<()>
pub fn register_for_tenant( &mut self, tenant: TenantId, definition: WorkflowDefinition, accepts_new: bool, ) -> Result<()>
业务作用:为一个租户登记 active 或 deprecated definition,使新实例门禁与在途实例装载分离。
参数说明:
tenant:定义适用的租户身份。definition:已经通过构造校验的不可变流程。accepts_new:active 为真,deprecated 为假。
返回:首次登记或同键同摘要同状态时成功;任何原地内容或生命周期漂移返回错误。
Sourcepub fn get(
&self,
workflow: &WorkflowName,
version: DefinitionVersion,
) -> Option<&WorkflowDefinition>
pub fn get( &self, workflow: &WorkflowName, version: DefinitionVersion, ) -> Option<&WorkflowDefinition>
业务作用:按名称与定义版本查找 definition,供推进裁决使用实例固定的内容。
参数说明:
workflow: workflow 名称。version: definition 版本。
返回:存在返回定义引用;不存在返回 None。
Sourcepub fn get_for_tenant(
&self,
tenant: &TenantId,
workflow: &WorkflowName,
version: DefinitionVersion,
) -> Option<&WorkflowDefinition>
pub fn get_for_tenant( &self, tenant: &TenantId, workflow: &WorkflowName, version: DefinitionVersion, ) -> Option<&WorkflowDefinition>
业务作用:按租户优先读取运行期 definition,并为静态全租户定义保留兼容回退。
参数说明:tenant、workflow 与 version 共同定位实例冻结的流程合同。
返回:存在租户专属或全局静态定义时返回引用;否则为空。
Sourcepub fn get_for_start(
&self,
tenant: &TenantId,
workflow: &WorkflowName,
version: DefinitionVersion,
) -> Option<&WorkflowDefinition>
pub fn get_for_start( &self, tenant: &TenantId, workflow: &WorkflowName, version: DefinitionVersion, ) -> Option<&WorkflowDefinition>
业务作用:只返回当前允许创建新实例的租户 definition,deprecated 合同仍可供旧实例收敛。
参数说明:tenant、workflow 与 version 定位调用方请求的流程版本。
返回:active 租户定义或静态全局定义存在时返回引用;未知、deprecated 或 retired 时为空。
Sourcepub async fn verify_non_terminal<S>(
&self,
store: &S,
scan_limit: u32,
) -> Result<()>where
S: SagaInstanceStore,
pub async fn verify_non_terminal<S>(
&self,
store: &S,
scan_limit: u32,
) -> Result<()>where
S: SagaInstanceStore,
业务作用:启动预检——校验全部非终态实例引用的 definition 可用且摘要一致。
缺失或摘要漂移时必须拒绝 Ready 而不是带病启动:用新内容驱动旧实例会让补偿 顺序、身份派生与冻结计划全部失真。
参数说明:
store: Saga store。scan_limit: 单次扫描的非终态实例上限。
返回:全部一致返回 Ok;任一实例缺 definition 或摘要不一致返回聚合错误
(只含 workflow/version 计数,不回显业务键)。