过程 - 预先验证
本节将介绍应该针对预先验证相关的各个操作执行的步骤。
区分预先验证状况
实现基于角色的预先验证
有关其他步骤,请参阅:
区分预先验证状况
根据您正在验证操作还是属性,从筛选器或验证器返回的验证状况将有所不同。本节介绍用于确定在特定情况下将返回的验证状况的规则和最佳做法。
操作预先验证状况
验证服务和客户端基础结构当前支持三种预先验证操作状况:“启用”、“禁用”和“隐藏”。正如您所猜想的,“启用”状况表示该操作对用户可见且可供用户选择。“禁用”状况表示该操作对用户可见,但不可选择 (即,操作为“灰显”)。“隐藏”状况表示该操作对用户根本不可见。请注意,当前不支持以图标方式呈现“禁用”操作 (例如,在表格标题或表格行中)。如果验证服务针对某一操作图标返回“禁用”状况,则客户端基础结构将仅隐藏操作图标。
无论您是要实现筛选器还是验证器来执行预先验证逻辑,您都会希望将验证状况 (直接或封装在验证结果中) 返回到验证服务。(如果实现解决方案组,则验证服务会自动针对被该解决方案组认定为无效的所有组件分配“隐藏”状况。)
当尝试选取要从验证器或筛选器中返回的状况时,请使用以下经验规则:
启用的一侧始终会出错。如果您无法最终确定某一操作是否应设为可用,则将其指定为启用状况。如果存在更多可禁用或拒绝该用户的上下文信息,则可能会在该行 (无论是其他筛选器、验证器还是选择后验证) 下执行附加验证。最好向用户展示其无法执行的操作,而不是隐藏其应该能够执行的操作。
当尝试在隐藏和禁用之间进行选择时,请首先考虑该操作是否可能会在当前上下文中对用户显示。如果答案为是,则应将状况设置为禁用。例如,“检出”操作对于当前已检出的对象无效。但是,如果此对象尚未检出,则用户可以使用“检出”操作。在此情况下,禁用状况更合适。但是,假设某一操作仅供管理员用户使用,而您的用户不是管理员用户。在此情况下,操作将无法用于该用户,因此应将其设置为隐藏状况。
属性预先验证状况
验证服务和客户端基础结构当前支持对预先验证属性进行四种状况:“隐藏”(ATTR_HIDDEN)、“隐藏值”(ATTR_HIDDEN_VALUE)、“只读”(ATTR_READ_ONLY) 和“可见”(ATTR_VISIBLE)。
“隐藏”状况表示属性的名称和值始终不会显示在用户界面中。“隐藏值”状况表示将显示属性的名称,而不会显示其值。“只读”状况用于指示将显示属性的名称和值,但该用户无法对值进行修改。“可见”状况用于指示将显示属性的名称和值,并且当值在表单或向导中可用时,用户可对其进行修改。
要确定在特定条件下适用于您的属性的状况,您可能需要向客户、产品经理等寻求阐释。实际上没有适用于所有属性的通用规则。
您可能会回忆起单个筛选器可应用于多个操作和属性。因此,您可能想知道筛选器同时应用于操作和属性时应返回哪种状况。在这些情况下,将使用为操作保留的状况 (“启用”、“禁用”和“隐藏”)。客户端基础结构会将“启用”视为“可见”,将“禁用”视为“只读”,将“隐藏”视为“隐藏”。
将验证器应用于表中的某一属性时,系统会将该验证器应用于整个列。属性的验证器不能应用于单个单元格。对于任意列,系统会将限制性最强的状态赋予整个列。例如,如果一个单元格为“只读”,另一单元格为“隐藏”,则整个列的状态将设为“隐藏”。
实现基于角色的预先验证
验证服务执行的第二个预先验证检查是调用基于角色的 UI 服务,以查看管理员用户是否配置了需要对某些用户隐藏或禁用的组件。此检查在验证服务中构建,因此定制者不需要进行任何工作。有关将基于角色的 UI 服务配置为管理员用户的详细信息,请参阅自定义基于角色的 UI 功能 - 操作可见性
这对您有帮助吗?