本页内容

高级函数

这些函数分类构成了完整的表达式语言。下文按组列出函数及其参数、返回类型和示例。

1. 文本与模式函数

正则表达式函数

用于通过正则表达式匹配和替换模式的函数。

regexMatch

(text, pattern)

检查字符串是否与正则表达式模式匹配。

参数
text string 要测试的字符串
pattern string 正则表达式模式
返回值 布尔值
示例
regexMatch("abc123", "[0-9]+") → true
regexMatch("hello", "^[0-9]+$") → false
另请参阅

regexReplace

(text, pattern, replacement)

替换字符串中所有匹配正则表达式模式的内容。

参数
text string 输入字符串
pattern string 要匹配的正则表达式模式
replacement string 替换字符串
返回值 字符串
示例
regexReplace("abc123def456", "[0-9]+", "#") → abc#def#
regexReplace("hello world", "\s+", " ") → hello world
另请参阅

regexExtract

(text, pattern, group?)

从字符串中提取正则表达式模式的第一个匹配项,也可以提取指定的捕获组。

参数
text string 输入字符串
pattern string 正则表达式模式
group (可选) number 捕获组索引;0表示返回完整匹配项 (默认: 0)
返回值 字符串
示例
regexExtract("abc123def", "[0-9]+") → 123
regexExtract("2025-01-15", "(\d{4})-(\d{2})", 1) → 2025
另请参阅

字符串工具

其他字符串处理函数。

repeat

(text, count)

按指定次数重复文本。

参数
text string 要重复的文本
count number 重复次数
返回值 字符串
示例
repeat("ab", 3) → "ababab"

countOccurrences

(text, search)

统计子字符串不重叠出现的次数。

参数
text string 要搜索的文本
search string 要查找的子字符串
返回值 数字
示例
countOccurrences("abcabc", "abc") → 2

split

(text, delimiter, index)

按分隔符拆分文本,并返回第n部分,索引从1开始。

参数
text string 要拆分的文本
delimiter string 分隔符
index number 要返回部分的索引(从1开始)
返回值 字符串
示例
split("a-b-c", "-", 2) → "b"

exact

(a, b)

区分大小写地比较字符串。如果两个字符串完全相同,则返回true。

参数
a string 第一个字符串
b string 第二个字符串
返回值 布尔值
示例
exact("Hello", "hello") → false

2. 日期与时长辅助函数

时长辅助函数

将毫秒时长转换为常用时间单位。

durationInDays

(ms)

将毫秒转换为天。

参数
ms number 毫秒时长
返回值 数字
示例
durationInDays(86400000) → 1
durationInDays(caseThroughputTime) → 以天为单位的处理时间

durationInHours

(ms)

将毫秒转换为小时。

参数
ms number 毫秒时长
返回值 数字
示例
durationInHours(3600000) → 1
durationInHours(stepDuration) → 以小时为单位的步骤时长

durationInMinutes

(ms)

将毫秒转换为分钟。

参数
ms number 毫秒时长
返回值 数字
示例
durationInMinutes(60000) → 1
durationInMinutes(waitingTime) → 以分钟为单位的等待时间

durationInSeconds

(ms)

将毫秒转换为秒。

参数
ms number 毫秒时长
返回值 数字
示例
durationInSeconds(1500) → 1.5

日期构造

根据组成部分创建日期,或将字符串解析为日期。

date

(year, month, day)

根据年、月、日创建UTC日期。

参数
year number 年
month number 月(1-12)
day number 日
返回值 日期
示例
date(2024, 1, 1) → 1704067200000
date(2024, 6, 15) → 2024年6月15日

toDate

(value, format?)

将值解析为日期。接受数字(如纪元毫秒)或字符串。

参数
value any 要转换为日期的值
format (可选) string 日期格式模式(可选)
返回值 日期
示例
toDate(1704067200000) → 1704067200000
toDate("2024-01-15") → 2024年1月15日
toDate("31/12/2024 23:45:59", "dd/MM/yyyy HH:mm:ss") → 1735688759000
备注

指定格式时,请使用与formatDate相同的受支持格式标记。解析基于UTC。

today

()

返回当前日期对应的UTC午夜时间。

返回值 日期
示例
today() → 当前日期的午夜时间

日期周期边界

将日期截断或舍入到周期边界。

startOfDay

(date)

将日期截断到当天开始时间(午夜)。

参数
date date 要截断的日期
返回值 日期
示例
startOfDay(StartTime) → 当天的午夜时间

startOfWeek

(date)

返回一周的开始时间(星期一)。

参数
date date 日期
返回值 日期
示例
startOfWeek(StartTime) → 当周的星期一

startOfMonth

(date)

返回当月的第一天。

参数
date date 日期
返回值 日期
示例
startOfMonth(StartTime) → 当月第一天

startOfYear

(date)

返回当年的1月1日。

参数
date date 日期
返回值 日期
示例
startOfYear(StartTime) → 1月1日

endOfWeek

(date)

返回一周的结束时间(星期日23:59:59)。

参数
date date 日期
返回值 日期
示例
endOfWeek(StartTime) → 星期日当天结束时间

endOfMonth

(date)

返回当月最后一天的23:59:59。

参数
date date 日期
返回值 日期
示例
endOfMonth(StartTime) → 当月最后一天的结束时间

endOfYear

(date)

返回12月31日23:59:59。

参数
date date 日期
返回值 日期
示例
endOfYear(StartTime) → 12月31日的结束时间

日期快捷函数

用于计算常见日期差值和日期加法的便捷函数。

daysBetween

(date1, date2)

返回两个日期相差的天数。

参数
date1 date 开始日期
date2 date 结束日期
返回值 数字
示例
daysBetween(StartTime, EndTime) → 两个日期之间的天数

hoursBetween

(date1, date2)

返回两个日期相差的小时数。

参数
date1 date 开始日期
date2 date 结束日期
返回值 数字
示例
hoursBetween(StartTime, EndTime) → 两个日期之间的小时数

minutesBetween

(date1, date2)

返回两个日期相差的分钟数。

参数
date1 date 开始日期
date2 date 结束日期
返回值 数字
示例
minutesBetween(StartTime, EndTime) → 两个日期之间的分钟数

secondsBetween

(date1, date2)

返回两个日期相差的秒数。

参数
date1 date 开始日期
date2 date 结束日期
返回值 数字
示例
secondsBetween(StartTime, EndTime) → 两个日期之间的秒数

addDays

(date, days)

在日期上增加天数。

参数
date date 基准日期
days number 要增加的天数
返回值 日期
示例
addDays(StartTime, 5) → 5天后的日期

addHours

(date, hours)

在日期上增加小时数。

参数
date date 基准日期
hours number 要增加的小时数
返回值 日期
示例
addHours(StartTime, 3) → 3小时后的日期

addMinutes

(date, minutes)

在日期上增加分钟数。

参数
date date 基准日期
minutes number 要增加的分钟数
返回值 日期
示例
addMinutes(StartTime, 30) → 30分钟后的日期

addSeconds

(date, seconds)

在日期上增加秒数。

参数
date date 基准日期
seconds number 要增加的秒数
返回值 日期
示例
addSeconds(StartTime, 45) → 45秒后的日期

endOfDay

(date)

返回指定日期当天的最后时刻(23:59:59.999)。

参数
date date 输入日期
返回值 日期
示例
endOfDay(StartTime) → 当天23:59:59

startOfQuarter

(date)

返回指定日期所在季度的第一天。

参数
date date 输入日期
返回值 日期
示例
startOfQuarter(StartTime) → 6月日期对应的结果为2024-04-01

endOfQuarter

(date)

返回指定日期所在季度的最后时刻。

参数
date date 输入日期
返回值 日期
示例
endOfQuarter(StartTime) → 6月日期对应的结果为2024-06-30T23:59:59Z

3. 逻辑辅助函数

多分支条件判断

将一个值与多个条件进行匹配。

switch

(value, match1, result1, ..., default?)

将一个值与条件列表逐一匹配,并返回对应结果。类似多分支if。

参数
value any 要匹配的值
match1, result1, ... any 匹配值与结果组成的配对
default (可选) any 没有匹配项时返回的默认结果(可选)
返回值 任意类型
示例
switch("a", "a", 1, "b", 2, 0) → 1
switch(Status, "Open", 1, "Closed", 2, 0) → Open时返回1,Closed时返回2,否则返回0
备注

接受可变数量的参数:switch(value, match1, result1, match2, result2, ..., default)

范围检查

检查值是否在指定范围内,或将值限制在某个范围内。

between

(value, low, high)

如果值在下限和上限之间(含边界),则返回true。

参数
value number 要检查的值
low number 下限
high number 上限
返回值 布尔值
示例
between(5, 1, 10) → true
between(Amount, 100, 1000) → 如果Amount在100到1000之间,则返回true

clamp

(value, min, max)

将值限制在[min, max]范围内。

参数
value number 要限制范围的值
min number 最小值
max number 最大值
返回值 数字
示例
clamp(15, 0, 10) → 10
clamp(Score, 0, 100) → 将Score限制在0到100之间

let变量绑定

为中间值命名,以便在复杂表达式中使用。

let

(name, value, body)

将值赋给名称,然后在可使用该名称的情况下计算主体表达式。

参数
name string 变量名(字符串字面量)
value any 要赋值的表达式
body any 使用已赋值变量的表达式
返回值 任意类型
示例
let("avg", caseAvg(Amount), Amount - avg) → 与案例平均值的差值
let("x", Amount * 2, let("y", x + 3, x * y)) → 嵌套let变量绑定

4. 流程、活动与SLA函数

前序条件判断

检查某个活动在案例中是否由另一个活动先行。

directlyPrecededBy

(activity, predecessor)

如果第二个活动在案例中紧接着出现在第一个活动之前,则返回true。

参数
activity string 要检查的活动
predecessor string 预期的前序活动
返回值 布尔值
示例
directlyPrecededBy("Approve", "Review") → 如果Review紧接在Approve之前,则返回true
另请参阅

eventuallyPrecededBy

(activity, predecessor)

如果第二个活动在案例中出现在第一个活动之前,则返回true。

参数
activity string 要检查的活动
predecessor string 预期的前序活动
返回值 布尔值
示例
eventuallyPrecededBy("Ship", "Order") → 如果Order在案例中出现在Ship之前,则返回true
另请参阅

返工检测

识别案例中活动重复发生的返工模式。

isRework

Property

如果当前活动在案例中此前已发生,则返回true。

Type boolean

reworkCount

Property

案例中重复执行活动的总次数。

Type number

activityOccurrence

Property

该活动在案例中的发生序号:首次为1,第二次为2,以此类推。

Type number

活动查询

检查案例中是否出现某个活动,并统计其出现次数。

hasActivity

(activityName)

如果指定名称的活动在案例中出现,则返回true。

参数
activityName string 要检查的活动名称
返回值 布尔值
示例
hasActivity("Approve") → 如果案例中包含Approve活动,则返回true

activityCount

(activityName)

返回指定名称的活动在案例中的出现次数。

参数
activityName string 要统计的活动名称
返回值 数字
示例
activityCount("Review") → 案例中Review活动的次数

活动间隔时间

计算案例中特定活动之间的时间。

timeBetween

(activityA, activityB)

返回活动A首次出现与活动B首次出现之间的时间。

参数
activityA string 第一个活动
activityB string 第二个活动
返回值 数字
示例
timeBetween("Submit", "Approve") → 从Submit到Approve的毫秒数

timeSinceActivity

(activityName)

当前事件发生前,指定活动最近一次出现至今经过的时间。

参数
activityName string 活动名称
返回值 数字
示例
timeSinceActivity("Start") → 距上一次Start活动的时间

timeToActivity

(activityName)

当前事件之后,指定活动下一次出现前的时间。

参数
activityName string 活动名称
返回值 数字
示例
timeToActivity("Complete") → 距下一次Complete活动的时间

SLA函数

监控服务级别协议并检测违约情况。

slaBreached

(duration, threshold)

当时长超过SLA阈值时返回true。

参数
duration number 实际时长
threshold number SLA阈值
返回值 布尔值
示例
slaBreached(100000, 86400000) → false
slaBreached(caseThroughputTime, 86400000) → 案例超过24小时SLA时返回true

slaRemaining

(startDate, slaDuration)

返回距离违反SLA的剩余时间;违反后则返回负值。

参数
startDate date 开始时间戳
slaDuration number SLA时长,单位为毫秒
返回值 数字
示例
slaRemaining(caseStartTime, 172800000) → 48小时SLA的剩余时间

caseAge

Property

从案例开始至今经过的时间,以毫秒计,从第一个事件开始计算。

Type number

自循环检测

检测并统计同一活动连续发生的自循环模式。

isSelfLoop

Property

当前活动与案例中的上一个活动相同时返回true。

Type boolean

selfLoopCount

Property

当前案例中同一活动连续重复的次数。

Type number

资源分析

检测案例中的资源交接和变更。

isResourceChange

(expr)

表达式的值与上一个事件相比发生变化时返回true。

参数
expr any 要检查变化的列表达式
返回值 布尔值
示例
isResourceChange(Resource) → 资源与上一个事件不同时返回true

resourceHandoffCount

(expr)

统计案例中的值变更次数。

参数
expr any 要统计变更的列表达式
返回值 数字
示例
resourceHandoffCount(Resource) → Alice→Alice→Bob→Bob→Alice对应2次
备注

Athena后端表达式暂不可用。对于后端查询,请在派生属性中将isResourceChange(expr)与caseCountIf(...)结合使用。

5. 统计、排名与值变化

排名函数

按表达式值对案例内或所有事件进行排名。

caseRank

(expr)

按表达式值排序后,当前事件在案例中的排名;并列时会跳过后续名次。

参数
expr number 用于排名的表达式
返回值 数字
示例
caseRank(Amount) → 按案例内的Amount排名

caseDenseRank

(expr)

案例内的密集排名,并列时不跳过名次。

参数
expr number 用于排名的表达式
返回值 数字
示例
caseDenseRank(Amount) → 按案例内的Amount进行密集排名

allRank

(expr)

对所有事件进行排名。

参数
expr number 用于排名的表达式
返回值 数字
示例
allRank(Duration) → 按Duration进行全局排名

allPercentRank

(expr)

对所有事件进行百分位排名,范围为0到1。

参数
expr number 用于排名的表达式
返回值 数字
示例
allPercentRank(Duration) → 百分位排名(0-1)

值变化检测

检测事件之间的值变化。

changed

(expr)

如果表达式的值与前一个事件不同,则返回true。

参数
expr any 要检查变化的表达式
返回值 布尔值
示例
changed(Resource) → 如果Resource与前一个事件相比发生变化,则返回true

caseChanges

(expr)

统计案例中所有事件之间的值变化次数。

参数
expr any 要检查变化的表达式
返回值 数字
示例
caseChanges(Resource) → 案例中的资源交接次数
备注

Athena支持的表达式暂不可用。对于后端查询,请在派生属性中将changed(expr)与caseCountIf(...)配合使用。

条件累计聚合

按条件计算累计聚合值,统计截至当前事件的数据。

caseRunningSumIf

(expr, condition)

计算截至当前事件的条件累计总和。

参数
expr number 要汇总的表达式
condition boolean 用于筛选事件的条件
返回值 数字
示例
caseRunningSumIf(Amount, Status == "Paid") → Status为Paid时Amount的累计总和

caseRunningCountIf

(condition)

计算截至当前事件的条件累计计数。

参数
condition boolean 统计条件
返回值 数字
示例
caseRunningCountIf(Activity == "Error") → Error活动的累计次数

caseRunningAvgIf

(expr, condition)

计算截至当前事件的条件累计平均值。

参数
expr number 待求平均的表达式
condition boolean 用于筛选事件的条件
返回值 数字
示例
caseRunningAvgIf(Duration, Priority == "High") → 高优先级事件的运行平均时长

经过时间属性

用于衡量案例进度和经过时间的属性。

elapsedSinceStart

Property

案例开始后经过的时间,单位为毫秒。

Type number

remainingInCase

Property

案例结束前的剩余时间,单位为毫秒。

Type number

percentComplete

Property

案例进度,以0到1之间的数值表示。

Type number

扩展条件聚合

用于计算中位数、标准差和去重计数的其他条件聚合函数。

caseMedianIf

(expr, condition)

计算案例事件中满足条件的值的中位数。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
caseMedianIf(Amount, Activity == "Review") → Review活动的金额中位数

allMedianIf

(expr, condition)

计算所有满足条件的事件的值的中位数。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
allMedianIf(Amount, Status == "Complete") → 已完成事件的全局中位数

caseStdDevIf

(expr, condition)

计算案例事件中满足条件的值的标准差。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
caseStdDevIf(Duration, Activity == "Review") → 案例中Review时长的标准差

allStdDevIf

(expr, condition)

计算所有满足条件的事件的值的标准差。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
allStdDevIf(Amount, Priority == "High") → 高优先级事件的全局标准差

caseCountDistinctIf

(expr, condition)

按条件统计案例事件中的去重值数量。

参数
expr any 值表达式
condition boolean 筛选条件
返回值 数字
示例
caseCountDistinctIf(Category, Amount > 100) → 金额大于100的去重类别数

allCountDistinctIf

(expr, condition)

按条件统计所有事件中的去重值数量。

参数
expr any 值表达式
condition boolean 筛选条件
返回值 数字
示例
allCountDistinctIf(User, Department == "Sales") → Sales部门的去重用户数

扩展运行聚合

用于计算中位数、标准差以及条件最小值和最大值的其他运行聚合函数。

caseRunningMedian

(expr)

截至当前事件的运行中位数。

参数
expr number 值表达式
返回值 数字
示例
caseRunningMedian(Amount) → 运行金额中位数

caseRunningStdDev

(expr)

截至当前事件的运行标准差。

参数
expr number 值表达式
返回值 数字
示例
caseRunningStdDev(Amount) → 运行标准差

caseRunningMinIf

(expr, condition)

截至当前事件的条件运行最小值。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
caseRunningMinIf(Amount, Activity == "Review") → Review金额的运行最小值

caseRunningMaxIf

(expr, condition)

截至当前事件的条件运行最大值。

参数
expr number 值表达式
condition boolean 筛选条件
返回值 数字
示例
caseRunningMaxIf(Amount, Priority == "High") → 高优先级事件的运行最大值

6. JSON函数

JSON提取

使用路径表达式从JSON字符串中提取值。

jsonExtract

(json, path)

使用JSONPath表达式从JSON字符串中提取值。

参数
json string JSON字符串
path string JSONPath表达式,例如"$.field"
返回值 任意类型
示例
jsonExtract("{\"name\":\"John\"}", "$.name") → John

jsonValue

(json, path)

将JSON字符串中的标量值提取为字符串。

参数
json string JSON字符串
path string JSONPath表达式
返回值 字符串
示例
jsonValue("{\"age\":30}", "$.age") → "30"

jsonArrayLength

(json)

返回JSON数组的长度。

参数
json string JSON数组字符串
返回值 数字
示例
jsonArrayLength("[1,2,3]") → 3

7. 相关主题

优化流程,构建互联架构,掌控全局。

无需信用卡,也无需等待,即刻开始。将组织的实际工作方式转化为清晰、互联的流程设计。

构建流程架构,明确职责归属与管控措施,并在各层级统一角色分工。

开始免费试用,为流程治理、管理和持续改进建立可靠的统一基础。