Опять же, отличные вопросы.Да, я часто использую атрибут искусственный , например, resourceType
, и сравниваю его со значениями, например, medical record
или transaction
.Вам не нужно этого делать, потому что сами идентификаторы атрибутов передают тот факт, что вы имеете дело с тем или иным.Тем не менее, я думаю, что это помогает политике быть более читабельной.
В связи с другой проблемой: как убедиться, что атрибут имеет хотя бы одно значение.В элементе Target вы можете использовать тег mustBePresent
, но он мне не нравится.Если атрибут не имеет значения, то PDP возвращает Indeterminate
, и это приводит к короткому замыканию оценки.
Альтернативой является сравнение атрибута с использованием> (больше чем).Например:
clause user.role > ""
clause user.age>0
Это приведет к определению значения.
Очистительспособ сделать это, однако, это использовать функции bag внутри условия.Например,
condition stringBagSize(user.role)>0 // True if the user has at least one role