2.3. FEEL 中的规则表达式
友好的 Enough Expression Language (FEEL)是对象管理组(OMG) DMN 规范定义的表达式语言。FEEL 表达式在 DMN 模型中定义决策的逻辑。FEEL 旨在通过为决策模型结构分配语义来促进决策模型和执行。决策要求图(DRD) occupy 表单元中的 FEEL 表达式是决策节点和业务知识模型的方框表达式。
有关 DMN 中的 FEEL 的更多信息,请参阅 OMG Decision Model 和 Notation 规格。
2.3.1. FEEL 中的数据类型 复制链接链接已复制到粘贴板!
友好的 Enough Expression Language (FEEL)支持以下数据类型:
- number
- 字符串
- 布尔值
- 日期
- Time
- 日期和时间
- 天数和持续时间
- 年和月持续时间
- Functions
- context
- 范围(或间隔)
- list
DMN 规格目前不提供将变量声明为 函数
、上下文
、范围或 列表的
显式方法,但 Red Hat Process Automation Manager 扩展了 DMN 内置类型来支持这些类型的变量。
以下列表描述了每种数据类型:
- number
FEEL 中的数字基于 IEEE 754-2008 Decimal 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 Process Automation Manager 扩展 DMN 规格并支持额外的数字表示法:
-
Scientific : 您可以使用带有后缀
e<exp>
或E<exp>
的 Scientific 表示法。例如,1.2e3
与编写表达式1.239)101143
相同,但是一个字面而不是表达式。 -
十六进制 :您可以使用前缀为
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 文档。格式为"hh:mm:ss[.uu][(+-) hh:mm]"
,其中hh
是一天的小时(从00
到23
),mm
是小时中的分钟,sss 是分钟(以分钟为单位)。(可选)字符串可以在第二个时间段内定义毫秒数(
uu
),并从 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 不支持日期和时间字面,但您可以使用内置
日期和时间
() 函数来构建日期和时间值。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 部分中定义的格式:Datatypes 文档,但仅限于天数、小时、分钟和秒。不支持月和年。示例:
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 部分定义的格式:Datatypes 文档,但仅限于年和月。不支持天数、小时、分钟或秒。示例:
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 规格目前不提供将变量声明为
函数的
显式方法,但 Red Hat Process Automation Manager 扩展了 DMN 内置类型来支持函数的变量。例如:
function(a, b) a + b
function(a, b) a + b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,FEEL 表达式会创建一个添加参数
a
和b
且返回结果的功能。- context
FEEL 具有可用于创建上下文的上下文字面。
FEEL 中的
上下文是
键和值对列表,类似于 Java 等语言的映射。DMN 规格目前不提供将变量声明为上下文
的显式方法,但 Red Hat Process Automation Manager 扩展了 DMN 内置类型来支持上下文变量。例如:
{ x : 5, y : 3 }
{ x : 5, y : 3 }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,表达式会创建一个带有两个条目
x
和y
的上下文,代表图表中的协调。在 DMN 1.2 中,创建上下文的另一种方法是创建一个项目定义,它将键列表作为属性组成,然后将变量声明为具有该项目定义类型。
Red Hat Process Automation Manager DMN API 支持以两种方式表示的
DMN
theDefinition
structural 类型:-
用户定义的 Java 类型:必须是有效的 IaaS 对象,定义属性,并为 DMN114
Definition
中的每个组件获取。如果需要,您也可以对代表组件名称的 getters 使用@FEELProperty
注释,这会导致 Java 标识符无效。 -
java.util.Map
接口:映射需要定义适当的条目,其键与 DMN114Definition 中的组件名称对应
。
-
用户定义的 Java 类型:必须是有效的 IaaS 对象,定义属性,并为 DMN114
- 范围(或间隔)
FEEL 具有
范围
字面,您可以使用它来创建范围或间隔。FEEL 中的范围是
一个值,它定义了较低和上限,其中可以是打开或关闭。DMN 规格目前不提供将变量声明为范围的
显式方法,但 Red Hat Process Automation 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 - list
FEEL 具有
列出
可用于创建项目列表的字面点。FEEL的列表
由用逗号分开的值列表表示,用方括号括起。DMN 规格目前不提供将变量声明为列表的
显式方法,但 Red Hat Process Automation 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
2.3.2. FEEL 中的内置功能 复制链接链接已复制到粘贴板!
为提升与其他平台和系统的互操作性,FEEL 包含了内置的函数库。内置的 FEEL 功能在 dros Decision Model and Notation (DMN)引擎中实施,以便您在 DMN 决策服务中使用功能。
以下小节描述了每个内置的 FEEL 功能,格式为 NAME( PARAMETERS )
。有关 DMN 中的 FEEL 功能的更多信息,请参阅 OMG Decision Model 和 Notation 规格。
2.3.2.1. 转换功能 复制链接链接已复制到粘贴板!
以下功能支持在不同类型值之间进行转换。其中一些功能使用特定的字符串格式,如以下示例:
-
日期字符串
:遵循 XML 架构第 2 部分中定义的格式:Datatypes 文档,如2020-06-01
时间字符串
:遵循以下格式之一:-
XML 架构部分 2 中定义的格式:Datatypes 文档,如
23:59:00z
-
由 ISO 8601 定义的本地时间格式,后跟
@
和 IANA Timezone,如00:01:00@Etc/UTC
-
XML 架构部分 2 中定义的格式:Datatypes 文档,如
-
日期日期字符串
:遵循日期字符串
的格式,后跟T
和时间字符串
,如2012-12-25T11:00:00Z
-
duration string
:遵循 XQuery 1.0 和 XPath 2.0数据模型
中定义的天数
和持续时间格式,如P1Y2M
- date( from ) - using date
从一个
日期
值转换。Expand 表 2.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
- date (from)- 使用日期和时间
从
日期值转换到日期
值,并将时间组件设置为 null。Expand 表 2.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
- date (year, month, day)
从指定的年、月份
和日期
值生成日期。Expand 表 2.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
- date and time( date, time )
从指定
日期
生成日期和时间,并忽略任何时间组件和指定时间。Expand 表 2.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
- 日期和时间(from)
从指定的字符串生成
日期和时间
。Expand 表 2.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 表 2.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 表 2.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
- time (hour, minute, second, offset?)
从指定小时、分钟和第二组件值生成时间。
Expand 表 2.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
- number (from, grouping separator, decimal separator)
使用指定的分隔符
从
转换为数字
。Expand 表 2.11. å�‚æ•° å�‚æ•° ç±»å�‹ from
代表有效数字的字符串
分组分隔符
空格()、逗号(
、
)、句点(.
)或 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 表 2.12. å�‚æ•° å�‚æ•° ç±»å�‹ from
非空值
例å�
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 表 2.13. å�‚æ•° å�‚æ•° ç±»å�‹ æ ¼å¼� from
å—符串
持续时间字符串
例å�
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 表 2.14. å�‚æ•° å�‚æ•° ç±»å�‹ from
日期和时间
to
日期和时间
示例
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
2.3.2.2. 布尔值功能 复制链接链接已复制到粘贴板!
以下功能支持布尔值操作。
- not( negand )
执行
negand
操作对象的逻辑负部分。Expand 表 2.15. å�‚æ•° å�‚æ•° ç±»å�‹ negand
布尔值
例å�
not( true ) = false not( null ) = null
not( true ) = false not( null ) = null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2.3. 字符串函数 复制链接链接已复制到粘贴板!
以下功能支持字符串操作。
在 FEEL 中,Unicode 字符根据其代码点进行计算。
- substring (string, start position, length?)
从指定长度的起始位置返回子字符串。第一个字符位于位置值
1
。Expand 表 2.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"
是Evolutionab
字符串(horse 符号后跟a
和b
)。
- string length( string )
计算指定字符串的长度。
Expand 表 2.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
- upper case( string )
生成指定字符串的大写版本。
Expand 表 2.18. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
示例
upper case( "aBc4" ) = "ABC4"
upper case( "aBc4" ) = "ABC4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- lower case( string )
生成指定字符串的小写版本。
Expand 表 2.19. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
示例
lower case( "aBc4" ) = "abc4"
lower case( "aBc4" ) = "abc4"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- substring before( string, match )
计算匹配项前的子字符串。
Expand 表 2.20. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
match
å—符串
例å�
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
- substring after( string, match )
在匹配项后计算子字符串。
Expand 表 2.21. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
match
å—符串
例å�
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 (input, pattern, replacement, flags?)
计算正则表达式替换。
Expand 表 2.22. å�‚æ•° å�‚æ•° ç±»å�‹ 输入
å—符串
pattern
å—符串
替换
å—符串
标记
(可选)å—符串
注意此功能使用 XQuery 1.0 和 XPath 2.0 功能和 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 (string, match)
如果字符串包含匹配项,则返回
true
。Expand 表 2.23. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
match
å—符串
示例
contains( "testing", "to" ) = false
contains( "testing", "to" ) = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- starting with (string, match)
如果字符串以匹配项开头,则返回
true
Expand 表 2.24. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
match
å—符串
示例
starts with( "testing", "te" ) = true
starts with( "testing", "te" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- end with (string, match)
如果字符串以匹配项结尾,则返回
true
。Expand 表 2.25. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
match
å—符串
示例
ends with( "testing", "g" ) = true
ends with( "testing", "g" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - match (input, pattern, flags?)
如果输入与正则表达式匹配,则返回
true
。Expand 表 2.26. å�‚æ•° å�‚æ•° ç±»å�‹ 输入
å—符串
pattern
å—符串
标记
(可选)å—符串
注意此功能使用 XQuery 1.0 和 XPath 2.0 功能和 Operator 中定义的正则表达式参数。
示例
matches( "teeesting", "^te*sting" ) = true
matches( "teeesting", "^te*sting" ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - split( string, delimiter )
返回原始字符串的列表,并将它分成分隔符正则表达式模式。
Expand 表 2.27. å�‚æ•° å�‚æ•° ç±»å�‹ å—符串
å—符串
delimiter
正则表达式模式的字符串
注意此功能使用 XQuery 1.0 和 XPath 2.0 功能和 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
2.3.2.4. 列出功能 复制链接链接已复制到粘贴板!
以下功能支持列表操作。
在 FEEL 中,列表中的第一个元素的索引是 1
。列表中最后一个元素的索引可以识别为 -1
。
- list contains (list, element)
如果列表包含元素,则返回
true
。Expand 表 2.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 表 2.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 表 2.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 表 2.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 表 2.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 - mean( list )
计算列表中元素的平均(不同含义)。
Expand 表 2.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 表 2.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 表 2.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 - sublist (list, start position, length?)
从起始位置返回子列表,仅限于 length 元素。
Expand 表 2.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 表 2.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 表 2.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 - insert before( list, position, newItem )
创建在指定位置插入了
newItem
的列表。Expand 表 2.39. å�‚æ•° å�‚æ•° ç±»å�‹ list
list
position
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 - remove( list, position )
创建一个包含指定位置中排除的元素的列表。
Expand 表 2.40. å�‚æ•° å�‚æ•° ç±»å�‹ list
list
position
number
示例
remove( [1,2,3], 2 ) = [1,3]
remove( [1,2,3], 2 ) = [1,3]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - reverse( list )
返回反向列表。
Expand 表 2.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 - index of( list, match )
返回与元素匹配的索引。
�数
-
类型列表
列表
-
任何类型的
匹配
Expand 表 2.42. å�‚æ•° å�‚æ•° ç±»å�‹ list
list
match
任何类型的
示例
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 表 2.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 - distinct values( list )
从单个列表中返回元素列表,并排除重复项。
Expand 表 2.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 表 2.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 表 2.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 表 2.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 表 2.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 表 2.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
2.3.2.5. 数字功能 复制链接链接已复制到粘贴板!
以下功能支持数字操作。
- decimal (n, scale)
返回带有指定扩展的数字。
Expand 表 2.50. å�‚æ•° å�‚æ•° ç±»å�‹ n
number
scale
范围内的
数字
[rhacm6111..6176]
例子
decimal( 1/3, 2 ) = .33 decimal( 1.5, 0 ) = 2 decimal( 2.5, 0 ) = 2
decimal( 1/3, 2 ) = .33 decimal( 1.5, 0 ) = 2 decimal( 2.5, 0 ) = 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - floor( n )
返回小于或等于指定数量的最大整数。
Expand 表 2.51. å�‚æ•° å�‚æ•° ç±»å�‹ 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 表 2.52. å�‚æ•° å�‚æ•° ç±»å�‹ 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 表 2.53. å�‚æ•° å�‚æ•° ç±»å�‹ 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 )
返回被分开的划分的剩余部分。如果 dind 或 divisor 是负数,则结果与 divisor 相同。
注意此功能也表示为
modulo (dividend, divisor)= splitnd - divisor (dividen d/divisor)
。Expand 表 2.54. å�‚æ•° å�‚æ•° ç±»å�‹ splitnd
number
divisor
number
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - sqrt( number )
返回指定数字的方括号。
Expand 表 2.55. å�‚æ•° å�‚æ•° ç±»å�‹ n
number
示例
sqrt( 16 ) = 4
sqrt( 16 ) = 4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - log( number )
返回指定数字的日志。
Expand 表 2.56. å�‚æ•° å�‚æ•° ç±»å�‹ 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 表 2.57. 参数 å�‚æ•° ç±»å�‹ 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 表 2.58. å�‚æ•° å�‚æ•° ç±»å�‹ 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
。Expand 表 2.59. å�‚æ•° å�‚æ•° ç±»å�‹ n
number
例å�
even( 5 ) = false even ( 2 ) = true
even( 5 ) = false even ( 2 ) = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2.6. 日期和时间功能 复制链接链接已复制到粘贴板!
以下功能支持日期和时间操作。
- is( value1, value2 )
如果两个值在 FEEL 语义域中都相同,则返回
true
。Expand 表 2.60. å�‚æ•° å�‚æ•° ç±»å�‹ 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
2.3.2.7. 范围功能 复制链接链接已复制到粘贴板!
以下功能支持临时排序操作,以在单个 scalar 值和这些值的范围之间建立关系。这些功能与健康状态级别 Seven (HL7)国际 质量语言(CQL) 1.4 语法中 的组件类似。
- before( )
当元素
A
位于元素B
之前时,返回true
,当同时满足评估到true
的相关要求时。ç¾å��
-
before( point1 point2 )
-
before (point range)
-
before (range point)
-
before( range1,range2 )
评估为
true
的要求-
point1 < point2
-
point < range.start or (point = range.start not (range.start included))
-
range.end < point 或(range.end = point 而不是(range.end included))
-
range1.end < range2.start 或((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
的相关要求时。ç¾å��
-
after( point1 point2 )
-
after (point range)
-
after( range, point )
-
after( range1 range2 )
评估为
true
的要求-
point1 > point2
-
point > range.end 或(point = range.end not (range.end included))
-
range.start > point 或(range.start = point not (range.start included))
-
range1.start > range2.end 或((not (range1.start included) or not (range2.end included)和 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 and range2.start included and range1.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( )
当元素
B
满足元素A
以及同时满足评估到true
的相关要求时,返回true
。ç¾å��
-
met by( range1, range2 )
评估为
true
的要求-
range1.start included 和 range2.end included and 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
的要求-
(range1.end > range2.start or (range1.end = range2.start and (range1.end included or range2.end included))和(range1.start < range2.end or (range1.start = range2.end and range1.start included and range2.end included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- overlaps before( )
当元素
A
重叠前和满足评估到true
的相关要求时,返回true
。ç¾å��
-
overlaps before( range1 range2 )
评估为
true
的要求-
(range1.start < range2.start or (range1.start = range2.start and range1.start included and range2.start included)和(range1.end > range2.start or (range1.end = range2.start and range2.start included))和(range1.end < range2.end = range2.end = range2.end,(not (range1.end included)或 range2.end included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- overlaps after( )
当元素
A
在元素B
之后以及也满足评估到true
的相关要求时,返回true
。ç¾å��
-
overlaps after( range1 range2 )
评估为
true
的要求-
(range2.start < range1.start or (range2.start = range1.start and range2.start included and not (range1.start included)) and (range2.end > range1.start or (range2.start and range2.end included))和 range1.start)和(range2.end < range1.end or (range2.end = range1.end and (not (range2.end included)或 range1.end included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- finishes( )
当元素
A
完成元素B
以及满足评估到true
的相关要求时,返回true
。ç¾å��
-
finishes (point, range)
-
finishes( range1, range2 )
评估为
true
的要求-
range.end included and range.end = point
-
range1.end included = range2.end included 和 range1.end = range2.end 和(range1.start > range2.start or (range1.start = range2.start and (not (range1.start included)或 range2.start included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- finished by( )
当元素
A
通过元素B
完成时,返回true
,当同时满足评估到true
的相关要求时。ç¾å��
-
finished by (range, point)
-
finished by( range1 range2 )
评估为
true
的要求-
range.end included and range.end = point
-
range1.end included = range2.end included 和 range1.end = range2.end and (range1.start < range2.start or (range1.start = range2.start and (range1.start included or not (range2.start included)))
例å�
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)
-
(range1.start < range2.start or (range1.start = range2.start and (range1.start includes or not (range2.start included)))和(range1.end > range2.end or (range1.end = range2.end and (range1.end included or not (range2.end included))))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- during( )
当元素
A
在元素B
期间,返回true
,当同时满足评估到true
的相关要求时。ç¾å��
-
during( point, range )
-
during( range1 range2 )
评估为
true
的要求-
(range.start < point 和 range.end > point)或(range.start = point and range.start included)或(range.end = point.end included)
-
(range2.start < range1.start or (range2.start = range1.start and (range2.start included or not (range1.start included)))和(range2.end > range1.end or (range2.end = range1.end and (range2.end included or not (range1.end included))))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- starts( )
当元素
A
启动元素B
以及满足评估到true
的相关要求时,返回true
。ç¾å��
-
starts( point, range )
-
starts( range1, range2 )
评估为
true
的要求-
range.start = point and range.start included
-
range1.start = range2.start and range1.start included = range2.start included and (range1.end < range2.end or (range1.end = range2.end and (not (range1.end included)或 range2.end included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- started by( )
当元素
A
由元素B
以及满足评估到true
的相关要求时,返回true
。ç¾å��
-
started by( range, point )
-
started by( range1, range2 )
评估为
true
的要求-
range.start = point and range.start included
-
range1.start = range2.start and range1.start included = range2.start included and (range2.end < range1.end or (range2.end = range1.end and (not (range2.end included)或 range1.end included))
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- coincides( )
当元素与元素
B
和满足评估到true
的相关要求时,返回true
。ç¾å��
-
coincides (point1, point2)
-
coincides (range1, range2)
评估为
true
的要求-
point1 = point2
-
range1.start = range2.start and range1.start included = range2.start included 和 range1.end = range2.end included = 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 -
2.3.2.8. 临时功能 复制链接链接已复制到粘贴板!
以下功能支持常规临时操作。
- 第一天(日期 )
返回年当日的 Iceorian 号。
Expand 表 2.61. å�‚æ•° å�‚æ•° ç±»å�‹ 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 - week (date)的日期
返回星期几天:"
Monday"、
、"
Tuesday""Wednesday"
、"Thursday"
、"Friday"
、"Saturday"
或"Sunday
"。Expand 表 2.62. å�‚æ•° å�‚æ•° ç±»å�‹ 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 - year of month (date)
返回年月的 Iceorian:
"January"
,"February"
,"March"
,"April"
,"May"
,"June"
,"July"
,"August"
,"September"
,"October"
,"November"
, 或 "December
"。Expand 表 2.63. å�‚æ•° å�‚æ•° ç±»å�‹ 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 - year of month (date)
返回由 ISO 8601 定义年一周。
Expand 表 2.64. å�‚æ•° å�‚æ•° ç±»å�‹ date
日期和时间
例å�
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2.9. 排序功能 复制链接链接已复制到粘贴板!
以下功能支持排序操作。
- sort( list, precedes )
返回同一元素的列表,但根据排序功能排序。
Expand 表 2.65. å�‚æ•° å�‚æ•° ç±»å�‹ 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
2.3.2.10. 上下文功能 复制链接链接已复制到粘贴板!
以下功能支持上下文操作。
- get value( m, key )
从指定条目键的上下文返回值。
Expand 表 2.66. å�‚æ•° å�‚æ•° ç±»å�‹ 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 表 2.67. å�‚æ•° å�‚æ•° ç±»å�‹ 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
2.3.3. FEEL 中的变量和函数名称 复制链接链接已复制到粘贴板!
与很多传统表达式语言不同,FEEL (FEEL)支持空格和一些特殊字符作为变量和功能名称的一部分。FEEL 名称 必须以字母、
或 ?
_
元素开头。也允许使用 unicode 字母字符。变量名称不能以语言关键字开头,如 和
、true
或 每个
名称。变量名称中的剩余字符可以是任何起始字符,以及 数字
、空格和特殊字符,如 +
、-
-、/
、+、'
和 .
例如,以下名称是所有有效的 FEEL 名称:
- 年龄
- birth Date
- flight 234 预检查过程
FEEL 中的变量和功能名称有几个限制:
- 模糊
-
使用空格、关键字和其他特殊字符作为名称的一部分可能会导致 FEEL 模糊。模糊在表达式的上下文中解决,从左到右匹配。解析器将变量名称解析为在范围内匹配的最大名称。如果需要,您可以使用
()
来忽略名称。 - 名称中的空格
DMN 规格限制 FEEL 名称中的空格的使用。根据 DMN 规格,名称可以包含多个空格,但不能包含两个连续空格。
为了使语言更易于使用并避免由于空格造成的常见错误,Red Hat Process Automation Manager 会删除对连续空格的使用的限制。Red Hat Process Automation Manager 支持带有任意数量的连续空格的变量名称,但将它们规范化为一个空间。例如,Red Hat Process Automation Manager 中可以接受
变量引用
带有一个空格和第一个名称,其中两个空格都可以接受。Red Hat Process Automation Manager 还规范化使用其他空格,如网页、标签页和行破坏中常见的不可破坏的空格。从 Red Hat Process Automation Manager FEEL 引擎的角度来看,所有这些字符在处理前都规范化成一个空格。
- 关键字
中的
关键字 -
中的
关键字是语言中不能用作变量名称一部分的唯一关键字。虽然规范允许在变量名称的中间使用关键字,但在变量名称中使用关键字与 grammar 定义冲突,每个
表达式结构和一些
表达式结构。