Проверка того, что в поле разрешения записи в двух разных приложениях в RSA Archer нельзя выбирать одинаковых пользователей
У меня есть 2 приложения, элементы управления и тесты.
Приложение Controls имеет перекрестную ссылку приложения Tests.
Приложение Controls имеет поле "Разрешение на запись" "Владелец управления". Приложение "Тесты" имеет поле "Разрешение на запись" "Исполнитель теста".
Я должен проверить эти поля так, чтобы:
Владелец элемента управления и исполнитель теста не могут быть одним и тем же пользователем / группой.
Система не должна позволять выбирать Пользователя в качестве "Владельца элемента управления", если пользователь указан в качестве "Исполнителя теста" для любого из связанных тестов в элементе управления.
Аналогичным образом, Система не должна позволять выбирать Пользователя в качестве "Исполнителя теста", если пользователь указан в качестве владельца элемента управления для любого из связанных элементов управления для теста.
Я попытался добавить вычисляемое поле, которое дало бы мне флаг, указывающий, являются ли выбранные пользователи одинаковыми или нет.
Пожалуйста помоги!
3 ответа
Tanveer, я думаю, что описанный вами сценарий нельзя настроить в Archer с использованием доступных функций. По крайней мере, я не могу придумать решение, основанное на моем опыте работы с платформой Archer. Проблема в том, что Archer не позволяет динамически вычислять или фильтровать списки пользователей или выборки перекрестных ссылок. И это то, что вам действительно нужно в этом случае.
Я могу предложить следующие обходные пути, хотя. Я не люблю их обоих, но иногда приходится идти на компромисс.
Вы можете создать ежедневный / еженедельный / ежемесячный запланированный отчет. Кто-то из бизнеса получит его, показывая список записей, где имена пользователей / группы совпадают друг с другом в приложениях Controls и Test. Бизнес-пользователь будет следить и решать все проблемы вручную.
Вы можете реализовать эту функцию с помощью пользовательского объекта, управляющего выбором пользователя в приложениях Controls и Test. Таким образом, вам понадобятся два пользовательских объекта.
[a] Вам нужно вычисляемое поле, которое будет копировать значение выбранных пользователей через перекрестную ссылку.
[b] Пользовательский объект скрывает это поле от конечного пользователя, устанавливая атрибут display = none.
[c] Пользовательский объект должен будет переопределить кнопки "Сохранить" и "Применить" таким образом, чтобы он обеспечивал проверку выбранных пользователей / групп и сравнивал их со скрытым вычисляемым полем, где пользователи / группы из указанной записи хранятся. Если в списке есть хотя бы один общий объект, вы можете уведомить конечного пользователя и заставить его исправить его, прежде чем запись будет сохранена.
[d] Обратите внимание, что вычисленное поле не будет работать, пока запись не будет сохранена. Это означает, что если новая запись добавляется через список "Добавить новый", предоставленный полем перекрестной ссылки, вам нужно будет создать объект cookie в веб-браузере в пользовательском объекте 1 и прочитать его с помощью пользовательского объекта 2 (и наоборот). Cookie сохранит выбранных пользователей / группы в форме 1, а пользовательский объект в форме 2 прочитает его и решит, правильно ли выбран конечный пользователь в форме 2.
Это сложный двусторонний пользовательский объект (два пользовательских объекта должны будут "общаться" друг с другом). Я уже реализовывал подобное поведение с передачей файлов cookie между пользовательскими объектами ранее, но я рекомендую вам избегать подобных решений, если это возможно. Их сложно кодировать, сложно отлаживать и сложно поддерживать.
В этом случае вы все еще можете использовать запланированный отчет для контроля целостности данных.
Я надеюсь, что это помогает в некоторой степени. Удачи!
Недавно я нашел рабочий подход, решение состоит в том, чтобы создать скрытое поле вне макета и сделать его обязательным только тогда, когда два поля разрешений записи совпадают
У меня есть другое решение для этого, пожалуйста, посоветуйте, сработает ли это... Я создам вычисляемое поле с именем ControlEqualsTest и получит значение True, если группа пользователей в Control равна группе пользователей в Test. Во время отправки / сохранения / применения, если ControlEqualsTest равен True, произойдет сбой отправки / сохранения / применения с сообщением об ошибке.