我目前正致力于一个名为“read_incident”的角色,该角色应允许EES用户阅读其任务组的事件。
因此我做了以下事情:
现在我使用一个指向“服务台”组的事件列表报告来建立一个主页。
作为管理员,我当然可以看到所有事件。但是,当我冒充“Denis”时,事件列表会报告以下“无记录显示”
所以没有什么能阻止我阅读事件,但不知何故没有数据匹配。 我尝试创建一个新事件并将其分配给“服务台”,但用户“Denis”仍然无法看到此事件。
直到现在我所知道的: - 业务规则100%正常,因为没有“数据被阻止” - 我可以查询事件表
业务规则:
if (!gs.hasRole("itil").addOrCondition(!gs.hasRole("read_incident") && gs.isInteractive()) {
var u = gs.getUserID();
var qc = current.addQuery("caller_id", u).addOrCondition("opened_by", u).addOrCondition("watch_list", "CONTAINS", u);
gs.print("query restricted to user: " + u);
}
答案 0 :(得分:2)
您的业务规则不正确: gs.hasRole()方法返回true或false,您不能使用方法 addOrCondition()。 if 句子中也有错误,在条件结束时需要另一个“)”。
尝试以下方法:
业务规则条件
(!gs.hasRole("itil") || !gs.hasRole("read_incident")) && gs.isInteractive()
<强>脚本强>
(function executeRule(current, previous /*null when async*/) {
var u = gs.getUserID();
current.addQuery("caller_id", u).addOrCondition("opened_by", u).addOrCondition("watch_list", "CONTAINS", u);
})(current, previous);
最好尽可能使用Condition字段,它可以提高性能。我不确定业务规则脚本是否满足您的需求,我认为您应该检查用户是否是当前赋值组的成员,对吧?