2015年3月10日的ALFA(alfa-for-xacml-v1.0-wd01)的OASIS工作草案01说明了常数值
3.15常量值
常量值可以出现在策略表达式中。 ALFA支持字符串,整数,类型的常量, 双打和布尔直接。字符串引用单个或 双引号。整数由数字和可选的减号组成 标志。 Double由带小数点的数字和可选的a组成 减号。布尔值由真值和假值组成,没有 引号。其他数据类型使用字符串后跟a表示 冒号和数据类型的名称..
这意味着,您可以使用该示例中的常量值(而report
是常量值):
target clause requestedType == "report"
但问题是,一旦ALFA文件增长并且您已经编写了常量值report
,您可能希望将常量值更改为let {}} 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是否支持常量或者是否有“模拟”它们的方法(可能是返回所需值的函数)?
答案 0 :(得分:1)
还没有!这绝对是我们想要的功能。我们有类似的要求,请继续关注。