1

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

3.15 常数值

常量值可以出现在策略表达式中。ALFA 直接支持字符串、整数、双精度和布尔类型的常量。字符串用单引号或双引号引起来。整数由一个数字和一个可选的减号组成。Double 由一个带小数点的数字和可选的减号组成。布尔值由值 true 和 false 组成,不带引号。其他数据类型使用后跟冒号和数据类型名称的字符串表示。

这意味着,您可以使用该示例中的常量值(虽然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 是否支持常量或者有办法“模拟”它们(可能是返回所需值的函数)?

4

1 回答 1

1

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

于 2018-05-25T21:06:54.530 回答