You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YANG建模语言bits类型如何实现选中单选项自动取消其余位的互斥效果

YANG bits类型互斥选中效果实现方案

YANG标准中bits类型原生支持多bit位同时选中,没有内置自动取消其他位的互斥逻辑,你需要实现的「Whole-platform与其他位二选一」的效果,可通过以下两种方案实现:

  • 方案1:保留bits类型,新增must约束做合法性校验
    该方案可以在不改动原有数据类型的前提下,限制用户提交非法的同时选中配置,违反规则的配置会被服务端直接拦截报错,参考实现代码如下:

    leaf check-type {
        type bits {
            bit Whole-platform;
            bit NSO-checks;
            bit ESC-checks;
        }
        default "Whole-platform";
        // 新增约束:禁止同时选中Whole-platform和其他任意位
        must "not (bits-is-set(., 'Whole-platform') and count(bits-all-set(.)[. != 'Whole-platform']) > 0)" {
            error-message "Whole-platform cannot be selected together with other check types";
        }
    }
    

    注意:该方案仅做校验,不会自动修改配置。要实现「选中某类后自动取消其他位」的交互效果,需要在上层客户端/网管平台的配置提交逻辑中增加预处理:如果检测到提交的配置包含Whole-platform,就自动清空其他位;如果提交的配置包含其他位且没有指定保留Whole-platform,就自动清除Whole-platform位后再提交给服务端。如果你的业务允许同时选中多个非Whole-platform的位,该方案更为适配。

  • 方案2:替换为enumeration枚举类型(适配纯单选场景)
    如果你的需求本质是同一时间只能选择一种检查类型,直接将bits类型替换为枚举类型是成本最低的方案,YANG原生支持单选逻辑,选中新值会自动覆盖旧值,完全符合你的预期效果,不需要额外开发约束和业务逻辑,参考实现代码如下:

    leaf check-type {
        type enumeration {
            enum Whole-platform;
            enum NSO-checks;
            enum ESC-checks;
        }
        default Whole-platform;
    }
    

内容的提问来源于stack exchange,提问作者marhyno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 04:12:04