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 所需值的函数)?
还没有!这绝对是我们想要的功能。我们也有类似的要求,敬请期待。
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 所需值的函数)?
还没有!这绝对是我们想要的功能。我们也有类似的要求,敬请期待。