Константы (постоянные переменные) в ALFA - PullRequest
0 голосов
/ 25 мая 2018

В рабочем проекте 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 константы или есть способ «эмулировать» их (может быть, функция, которая возвращает желаемое значение)?

1 Ответ

0 голосов
/ 26 мая 2018

Еще нет!Это определенно особенность, которую мы хотим иметь.У нас были похожие запросы, так что следите за обновлениями.

...