В рабочем проекте OASIS 01 для ALFA (alfa-for-xacml-v1.0-wd01) от 10 марта 2015 г. говорится о постоянных значениях
3.15 Постоянные значения
Постоянные значения могут появляться в выражениях политики.ALFA напрямую поддерживает константы строк типа, целых, двойных и логических значений.Строки заключаются в одинарные или двойные кавычки.Целые числа состоят из числа и, возможно, знака минус.Двойник состоит из числа с десятичной точкой и, возможно, знака минус.Логические значения состоят из значений true и false, без кавычек.Другие типы данных представлены в виде строки, за которой следует двоеточие и имя типа данных.
Это означает, что вы можете использовать постоянные значения, как в этом примере (в то время как report
является константойзначение):
target clause requestedType == "report"
Но дело в том, что как только файлы ALFA растут, и вы все время записали постоянное значение report
, вы можете захотеть изменить постоянное значение, скажем, my.company.attributes.medicalReport
.Для этого вам нужно найти и заменить все вхождения значения константы.
Поэтому (во избежание избыточности) constants
были изобретены на других языках, где вы определяете что-то.как
const string REPORT_TYPE = "my.company.attributes.medicalReport"
или даже более производительный:
const integer REPORT_TYPE_ID = 3
или даже более элегантный:
const enum SUBJECT_TYPES { PATIENT, USER, EXAM, REPORT }
После определения этих констант я мог бы написать свою цель следующим образом:
target clause requestedType == REPORT_TYPE_ID
Поддерживает ли ALFA константы или есть способ «эмулировать» их (может быть, функция, которая возвращает желаемое значение)?