ALFA中的常量(常数变量)

Constants (constant variables) in ALFA

2015 年 3 月 10 日的 ALFA OASIS 工作草案 01 (alfa-for-xacml-v1.0-wd01) 谈到了常量值

3.15 Constant Values

Constant values can appear in the policy expressions. ALFA supports constants of type strings, integers, doubles and Booleans directly. Strings are quoted with single or double quotes. Integers consist of a number and optionally a minus sign. Double consists of a number with a decimal dot and optionally a minus sign. Booleans consist of the value true and false, without quotes. Other datatypes are represented using a string followed by a colon and the name of the datatype..

这意味着,您可以使用该示例中的常量值(而 report 是常量值):

target clause requestedType == "report"

但问题是,一旦 ALFA 文件变大并且您将常量值 report 写满了,您可能希望将常量值更改为 my.company.attributes.medicalReport。为此,您必须查找并替换所有出现的常量值。

因此(为了避免冗余)constants 已经在其他语言中发明,您可以在其中定义 smth。喜欢

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 是否支持常量或者有没有办法“模拟”它们(可能是 returns 所需值的函数)?

还没有!这绝对是我们想要的功能。我们也有类似的要求,敬请期待。