4.3. FEEL 中的规则表达式
友好的表达式语言(FEEL)是对象管理组(OMG)DMN 规范定义的表达式语言。FEEL 表达式在 DMN 模型中定义决策的逻辑。FEEL 旨在通过为决策模型构造分配语义来促进决策建模和执行。FEEL 表达式在决策要求图(DRDs)中占用表单元单元格,用于决策节点和商业知识模型。
有关 DMN 中的 FEEL 的更多信息,请参阅 OMG Decision Model 和 Notation 规格。
4.3.1. FEEL 中的数据类型 复制链接链接已复制到粘贴板!
友好的表达式语言(FEEL)支持以下数据类型:
- 数字
- 字符串
- 布尔值
- 日期
- Time
- 日期和时间
- 天数和时间持续时间
- 多年和月的时间
- Functions
- 上下文
- 范围(或间隔)
- 列表
DMN 规范目前不提供将变量声明为 功能、
列表的显式方法,但 Red Hat Decision Manager 会将 DMN 内置类型扩展为支持这些类型的变量。上下文
、范围或
以下列表描述了每种数据类型:
- 数字
FEEL 中的数字基于 IEEE 754-2008 年 12 月 128 格式,有 34 个数字的精度。在内部,数字在 Java 中表示为
MathContext DECIMAL128
。https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.htmlFEEL 只支持一个数字数据类型,因此同一类型用于表示整数和浮点号。
FEEL 编号使用点(
.
)作为十进制分隔符。FEEL 不支持-INF
、+INF
或NaN
。FEEL 使用null
来代表无效的数字。Red Hat Decision Manager 扩展 DMN 规格并支持额外的数字标记:
-
Scientific: 您可以使用带有后缀
e<exp>
或E<exp>
的科学标记。例如,1.2e3
与编写表达式1.2*10**3
相同,但是一个字面上的值,而不是表达式。 -
十六进制 : 您可以使用带有前缀
0x
的十六进制数字。例如:0xff
与十进制数字255
相同。支持大写字母和小写字母。例如:0XFF
与0xff
相同。 -
类型后缀: 您可以使用类型后缀
f
、F
、d
、D
、l
和L
。这些后缀会被忽略。
-
Scientific: 您可以使用带有后缀
- 字符串
FEEL 中的字符串是任意字符序列,用双引号括起。
示例
"John Doe"
"John Doe"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 布尔值
-
FEEL 使用三值布尔逻辑,因此布尔值逻辑表达式可以有
true
、false
或null
的值。 - 日期
FEEL 不支持日期字面量,但您可以使用内置的
date()
函数来构造日期值。FEEL 中的日期字符串遵循 XML 架构部分 2: Datatypes 文档中定义的格式。格式为"YYYY-MM-DD"
,其中YYYY
是包含四位数字的年份,MM
是带有两个数字的月份数,DD
是当天的数目。例如:
date( "2017-06-23" )
date( "2017-06-23" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 日期对象的时间等于
"00:00:00"
,即午夜。日期被视为本地,不带时区。- Time
FEEL 不支持时间字面量,但您可以使用内置的
time()
函数来构造时间值。FEEL 中的时间字符串遵循 XML 架构部分 2: Datatypes 文档中定义的格式。格式为"
,h 是一天的小时数(从hh
:mm:ss[.uu][(+-)h:mm]"00
到23
),mm
是小时内分钟,ss 是分钟的几秒。(可选)字符串可在第二之内定义毫秒(
uuu
)的数量,并包含正数(+
)或从 UTC 时间起的负值(-
)误差来定义其时区。您可以使用字母z
来表示 UTC 时间,这与偏移-00:00
相同。如果没有定义偏移,时间将被视为 local。示例:
time( "04:25:12" ) time( "14:10:00+02:00" ) time( "22:35:40.345-05:00" ) time( "15:00:30z" )
time( "04:25:12" ) time( "14:10:00+02:00" ) time( "22:35:40.345-05:00" ) time( "15:00:30z" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义偏移或时区的时间值不能与未定义偏移或时区的本地时间进行比较。
- 日期和时间
FEEL 不支持日期和时间字面量,但您可以使用内置
的日期和时间(date 和 time()
函数)来构造日期和时间值。FEEL 中的日期和时间字符串遵循 XML 架构部分 2: Datatypes 文档中定义的格式。格式为 "<date>T<time>"
,其中<date
> 和 <time
> 遵循预定义的 XML 模式格式,由T
添加。示例:
date and time( "2017-10-22T23:59:00" ) date and time( "2017-06-13T14:10:00+02:00" ) date and time( "2017-02-05T22:35:40.345-05:00" ) date and time( "2017-06-13T15:00:30z" )
date and time( "2017-10-22T23:59:00" ) date and time( "2017-06-13T14:10:00+02:00" ) date and time( "2017-02-05T22:35:40.345-05:00" ) date and time( "2017-06-13T15:00:30z" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义偏移或时区的日期和时间值不能与未定义偏移或时区的本地日期和时间值进行比较。
重要如果您的 DMN 规格的实现不支持 XML 架构中的空格,请使用关键字
dateTime
作为日期和时间的同步
。- 天数和时间持续时间
FEEL 不支持天和持续时间字面量,但您可以使用内置的
duration()
函数来构造天数和持续时间值。FEEL 中的天数和持续时间字符串遵循 XML 架构第 2 部分定义 的格式,但仅限于天、小时和秒。不支持数月和年时间。示例:
duration( "P1DT23H12M30S" ) duration( "P23D" ) duration( "PT12H" ) duration( "PT35M" )
duration( "P1DT23H12M30S" ) duration( "P23D" ) duration( "PT12H" ) duration( "PT35M" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您的 DMN 规格的实现不支持 XML 架构中的空格,请使用关键字
dayTimeDuration
作为天数 和持续时间的同步
。- 多年和月的时间
FEEL 不支持多年和月的字面量,但您可以使用内置的
duration()
函数来构造天数和持续时间值。FEEL 中的年和月字符串遵循 XML 架构第 2 部分定义的格式:数据类型 文档,但仅限于数年和月。不支持天、小时、分钟或秒。示例:
duration( "P3Y5M" ) duration( "P2Y" ) duration( "P10M" ) duration( "P25M" )
duration( "P3Y5M" ) duration( "P2Y" ) duration( "P10M" ) duration( "P25M" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您的 DMN 规格的实现在 XML 模式中不支持空格,使用关键字
yearMonthDuration
作为年份和月的时间
。- Functions
FEEL 具有
功能
文字(或匿名功能),可用于创建功能。DMN 规格目前不提供将变量声明为功能
的一个明确方法,但红帽决策管理器扩展了 DMN 内置类型来支持功能变量。例如:
function(a, b) a + b
function(a, b) a + b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个示例中,FEEL 表达式会创建一个功能,添加参数
a
和b
,并返回结果。- 上下文
FEEL 具有
上下文
文字,可用于创建上下文。FEEL 中的上下文是
键值对列表,类似于 Java 等语言映射。DMN 规格目前不提供将变量声明为上下文
的显式方式,但红帽决策管理器扩展了 DMN 内置类型来支持上下文变量。例如:
{ x : 5, y : 3 }
{ x : 5, y : 3 }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,表达式会创建一个包含两个条目(
x
和y
)的上下文,代表 chart 中的协调。在 DMN 1.2 中,创建上下文的另一个方法是创建包含键列表作为属性的项定义,然后将变量声明为具有项目定义类型。
Red Hat Decision Manager DMN API 以两种方式表示,在
DMNContext
中支持 DMNItemDefinition
structural 类型:-
用户定义的 Java 类型:Must 是定义属性的有效 JavaBeans 对象,为 DMN
ItemDefinition
中的每个组件的 getters。如果需要,您也可以将@FEELProperty
注释用于代表一个组件名称(这会导致无效的 Java 标识符)的 getter。 -
java.util.Map
接口:映射需要定义适当的条目,其键对应于 DMNItemDefinition
中的组件名称。
-
用户定义的 Java 类型:Must 是定义属性的有效 JavaBeans 对象,为 DMN
- 范围(或间隔)
FEEL 有
范围
文字,可用于创建范围或间隔。FEEL 中的范围是
一个定义较低和上限的值,可在其中打开或关闭它们。DMN 规格目前不提供将变量声明为范围
的方法,但 Red Hat Decision Manager 会将 DMN 内置类型扩展为支持范围变量。范围语法以以下格式定义:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 端点的表达式必须返回可比较的值,并且较低绑定端点必须小于上限的端点。
例如,以下字面表达式定义了
1
到10
之间的间隔,包括边界(两个端点上的关闭间隔):[ 1 .. 10 ]
[ 1 .. 10 ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下字面表达式定义了 1 小时和 12 小时之间的间隔,其中包括下限(关闭间隔),但排除了上限(打开的时间间隔):
[ duration("PT1H") .. duration("PT12H") )
[ duration("PT1H") .. duration("PT12H") )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用决策表中的范围来测试值范围,或者在简单字面表达式中使用范围。例如,如果变量
x
的值介于0
到100
之间,则以下字面表达式返回true
:x in [ 1 .. 100 ]
x in [ 1 .. 100 ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 列表
FEEL 具有
列表
文字,可用于创建项目列表。FEEL 中的列表
由以方括号括起的值列表来表示。DMN 规格目前不提供将变量声明为列表
()的显式方式,但 Red Hat Decision Manager 会将 DMN 内置类型扩展为支持列表变量。例如:
[ 2, 3, 4, 5 ]
[ 2, 3, 4, 5 ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FEEL 中的所有列表都包含同一类型的元素,且不可变。列表中的元素可以通过索引来访问,其中第一个元素为
1
。负索引可以访问从列表末尾开始的元素,以便-1
是最后一个元素。例如,以下表达式返回列表
x
的第二个元素:x[2]
x[2]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下表达式返回列表
x
的 second-to-last 元素:x[-2]
x[-2]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列表中的元素也可以按函数
数计算
,后者将元素列表用作参数。例如,以下表达式返回
4
:count([ 2, 3, 4, 5 ])
count([ 2, 3, 4, 5 ])
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2. FEEL 中的内置功能 复制链接链接已复制到粘贴板!
为促进与其他平台和系统间的互操作性,Friendly Enoendly Enough Expression Language(FEEL)包括了一个内置功能库。内置的 FEEL 功能在 Drools Decision Model 和 Notation(DMN)引擎中实施,以便您可以使用 DMN 决策服务中的功能。
以下小节描述了每个内置 FEEL 功能,它的格式是 NAME( PARAMETERS )
。有关 DMN 中的 FEEL 功能的更多信息,请参阅 OMG Decision Model 和 Notation 规格。
4.3.2.1. 转换功能 复制链接链接已复制到粘贴板!
以下功能支持在不同类型值之间进行转换。其中一些功能使用特定的字符串格式,如下例所示:
-
日期字符串
:遵循 XML 架构部分 2: 数据类型 文档中定义的格式,如2020-06-01
时间字符串
:遵循以下格式之一:-
XML 架构第 2 部分定义的格式:数据类型 文档,如
23:59:00z
-
由 ISO 8601 定义的本地时间格式,后跟
@
和 IANA Timezone,如00:01:00@Etc/UTC
-
XML 架构第 2 部分定义的格式:数据类型 文档,如
-
日期字符串
:遵循日期
字符串的格式,后跟T
和时间字符串
,如2012-12-25T11:00:00Z
-
duration string
:遵循 XQuery 1.0 和 XPath 2.0 Data Model 中定义的天数和时间
持续时间
,如P1Y2M
- 日期(从 中)- 使用日期
从
转换为日期
值。Expand 表 4.3. 参数 参数 类型 格式 from
字符串
日期字符串
示例
date( "2012-12-25" ) - date( "2012-12-24" ) = duration( "P1D" )
date( "2012-12-25" ) - date( "2012-12-24" ) = duration( "P1D" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 日期(从 中)- 使用日期和时间
从
转换为日期
值,并将时间组件设置为 null。Expand 表 4.4. 参数 参数 类型 from
日期和时间
示例
date(date and time( "2012-12-25T11:00:00Z" )) = date( "2012-12-25" )
date(date and time( "2012-12-25T11:00:00Z" )) = date( "2012-12-25" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 日期(年、月、日)
生成指定年份、月份和日期值
的日期
。Expand 表 4.5. 参数 参数 类型 year
number
month
number
day
number
示例
date( 2012, 12, 25 ) = date( "2012-12-25" )
date( 2012, 12, 25 ) = date( "2012-12-25" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 日期和时间(日期、时间 )
从指定
日期
生成日期和时间,并忽略任何时间和指定时间。Expand 表 4.6. 参数 参数 类型 date
日期和时间
time
time
示例
date and time ( "2012-12-24T23:59:00" ) = date and time(date( "2012-12-24" ), time( "23:59:00" ))
date and time ( "2012-12-24T23:59:00" ) = date and time(date( "2012-12-24" ), time( "23:59:00" ))
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 日期和时间(从 )
从指定字符串生成
日期和时间
。Expand 表 4.7. 参数 参数 类型 格式 from
字符串
日期字符串
示例
date and time( "2012-12-24T23:59:00" ) + duration( "PT1M" ) = date and time( "2012-12-25T00:00:00" )
date and time( "2012-12-24T23:59:00" ) + duration( "PT1M" ) = date and time( "2012-12-25T00:00:00" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- time( from )
从指定字符串生成一个
时间
。Expand 表 4.8. 参数 参数 类型 格式 from
字符串
时间字符串
示例
time( "23:59:00z" ) + duration( "PT2M" ) = time( "00:01:00@Etc/UTC" )
time( "23:59:00z" ) + duration( "PT2M" ) = time( "00:01:00@Etc/UTC" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- time( from )
从指定参数生成一个
时间
,并忽略任何日期组件。Expand 表 4.9. 参数 参数 类型 from
时间
或日期和时间
示例
time(date and time( "2012-12-25T11:00:00Z" )) = time( "11:00:00Z" )
time(date and time( "2012-12-25T11:00:00Z" )) = time( "11:00:00Z" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 时间(小时、分钟、第二个、偏移?)
从指定小时、分钟和第二个组件值生成时间。
Expand 表 4.10. 参数 参数 类型 hour
number
minute
number
second
number
offset
(可选)天和时间持续时间
或 null示例
time( "23:59:00z" ) = time(23, 59, 0, duration( "PT0H" ))
time( "23:59:00z" ) = time(23, 59, 0, duration( "PT0H" ))
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- (来自、分组分隔符、十进制分隔符)
使用指定的分隔符
从
转换为数字
。Expand 表 4.11. 参数 参数 类型 from
代表有效数字的字符串
分组分隔符
空格()、comma(
、
)、period(.
)或 null十进制分隔符
与
分组分隔符
相同,但值无法匹配示例
number( "1 000,0", " ", "," ) = number( "1,000.0", ",", "." )
number( "1 000,0", " ", "," ) = number( "1,000.0", ",", "." )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- string( from )
提供指定参数的字符串表示。
Expand 表 4.12. 参数 参数 类型 from
非 null 值
例子
string( 1.1 ) = "1.1" string( null ) = null
string( 1.1 ) = "1.1" string( null ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- duration( from )
从
天和持续时间
值转换为数年和月内的时间
值。Expand 表 4.13. 参数 参数 类型 格式 from
字符串
duration string
例子
date and time( "2012-12-24T23:59:00" ) - date and time( "2012-12-22T03:45:00" ) = duration( "P2DT20H14M" ) duration( "P2Y2M" ) = duration( "P26M" )
date and time( "2012-12-24T23:59:00" ) - date and time( "2012-12-22T03:45:00" ) = duration( "P2DT20H14M" ) duration( "P2Y2M" ) = duration( "P26M" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 多年和月度(从 到 )
计算两个指定参数之间的
年和月时间
。Expand 表 4.14. 参数 参数 类型 from
日期和时间
至
日期和时间
示例
years and months duration( date( "2011-12-22" ), date( "2013-08-24" ) ) = duration( "P1Y8M" )
years and months duration( date( "2011-12-22" ), date( "2013-08-24" ) ) = duration( "P1Y8M" )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.2. 布尔值功能 复制链接链接已复制到粘贴板!
以下功能支持布尔值操作。
- not( negand )
执行
negand
运算对象的逻辑命名。Expand 表 4.15. 参数 参数 类型 negand
布尔值
例子
not( true ) = false not( null ) = null
not( true ) = false not( null ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.3. 字符串功能 复制链接链接已复制到粘贴板!
以下功能支持字符串操作。
在 FEEL 中,Unicode 字符根据其代码点进行计算。
- substring(字符串、开始位置、长度?)
返回指定长度开始位置的子字符串。第一个字符位于位置值
1
。Expand 表 4.16. 参数 参数 类型 字符串
字符串
开始位置
number
长度
(可选)number
例子
substring( "testing",3 ) = "sting" substring( "testing",3,3 ) = "sti" substring( "testing", -2, 1 ) = "n" substring( "\U01F40Eab", 2 ) = "ab"
substring( "testing",3 ) = "sting" substring( "testing",3,3 ) = "sti" substring( "testing", -2, 1 ) = "n" substring( "\U01F40Eab", 2 ) = "ab"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在 FEEL 中,字符串字面上的
"\U01F40Eab"
是sHistoryLimitab
字符串(horse 符号后跟 和b
)。
- string length( string )
计算指定字符串的长度。
Expand 表 4.17. 参数 参数 类型 字符串
字符串
例子
string length( "tes" ) = 3 string length( "\U01F40Eab" ) = 3
string length( "tes" ) = 3 string length( "\U01F40Eab" ) = 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 大写(字符串 )
生成指定字符串的大写版本。
Expand 表 4.18. 参数 参数 类型 字符串
字符串
示例
upper case( "aBc4" ) = "ABC4"
upper case( "aBc4" ) = "ABC4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 小写(字符串 )
生成指定字符串的小写版本。
Expand 表 4.19. 参数 参数 类型 字符串
字符串
示例
lower case( "aBc4" ) = "abc4"
lower case( "aBc4" ) = "abc4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 子字符串前面(字符串,匹配 )
计算匹配项前的子字符串。
Expand 表 4.20. 参数 参数 类型 字符串
字符串
匹配
字符串
例子
substring before( "testing", "ing" ) = "test" substring before( "testing", "xyz" ) = ""
substring before( "testing", "ing" ) = "test" substring before( "testing", "xyz" ) = ""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 子字符串之后(字符串,匹配 )
计算匹配项后的子字符串。
Expand 表 4.21. 参数 参数 类型 字符串
字符串
匹配
字符串
例子
substring after( "testing", "test" ) = "ing" substring after( "", "a" ) = ""
substring after( "testing", "test" ) = "ing" substring after( "", "a" ) = ""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- replace(输入、模式、替换、标志?)
计算正则表达式替换。
Expand 表 4.22. 参数 参数 类型 输入
字符串
pattern
字符串
替换
字符串
标记
(可选)字符串
注意此函数使用 XQuery 1.0 和 XPath 2.0 Functions 和 Operator 中定义的正则表达式参数。
示例
replace( "abcd", "(ab)|(a)", "[1=$1][2=$2]" ) = "[1=ab][2=]cd"
replace( "abcd", "(ab)|(a)", "[1=$1][2=$2]" ) = "[1=ab][2=]cd"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- contains(字符串,匹配)
如果字符串包含匹配项,则返回
true
。Expand 表 4.23. 参数 参数 类型 字符串
字符串
匹配
字符串
示例
contains( "testing", "to" ) = false
contains( "testing", "to" ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 以 (字符串)开头,匹配 .
如果字符串以匹配项开头,则返回
true
Expand 表 4.24. 参数 参数 类型 字符串
字符串
匹配
字符串
示例
starts with( "testing", "te" ) = true
starts with( "testing", "te" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 结束为 (字符串,匹配 )
如果字符串以匹配项结尾,则返回
true
。Expand 表 4.25. 参数 参数 类型 字符串
字符串
匹配
字符串
示例
ends with( "testing", "g" ) = true
ends with( "testing", "g" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 匹配(输入、模式、标志?)
如果输入与正则表达式匹配,则返回
true
。Expand 表 4.26. 参数 参数 类型 输入
字符串
pattern
字符串
标记
(可选)字符串
注意此函数使用 XQuery 1.0 和 XPath 2.0 Functions 和 Operator 中定义的正则表达式参数。
示例
matches( "teeesting", "^te*sting" ) = true
matches( "teeesting", "^te*sting" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - split( string, delimiter )
返回原始字符串的列表,并将其分成分隔符正则表达式模式。
Expand 表 4.27. 参数 参数 类型 字符串
字符串
delimiter
正则表达式模式匹配
字符串
注意此函数使用 XQuery 1.0 和 XPath 2.0 Functions 和 Operator 中定义的正则表达式参数。
例子
split( "John Doe", "\\s" ) = ["John", "Doe"] split( "a;b;c;;", ";" ) = ["a","b","c","",""]
split( "John Doe", "\\s" ) = ["John", "Doe"] split( "a;b;c;;", ";" ) = ["a","b","c","",""]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.4. 列出功能 复制链接链接已复制到粘贴板!
以下功能支持列表操作。
在 FEEL 中,列表中的第一个元素的索引是 1
。列表中最后一个元素的索引可以识别为 -1
。
- 列表包含(list, 元素)
如果列表包含元素,则返回
true
。Expand 表 4.28. 参数 参数 类型 list
list
元素
任何类型,包括 null
示例
list contains( [1,2,3], 2 ) = true
list contains( [1,2,3], 2 ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - count( list )
计算列表中的元素。
Expand 表 4.29. 参数 参数 类型 list
list
例子
count( [1,2,3] ) = 3 count( [] ) = 0 count( [1,[2,3]] ) = 2
count( [1,2,3] ) = 3 count( [] ) = 0 count( [1,[2,3]] ) = 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - min( list )
返回列表中的最低可组合元素。
Expand 表 4.30. 参数 参数 类型 list
list
其他签名
min( e1, e2, ..., eN )
min( e1, e2, ..., eN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
min( [1,2,3] ) = 1 min( 1 ) = 1 min( [1] ) = 1
min( [1,2,3] ) = 1 min( 1 ) = 1 min( [1] ) = 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - max( list )
返回列表中的最大可组合元素。
Expand 表 4.31. 参数 参数 类型 list
list
其他签名
max( e1, e2, ..., eN )
max( e1, e2, ..., eN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
max( 1,2,3 ) = 3 max( [] ) = null
max( 1,2,3 ) = 3 max( [] ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - sum( list )
返回列表中数字的总和。
Expand 表 4.32. 参数 参数 类型 list
数字
元素列表
其他签名
sum( n1, n2, ..., nN )
sum( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
sum( [1,2,3] ) = 6 sum( 1,2,3 ) = 6 sum( 1 ) = 1 sum( [] ) = null
sum( [1,2,3] ) = 6 sum( 1,2,3 ) = 6 sum( 1 ) = 1 sum( [] ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 平均(列表 )
计算列表中元素的平均平均值(通常平均值)。
Expand 表 4.33. 参数 参数 类型 list
数字
元素列表
其他签名
mean( n1, n2, ..., nN )
mean( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
mean( [1,2,3] ) = 2 mean( 1,2,3 ) = 2 mean( 1 ) = 1 mean( [] ) = null
mean( [1,2,3] ) = 2 mean( 1,2,3 ) = 2 mean( 1 ) = 1 mean( [] ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - all( list )
如果列表中的所有元素都为
true
,则返回 true。Expand 表 4.34. 参数 参数 类型 list
布尔值
元素列表
其他签名
all( b1, b2, ..., bN )
all( b1, b2, ..., bN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
all( [false,null,true] ) = false all( true ) = true all( [true] ) = true all( [] ) = true all( 0 ) = null
all( [false,null,true] ) = false all( true ) = true all( [true] ) = true all( [] ) = true all( 0 ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - any( list )
如果列表中任何元素为
true
,则返回 true。Expand 表 4.35. 参数 参数 类型 list
布尔值
元素列表
其他签名
any( b1, b2, ..., bN )
any( b1, b2, ..., bN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
any( [false,null,true] ) = true any( false ) = false any( [] ) = false any( 0 ) = null
any( [false,null,true] ) = true any( false ) = false any( [] ) = false any( 0 ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 子列表(列表、开始位置、长度?)
返回起始位置的子列表,限制为长度元素。
Expand 表 4.36. 参数 参数 类型 list
list
开始位置
number
长度
(可选)number
示例
sublist( [4,5,6], 1, 2 ) = [4,5]
sublist( [4,5,6], 1, 2 ) = [4,5]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - append( list, item )
创建附加到项目或项目的列表。
Expand 表 4.37. 参数 参数 类型 list
list
项
任何类型
示例
append( [1], 2, 3 ) = [1,2,3]
append( [1], 2, 3 ) = [1,2,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - concatenate( list )
创建作为串联列表的结果的列表。
Expand 表 4.38. 参数 参数 类型 list
list
示例
concatenate( [1,2],[3] ) = [1,2,3]
concatenate( [1,2],[3] ) = [1,2,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 插入 before(list, position, newItem)
创建一个带有
newItem
在指定位置插入的列表。Expand 表 4.39. 参数 参数 类型 list
list
位置
number
newItem
任何类型
示例
insert before( [1,3],1,2 ) = [2,1,3]
insert before( [1,3],1,2 ) = [2,1,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 删除(列表,位置 )
创建一个包含指定位置排除的元素的列表。
Expand 表 4.40. 参数 参数 类型 list
list
位置
number
示例
remove( [1,2,3], 2 ) = [1,3]
remove( [1,2,3], 2 ) = [1,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 反向(列出 )
返回反向列表。
Expand 表 4.41. 参数 参数 类型 list
list
示例
reverse( [1,2,3] ) = [3,2,1]
reverse( [1,2,3] ) = [3,2,1]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - (列表的索引,匹配 )
返回与 元素匹配的索引。
参数
-
类型列表
-
与任何类型匹配
Expand 表 4.42. 参数 参数 类型 list
list
匹配
任何类型
示例
index of( [1,2,3,2],2 ) = [2,4]
index of( [1,2,3,2],2 ) = [2,4]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- union( list )
返回多个列表中所有元素的列表,并排除重复项。
Expand 表 4.43. 参数 参数 类型 list
list
示例
union( [1,2],[2,3] ) = [1,2,3]
union( [1,2],[2,3] ) = [1,2,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 不同的值(列出)
返回单个列表中的元素列表,并排除重复项。
Expand 表 4.44. 参数 参数 类型 list
list
示例
distinct values( [1,2,3,2,1] ) = [1,2,3]
distinct values( [1,2,3,2,1] ) = [1,2,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - flatten( list )
返回扁平化列表。
Expand 表 4.45. 参数 参数 类型 list
list
示例
flatten( [[1,2],[[3]], 4] ) = [1,2,3,4]
flatten( [[1,2],[[3]], 4] ) = [1,2,3,4]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - product( list )
返回列表中数字的产品。
Expand 表 4.46. 参数 参数 类型 list
数字
元素列表
其他签名
product( n1, n2, ..., nN )
product( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
product( [2, 3, 4] ) = 24 product( 2, 3, 4 ) = 24
product( [2, 3, 4] ) = 24 product( 2, 3, 4 ) = 24
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - median( list )
返回列表中数字的介质。如果元素的数量是奇数,则结果是中间元素。如果元素数量甚至是,则结果是两个中间元素的平均。
Expand 表 4.47. 参数 参数 类型 list
数字
元素列表
其他签名
median( n1, n2, ..., nN )
median( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
median( 8, 2, 5, 3, 4 ) = 4 median( [6, 1, 2, 3] ) = 2.5 median( [ ] ) = null
median( 8, 2, 5, 3, 4 ) = 4 median( [6, 1, 2, 3] ) = 2.5 median( [ ] ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - stddev( list )
返回列表中数字的标准偏差。
Expand 表 4.48. 参数 参数 类型 list
数字
元素列表
其他签名
stddev( n1, n2, ..., nN )
stddev( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
stddev( 2, 4, 7, 5 ) = 2.081665999466132735282297706979931 stddev( [47] ) = null stddev( 47 ) = null stddev( [ ] ) = null
stddev( 2, 4, 7, 5 ) = 2.081665999466132735282297706979931 stddev( [47] ) = null stddev( 47 ) = null stddev( [ ] ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - mode( list )
返回列表中数字的模式。如果返回多个元素,则数字以升序排序。
Expand 表 4.49. 参数 参数 类型 list
数字
元素列表
其他签名
mode( n1, n2, ..., nN )
mode( n1, n2, ..., nN )
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例子
mode( 6, 3, 9, 6, 6 ) = [6] mode( [6, 1, 9, 6, 1] ) = [1, 6] mode( [ ] ) = [ ]
mode( 6, 3, 9, 6, 6 ) = [6] mode( [6, 1, 9, 6, 1] ) = [1, 6] mode( [ ] ) = [ ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.4.1. 循环语句 复制链接链接已复制到粘贴板!
loop 语句可以转换列表或验证某些元素是否满足特定条件:
- for in (list)
迭代列表的元素。
Expand 表 4.50. 参数 参数 类型 list
任何
元素列表
例子
for i in [1, 2, 3] return i * i = [1, 4, 9] for i in [1,2,3], j in [1,2,3] return i*j = [1, 2, 3, 2, 4, 6, 3, 6, 9]
for i in [1, 2, 3] return i * i = [1, 4, 9] for i in [1,2,3], j in [1,2,3] return i*j = [1, 2, 3, 2, 4, 6, 3, 6, 9]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 有些 in (list)满足(条件)
如果列表中的任何元素满足条件,则返回单个布尔值(true 或 false)。
Expand 表 4.51. 参数 参数 类型 list
任何
元素列表
条件
布尔值表达式被评估为 true 或 false
例子
some i in [1, 2, 3] satisfies i > 3 = true some i in [1, 2, 3] satisfies i > 4 = false
some i in [1, 2, 3] satisfies i > 3 = true some i in [1, 2, 3] satisfies i > 4 = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 每个 in (list)满足(条件)
如果列表中的每个元素满足条件,则返回单个布尔值(true 或 false)。
Expand 表 4.52. 参数 参数 类型 list
任何
元素列表
条件
布尔值表达式被评估为 true 或 false
例子
every i in [1, 2, 3] satisfies i > 1 = false every i in [1, 2, 3] satisfies i > 0 = true
every i in [1, 2, 3] satisfies i > 1 = false every i in [1, 2, 3] satisfies i > 0 = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.5. 数字功能 复制链接链接已复制到粘贴板!
以下功能支持数字操作。
- decimal( n, scale )
返回具有指定缩放的数字。
Expand 表 4.53. 参数 参数 类型 n
number
scale
范围
[leveloffset6111.6176]
范围中的数字
注意这个功能被实施为与
FEEL:number
定义相一致,用于十进制十进制数字到最接近的十进制数。例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - floor( n )
返回小于或等于指定数字的最大整数。
Expand 表 4.54. 参数 参数 类型 n
number
例子
floor( 1.5 ) = 1 floor( -1.5 ) = -2
floor( 1.5 ) = 1 floor( -1.5 ) = -2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ceiling( n )
返回大于或等于指定数字的最小整数。
Expand 表 4.55. 参数 参数 类型 n
number
例子
ceiling( 1.5 ) = 2 ceiling( -1.5 ) = -1
ceiling( 1.5 ) = 2 ceiling( -1.5 ) = -1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - abs( n )
返回绝对值。
Expand 表 4.56. 参数 参数 类型 n
、
天和时间持续时间
、年和月的时间
例子
abs( 10 ) = 10 abs( -10 ) = 10 abs( @"PT5H" ) = @"PT5H" abs( @"-PT5H" ) = @"PT5H"
abs( 10 ) = 10 abs( -10 ) = 10 abs( @"PT5H" ) = @"PT5H" abs( @"-PT5H" ) = @"PT5H"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - modulo( dividend, divisor )
返回除形器的划分的剩余部分。如果划分或 divisor 是负的,则结果是与 divisor 相同的符号。
注意此函数也表示为 modul
o(dividend, divisor)= 划分 - divisor*floor(dividen d/divisor)
。Expand 表 4.57. 参数 参数 类型 划分
number
divisor
number
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - sqrt( number )
返回指定编号的方括号。
Expand 表 4.58. 参数 参数 类型 n
number
示例
sqrt( 16 ) = 4
sqrt( 16 ) = 4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - log( number )
返回指定数量的日志变化。
Expand 表 4.59. 参数 参数 类型 n
number
示例
decimal( log( 10 ), 2 ) = 2.30
decimal( log( 10 ), 2 ) = 2.30
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - exp( number )
返回 Euler
的数字
提升至指定数目的电源。Expand 表 4.60. 参数 参数 类型 n
number
示例
decimal( exp( 5 ), 2 ) = 148.41
decimal( exp( 5 ), 2 ) = 148.41
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - odd( number )
如果指定的数字为奇数,则返回
true
。Expand 表 4.61. 参数 参数 类型 n
number
例子
odd( 5 ) = true odd( 2 ) = false
odd( 5 ) = true odd( 2 ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - even( number )
如果指定号甚至是
true
,则返回 true。Expand 表 4.62. 参数 参数 类型 n
number
例子
even( 5 ) = false even ( 2 ) = true
even( 5 ) = false even ( 2 ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.6. 日期和时间功能 复制链接链接已复制到粘贴板!
以下功能支持日期和时间操作。
- is( value1, value2 )
如果两个值都为 FEEL 语义域中的相同元素,则返回
true
。Expand 表 4.63. 参数 参数 类型 value1
任何类型
value2
任何类型
例子
is( date( "2012-12-25" ), time( "23:00:50" ) ) = false is( date( "2012-12-25" ), date( "2012-12-25" ) ) = true is( time( "23:00:50z" ), time( "23:00:50" ) ) = false
is( date( "2012-12-25" ), time( "23:00:50" ) ) = false is( date( "2012-12-25" ), date( "2012-12-25" ) ) = true is( time( "23:00:50z" ), time( "23:00:50" ) ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.7. 范围功能 复制链接链接已复制到粘贴板!
以下功能支持时序订购操作,以建立单个计算值和此类值范围之间的关系。这些功能与 Health Level Seven(HL7)国际 质量语言(CQL)1.4 语法中 的组件类似。
- before( )
当一个元素
A
之前,并且满足评估到true
的相关要求时,返回true
。签名
-
before( point1 point2 )
-
在点范围 之前。)
-
before(范围点)
-
before( range1,range2 )
评估对
true
的要求-
point1 < point2
-
点 < range.start or(point = range.start and not(range.start))
-
range.end < point or(range.end = point, not(range.end))
-
range1.end < range2.start or or(not(range1.end included)or not(range2.start included)和 range1.end = range2.start)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- after( )
当元素
A
在元素B
之后并且满足评估为true
的相关要求时,返回true
。签名
-
之后(点1点2)
-
后(点范围 )
-
在完成范围后,请点 .
-
after( range1 range2 )
评估对
true
的要求-
point1 > point2
-
point > range.end or(point = range.end, not(range.end))
-
range.start > point or(range.start = point, not(range.start included))
-
range1.start > range2.end or((not(range1.start included)or not(range2.end)和 range1.start = range2.end)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- meets( )
当元素
A
满足一个元素B
以及满足评估为true
的相关要求时,返回true
。签名
-
meets( range1, range2 )
评估对
true
的要求-
range1.end included 和 range2.start 包括和范围1.end = range2.start
例子
meets( [1..5], [5..10] ) = true meets( [1..5), [5..10] ) = false meets( [1..5], (5..10] ) = false meets( [1..5], [6..10] ) = false
meets( [1..5], [5..10] ) = true meets( [1..5), [5..10] ) = false meets( [1..5], (5..10] ) = false meets( [1..5], [6..10] ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- met by( )
当一个元素
A
满足元素B
以及满足评估到true
的相关要求时,返回true
。签名
-
因(范围1、范围2)满足.
评估对
true
的要求-
range1.start included 和 range2.end 包括和 range1.start = range2.end
例子
met by( [5..10], [1..5] ) = true met by( [5..10], [1..5) ) = false met by( (5..10], [1..5] ) = false met by( [6..10], [1..5] ) = false
met by( [5..10], [1..5] ) = true met by( [5..10], [1..5) ) = false met by( (5..10], [1..5] ) = false met by( [6..10], [1..5] ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- overlaps( )
当元素
A
重叠一个元素B
以及满足评估到true
的相关要求时,返回true
。签名
-
overlaps( range1, range2 )
评估对
true
的要求-
(范围1.end > range2.start 或(range1.end = range2.start and(range1.end included))和 (范围1.start < range2.end or(range1.start =2.end, and range1.start = range1.start included and range2.end included)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- overlaps before( )
当元素
A
在元素B
之前以及满足评估为true
的相关要求时,返回true
。签名
-
overlaps before( range1 range2 )
评估对
true
的要求-
( range1.start < range2.start or(range1.start = range2.start and range1.start included)and range2.start included)和 (范围1.end > range2.start or(range1.end = range2.start and range1.end included)和 range2.start included)和 (1.end < range2.end or(range1.end = range2.end = range2.end = range2.end)或 2.start included)和 .
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- overlaps after( )
当元素
A
在元素B
之后以及满足评估为true
的相关要求时,返回true
。签名
-
overlaps after( range1 range2 )
评估对
true
的要求-
(范围2.start 或范围2.start = range1.start 和 range2.start(包括范围2.start included)和 (范围1.start included)和 (范围2.end > range1.start or(range2.end = range1.start and range2.end included)和范围1.start included)和 (范围2.end < range1.end or(range2.end = 1 和(range2.end = 1end)或包括范围)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- finishes( )
当一个元素
A
完成一个元素B
以及满足评估为true
的相关要求时,返回true
。签名
-
完成(点,范围 )
-
完成(range1, range2)
评估对
true
的要求-
range.end included 和 range.end = point
-
range1.end included = range2.end = range1.end = range2.end, and(range1.start > range2.start or(range1.start = range2.start,)或 range2.start included)或 range2.start included)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- 完成于。)
当一个元素
A
完成一个元素B
以及满足评估为true
的相关要求时,返回true
。签名
-
由 (范围结束,请点 )
-
完成按(范围1范围2)
评估对
true
的要求-
range.end included 和 range.end = point
-
range1.end included = range2.end = range1.end = range2.end,(range1.start < range2.start or(range1.start = range2.start and(range1.start included or not(range2.start))
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- includes( )
当一个元素
A
包含一个元素B
以及满足评估为true
的相关要求时,返回true
。签名
-
includes(range, point)
-
includes(range1, range2)
评估对
true
的要求-
(range.start < point 和 range.end > point)或(range.start = point and range.start included)或(range.end = point.end included)
-
(范围1.start < range2.start 或(range1.start = range2.start and(range1.start included))和 (范围1.end > range2.end or(range1.end = range2.end = range2.end = range2.end, orrange1.end included))
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- during( )
当元素
A
在元素B
期间并且满足评估为true
的相关要求时,返回true
。签名
-
在(点中,范围)
-
during( range1 range2 )
评估对
true
的要求-
(range.start < point 和 range.end > point)或(range.start = point and range.start included)或(range.end = point.end included)
-
(range2.end > range1.start or(range2.start = range1.start and(range2.start included))和(包括range1.start included)和 (范围2.end > range1.end or(range2.end = range1.end = range1.end and(range2.end included)))
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- starts( )
当一个元素
A
启动一个元素B
以及满足评估为true
的相关要求时,返回true
。签名
-
开始(点,范围 )
-
starts( range1, range2 )
评估对
true
的要求-
range.start = 点和范围.start 包括
-
range1.start = range2.start 和 range1.start included = range2.start includes and(range1.end < range2.end or(range1.end = range2.end, not(range1.end included)或 range2.end included)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- 通过 启动()
当一个元素
A
由元素B
启动,同时满足评估为true
的相关要求时,返回true
。签名
-
由范围启动(范围,点 )
-
由范围1、范围2启动.
评估对
true
的要求-
range.start = 点和范围.start 包括
-
range1.start = range2.start 和 range1.start included = range2.start includes and(range2.end < range1.end = range1.end = range1.end, not(range2.end included)或 range1.end included)
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- coincides( )
当一个元素与元素
B
在一起以及满足评估为true
的相关要求时,返回true
。签名
-
coincides(1, point2)
-
coincides( range1, range2 )
评估对
true
的要求-
point1 = point2
-
range1.start = range2.start 和 range1.start included = range2.start includes and range1.end = range2.end = included = range2.end = included
例子
coincides( 5, 5 ) = true coincides( 3, 4 ) = false coincides( [1..5], [1..5] ) = true coincides( (1..5), [1..5] ) = false coincides( [1..5], [2..6] ) = false
coincides( 5, 5 ) = true coincides( 3, 4 ) = false coincides( [1..5], [1..5] ) = true coincides( (1..5), [1..5] ) = false coincides( [1..5], [2..6] ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
4.3.2.8. 临时功能 复制链接链接已复制到粘贴板!
以下功能支持一般的临时操作。
- 年天(日期 )
返回本年度当天的 Gregorian 编号。
Expand 表 4.64. 参数 参数 类型 date
日期和时间
示例
day of year( date(2019, 9, 17) ) = 260
day of year( date(2019, 9, 17) ) = 260
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 星期几(日期 )
返回星期几:"
Monday"、
、"Tuesday"
"Wednesday"
、"Thursday"
、"Friday"
、"Saturday"
或"Sunday"
。Expand 表 4.65. 参数 参数 类型 date
日期和时间
示例
day of week( date(2019, 9, 17) ) = "Tuesday"
day of week( date(2019, 9, 17) ) = "Tuesday"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 年月(日期 )
返回一年的 Gregorian:
"January"
,"February"
,"March"
,"April"
,"May"
,"June"
,"July"
,"August"
,"September"
,"October"
, "vember", "vember"
,"December"
.Expand 表 4.66. 参数 参数 类型 date
日期和时间
示例
month of year( date(2019, 9, 17) ) = "September"
month of year( date(2019, 9, 17) ) = "September"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 年月(日期 )
返回 ISO 8601 所定义年的 Gregorian 周。
Expand 表 4.67. 参数 参数 类型 date
日期和时间
例子
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.9. 排序功能 复制链接链接已复制到粘贴板!
以下功能支持排序操作。
- sort(列表,在前面)
返回同一元素的列表,但根据排序函数排序。
Expand 表 4.68. 参数 参数 类型 list
list
前
function
示例
sort( list: [3,1,4,5,2], precedes: function(x,y) x < y ) = [1,2,3,4,5]
sort( list: [3,1,4,5,2], precedes: function(x,y) x < y ) = [1,2,3,4,5]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.2.10. 上下文功能 复制链接链接已复制到粘贴板!
以下功能支持上下文操作。
- get value( m, key )
从指定条目键的上下文返回值。
Expand 表 4.69. 参数 参数 类型 m
context
key
字符串
例子
get value( {key1 : "value1"}, "key1" ) = "value1" get value( {key1 : "value1"}, "unexistent-key" ) = null
get value( {key1 : "value1"}, "key1" ) = "value1" get value( {key1 : "value1"}, "unexistent-key" ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - get entries( m )
为指定上下文返回键值对列表。
Expand 表 4.70. 参数 参数 类型 m
context
示例
get entries( {key1 : "value1", key2 : "value2"} ) = [ { key : "key1", value : "value1" }, {key : "key2", value : "value2"} ]
get entries( {key1 : "value1", key2 : "value2"} ) = [ { key : "key1", value : "value1" }, {key : "key2", value : "value2"} ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. FEEL 中的变量和功能名称 复制链接链接已复制到粘贴板!
与许多传统的表达式语言不同,Friendly Enough Expression Language(FEEL)支持空格和几个特殊字符,作为变量和功能名称的一部分。FEEL 名称必须以 字母
?
或 _
元素开头。还允许使用 unicode 字母字符。变量名称不能以语言关键字开头,如 和
、true
或 每个
。变量名称中的剩余字符可以是起始字符的任意字符,以及 数字
、空格和特殊字符,如 +
、--、/
、、*
、'
和 。
例如,以下名称是所有有效的 FEEL 名称:
- age
- 十三日期
- 动态 234 预检查过程
FEEL 中的变量和功能名称有几个限制:
- 不确定性
-
使用空格、关键字和其他特殊字符,因为名称的一部分可使 FEEL 模糊。在表达式的上下文中解决了混淆,与从左到右的顺序匹配名称。解析器解析变量名称,作为范围中匹配最长的名称。如果需要,您可以使用
()
来混淆名称。 - 名称中的空格
DMN 规格限制在 FEEL 名称中使用空格。根据 DMN 规格,名称可以包含多个空格,但不能包含两个连续的空格。
为了便于使用语言并避免由于空格导致的常见错误,红帽决策管理器消除了连续使用空间的限制。Red Hat Decision Manager 支持变量名,包含任意数量的连续空格,但将其规范化为单一空间。例如,Red Hat Decision Manager 中可以接受一个空格和第一个
名称
(带有两个空格)的名字。Red Hat Decision Manager 还规范化了使用其它空格,如网页、标签页和换行符中的不可破的空白。从 Red Hat Decision Manager FEEL 引擎视角,所有这些字符在处理前被规范化为一个空白。
中的
关键字-
中的
关键字是语言中唯一不能用作变量名称一部分的关键字。虽然规格允许在变量名称中间使用关键字,但变量名称中的
用法与 的 getmmar 定义(每个
和某些
表达式结构)冲突。