2016-11-21 8 views
0

В настоящее время я работаю над ролью «read_incident», которая должна позволить пользователям EES читать инциденты своей группы назначений.Servicenow Работа с ACL и бизнес-правилами для чтения Таблица инцидентов

Therefor я сделал следующее:

  • создал роль "read_incident"
  • отводилась роль в группе "Service Desk"
  • создал пользователя "Денис" и добавил его в «Service Desk "group
  • Изменено событие запроса Бизнес-правило с использованием addorcondition для включения моей роли" read_incident "для чтения инцидентов. (Теперь вы либо имеете «Итиль роли», или «read_incident» роль для чтения инцидентов.
  • создал ACL с динамическим фильтром, чтобы прочитать случаи, если группа присваивания одна из моих групп.

сейчас Я создал домашнюю страницу, используя указатель списка отчетов об инцидентах, которые назначены группе «Service Desk».

Как администратор Я вижу все инциденты, конечно. Но когда я выдавал себя за «Денис», отчеты о списке инцидентов «Нет записей для отображения»

Итак, ничто не блокирует меня от чтения инцидентов, но почему-то нет соответствия данных. Я попытался создать новый инцидент и назначить его «службе поддержки», но этот инцидент не отображается для пользователя «Денис».

То, что я не знаю до сих пор: - Бизнес правило 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

Можете ли вы предоставить сценарий бизнес-правила? – Joey

+0

Привет, Джо, я добавил свое правило. – RayofCommand

ответ

2

Ваш бизнес Правило неверно: gs.hasRole() метод возвращает true или false, вы не можете использовать метод addOrCondition(). Также есть ошибка в вашем предложении , если требуется, в конце условия необходимо другое «)».

Попробуйте следующее:

Бизнес Rule Condition

(!gs.hasRole("itil") || !gs.hasRole("read_incident")) && gs.isInteractive() 

Script

(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); 

Лучше использовать поле Условие, когда это возможно, повышает производительность. Я не уверен, соответствует ли сценарий бизнес-правил вашим потребностям, я думаю, вы должны проверить, является ли пользователь членом текущей группы assign_group, правильно?

+0

Да, вы правы, теперь это работает. – RayofCommand