用途 本技能面向 ServiceNow 平台的域分离(Domain Separation)配置工作,用于通过划分域(domain)在多个租户之间对数据与流程进行多租户隔离。它覆盖从域层级设计到用户成员关系、查询过滤、表级配置、域切换及 MSP 租户开通的完整配置参考。
主要能力
- 域架构:以 TOP(全局域)为根,向下建立客户域(如 Domain A、Domain B)及其子域(A1、A2、B1),形成域层级。
- 关键表:涉及 domain(域定义)、sys_user_has_domain(用户域成员关系)、domain_path(域层级路径)、sys_db_object(表域设置)以及表 records 中的 sys_domain、sys_domain_path 字段。
- 域配置:创建域(名称、描述、父域、active 状态)。
- 域感知查询:在启用域分离时自动将记录过滤为用户可见域;查询结果包含 sys_id、sys_domain、sys_domain_path。
- 跨域访问:通过 queryNoDomain 等机制在需要提升权限时跨域查询记录,并返回 domain 显示值。
- 用户域成员关系:将用户分配到域(可设 primary)、查询用户可访问域列表。
- 域分离表配置:在 sys_db_object 中启用 domain_separated,并设置 domain_id_type 为 simple(记录归属单一域)或 containment(记录对父域可见);在指定域中创建记录。
- 域选择器:获取当前用户可用的域(按 primary 优先、再按名称排序),并标记当前域;切换当前会话域前校验用户是否有权访问该域。
- 域可见性规则:检查记录在当前域上下文中是否可见;获取从当前域到根域的完整层级路径。
- MSP/托管服务模式:提供租户开通(onboardTenant)示例,创建租户域、租户管理员用户、分配域成员关系与租户管理员角色。
- MCP 工具集成:snow_query_table 查询域感知数据、snow_execute_script 测试域脚本、snow_artifact_manage(action='find')查找域配置;资料中给出查询 domain、sys_user_has_domain、sys_db_object 的示例工作流。
使用方式 资料中的示例均为 ServiceNow 服务端脚本(GlideRecord、GlideRecord.setValue、gs.getUserID、gs.getSession 等 API),并明确标注仅支持 ES5,不使用现代 JavaScript 语法。表级域分离配置资料注明通常通过 UI 完成,脚本仅供参照。MCP 工具部分通过异步调用传入 table、query、fields 等参数。
适用场景 适用于需要为多个客户或业务单元在 ServiceNow 中实现数据与流程隔离的 MSP/托管服务场景,以及需要规划域层级、管理用户域访问、进行域感知或跨域查询、配置域分离表和域选择器的管理场景。
限制与注意事项 资料指出:应预先规划域层级再实施;只创建必要的域;按最小必要分配用户域访问;使用域选择器进行测试;共享数据保留在 TOP 域;域查询会增加性能开销;应记录各域用途;示例脚本仅限 ES5 语法。资料的说明与代码片段未提供具体价格、部署平台兼容版本或效果数据,这些内容暂未提供。