跳到主要内容

MOU数据权限组件

MOU数据权限组件(Mou)用于为后续的数据查询组件开启 MOU 数据权限过滤。

概念说明

本文档是 平台接口 概念的具体配置说明。建议先阅读平台接口概念,了解整体架构。

概述​

MOU数据权限组件用于限定后续数据查询的数据范围,属于行级过滤(行级数据权限、权限过滤)能力。开启后,该组件之后的所有数据查询操作都会启用 MOU 数据权限过滤,可有效实现数据隔离与动态权限控制。

本组件作用于接口编排链路,按接口节点逐个配置;对象设置中还有一份对象数据权限(对象级 MOU 配置),两者同时生效时以本组件为准。参见 MOU 数据权限(对象)。

配置项​

配置项说明
开启MOU数据权限过滤开启后,该组件后续的所有数据查询操作将启用MOU数据权限过滤
权限模式数据权限过滤模式,开启后必填,缺省为「系统默认」
操作对象权限模式为「某人员字段值」类时配置,指定后续操作的数据对象,必填
匹配字段权限模式为「某人员字段值」类时配置,指定用于与当前登录人比对的人员字段,必填

权限模式取值​

界面名称值(MouType)说明
系统默认(基于组织架构+数据权限)0用户所在组织 + 用户所在组织的所有下级组织 + 用户作为组织负责人的组织及下级组织 + 用户拥有身份配置的 MOU 组织,缺省值
当前登录人创建的数据1仅返回当前登录人创建的数据
当前登录人编辑的数据2仅返回当前登录人编辑的数据
当前登录人创建或编辑的数据3仅返回当前登录人创建或编辑的数据
当前登录人所在组织的数据10仅返回当前登录人所在组织的数据
某人员字段值=当前登录人的数据40数据中某人员字段值等于当前登录人
某人员多选字段值包含当前登录人的数据41数据中某人员多选字段包含当前登录人

「操作对象」与「匹配字段」仅在权限模式为 40 / 41 时显示,「匹配字段」的可选项限定为该操作对象中的人员类型字段。

使用说明​

提示
  • 该组件一般搭配其他查询组件使用,用于限定后续组件的数据查询范围
  • 该组件的优先级高于对象中的 MOU 数据权限配置

使用场景​

  • 动态权限控制
  • 数据隔离
  • 敏感数据保护

下一步​

属性明细​

以下内容面向技术实现与 AI 检索,说明 MOU数据权限组件的节点元数据。

节点元数据​

MOU数据权限组件由 FlowCmpType.Mou 标识:

属性名类型含义取值/存储值
typestring组件类型固定为 "Mou"
Enablestring(bool)是否开启数据权限过滤"true"(缺省)/ "false"
MouTypestring权限模式"0" / "1" / "2" / "3" / "10" / "40" / "41",缺省 "0"
MetaObjectIdstring(GUID)操作对象MouType 为 "40" / "41" 时使用
Fieldstring匹配字段MouType 为 "40" / "41" 时使用,人员类型字段
orderstring同级排序例:"4"

元数据存储示例​

{
"ID": "mou1",
"type": "Mou",
"Enable": "true",
"MouType": "40",
"MetaObjectId": "3f9c0b2e-2d3a-4e6f-9c11-0f7a5b8d2e10",
"Field": "owner",
"order": "4"
}

数据源​

「操作对象」与「匹配字段」下拉分别通过 POST /api/DataSource/GetMetaObjectDataSource、POST /api/DataSource/GetMetaFieldDataSource 获取。

服务端执行逻辑​

MOU 数据权限组件由 MouComponentManager(继承 InterfaceComponentManagerBase)实现,组件类型为 FlowComponentTypeEnum.Mou。

节点 meta 中的所有值均以字符串存储,服务端统一通过 SafeGet("Key") 读取字符串。

执行时机与场景​

组件读取配置后,把 MOU 过滤条件注入上下文,供其后的数据查询类组件使用。

输入参数(meta 键)​

键读取方式含义
Enablemeta.SafeGet("Enable")是否开启,必须能解析为 bool
MouTypemeta.SafeGet("MouType") ?? "0"权限模式
MetaObjectIdmeta.SafeGet("MetaObjectId")MouType 为 40 / 41 时的操作对象
Fieldmeta.SafeGet("Field")MouType 为 40 / 41 时的匹配字段

执行步骤​

  1. Enable 无法解析为 bool 时抛出异常。
  2. 写入 context.MouEnabled = enableB。
  3. 开启时调用 permissionService.GetMouFilterAsync(mouType, field, null)(第三个参数 mouInterfaceId 本组件传 null)得到过滤条件,赋给 context.MouFilter。
  4. 调用 ExecuteNextAsync 继续下游。

GetMouFilterAsync 按 MouType 构造 DynamicFilter:

MouType过滤条件
1createdby = 当前登录人
2modifiedby = 当前登录人
3createdby = 当前登录人 OR modifiedby = 当前登录人
10organization = 当前登录人所在组织
40Field = 当前登录人
41Field 包含 当前登录人
50Field in 自定义数据权限接口返回值(本组件不传接口 Id,界面亦不提供此模式)
60_id = 不存在的 Id(禁止查询)
0 / 默认基于组织架构(当前用户为根组织时不过滤)

输出与上下文​

字段说明
context.MouEnabledbool?,是否启用 MOU 过滤
context.MouFilterDynamicFilter,供下游数据查询组件按 AND 组合使用

该组件设置的 MOU 过滤优先级高于实体对象上的默认 MOU 配置。

权限、安全与限制​

  • 组件自身不做操作权限校验;基类提供 GetSkipMouPermission(读取 DicParam 中的跳过标记)与 GetSkipOperationPermission(读取 meta 或 DicParam 中的跳过标记)。
  • MouType 为 40 / 41 时,匹配字段界面限定为人员类型字段。

异常与校验​

  • Enable 非法:MOU 开关字段设置错误。
  • MouType 为 40 / 41 且 MetaObjectId 为空:操作对象未找到;对象不存在:按 Id 未找到对象。
  • MouType 为 40 / 41 且 Field 为空:匹配字段设置错误。

检索关键词与相关概念​

本组件在平台中也称为:组件级 MOU 数据权限、接口级数据权限、行级数据权限、行级过滤、权限过滤、数据权限过滤、数据范围限定。相关概念包括数据隔离、动态权限控制、组织架构权限与 MOU 过滤条件(MouFilter)。

对象维度的同类配置见 MOU 数据权限(对象)。