根据官方wiki page,用户标准记录可能包含一组特定的用户,组,角色,部门....
我的问题是,我是否必须根据用户标准对用户进行手动检查,例如:
或者是否有开箱即用的东西为我执行这些检查?我想应该有一些方法,但我在官方维基或文档中找不到任何相关的东西
因此,有一个内置函数可以获取当前登录用户可用的所有用户条件记录的ID:
SNC.UserCriteriaLoader.getAllUserCriteria()
上面的函数返回ArrayList<String>
类型的对象,因此您可以通过以下方式检查此对象中是否存在目标用户条件:SNC.UserCriteriaLoader.getAllUserCriteria().contains(user_criteria_sys_id)
这解决了我的问题,我怎么还不知道是否有一些接受用户id作为参数的通用方法
我相信您正在寻找的是Match All复选框,请查看http://wiki.servicenow.com/index.php?title=User_Criteria#Matching_All上的文档
如果取消选中此框,则会检查用户是否匹配条件的任何部分。
如果选中此框,则需要匹配所有条件。
示例1 - 未选中匹配全部
在此示例中,未选中“全部匹配”,如果用户满足以下任何条件,则它们是此“用户标准”的一部分。
User in role: Asset
or
User in company: ACME EMEA
or
User in department: Development
示例2 - 选中Match All
在此示例中,将选中“匹配所有”,并且用户必须满足以下所有条件,它们才是此用户标准的一部分。
User in role: Asset
and
User in company: ACME EMEA
and
User in department: Development
除了SNC.UserCriteriaLoader.getAllUserCriteria()
,还有另一种更通用的方法:
SNC.UserCriteriaLoader.getUserCriteria(userId)
它似乎返回指定用户的匹配用户标准(ArrayList<String>
)列表。例如。
SNC.UserCriteriaLoader.getUserCriteria(gs.getUserID())
和
SNC.UserCriteriaLoader.getAllUserCriteria()
返回相同的结果。