内置动作定义
在之前的内容当中我们了解到,如果要在决策集、决策表、交叉决策表、决策树、评分卡、复杂评分卡或决策流中使用某个Spring Bean中定义的方法,那么可以使用动作库将目标Bean及相应的方法定义到其中,然后在具体的决策集、决策表、交叉决策表、决策树、评分卡、复杂评分卡或决策流中导入这个动作库就可以使用了,这种类型方法调用,需要我们的显式的将目标动作库导入后方可使用。
在URule Pro中还提供了一种不需要导入动作库就可以调用类方法的方式,我们称之为内置的动作,对于这些内置的动作,按规范要求定义好后,用户无需导入就可以直接在所有规则文件中使用。
对于内置动作的使用与用户自定义的动作库完全相同,不同地方在于内置动作不需要用户定义,也不需要用户导入,在任何一个决策集、决策表、交叉决策表、决策树、评分卡、复杂评分卡或决策流中可以直接使用,如下图所示:

如上图所示,URule Pro中目前默认提供子大量的内置动作,用于获取当前规则以及针对日期、字符串、List集合、Map集合以及在决策集中调用其它规则文件或知识包等操作的动作。
大部分的内置动作都比较简单,比如循环操作的内置动作就一个,那就是中断循环,该动作只能用在循环规则里,用于在一定条件下中断当前的循环规则。这里挑一些常用的内置动作加以介绍。
本文档是 URule Pro 4.0.0 所有内置动作、内置函数和比较操作符的汇总索引。
当前规则(CurrentRuleAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
当前规则对象 |
getCurrentRule |
无 |
Rule |
返回当前执行的规则对象 |
| 2 |
当前规则名 |
getCurrentRuleName |
无 |
String |
返回当前规则的名称 |
| 3 |
当前规则匹配的条件 |
getCurrentRuleCriterias |
无 |
Set<Criteria> |
返回当前规则匹配时经历的条件节点集合 |
字符串(StringAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
去空格 |
trim |
目标字符串 |
String |
去除两边空格 |
| 2 |
指定起止的字符串截取 |
substring |
目标字符串, 开始位置, 结束位置 |
String |
截取指定区段 |
| 3 |
指定开始的字符串截取 |
substringForStart |
目标字符串, 开始位置 |
String |
从指定位置截取到末尾 |
| 4 |
指定结束的字符串截取 |
substringForEnd |
目标字符串, 结束位置 |
String |
从开始截取到指定位置 |
| 5 |
转小写 |
toLowerCase |
目标字符串 |
String |
转小写(仅英文) |
| 6 |
转大写 |
toUpperCase |
目标字符串 |
String |
转大写(仅英文) |
| 7 |
获取长度 |
length |
目标字符串 |
Integer |
返回字符串长度 |
| 8 |
获取字符 |
charAt |
目标字符串, 位置 |
Character |
返回指定位置字符 |
| 9 |
字符首次出现位置 |
indexOf |
目标字符串, 要查找的字符串 |
Integer |
查找子串首次出现位置 |
| 10 |
字符最后出现位置 |
lastIndexOf |
目标字符串, 要查找的字符串 |
Integer |
查找子串最后出现位置 |
| 11 |
替换字符串 |
replace |
目标字符串, 原字符串, 新字符串 |
String |
替换指定子串 |
| 12 |
拆分字符串为集合 |
split |
目标字符串, 分隔符 |
List<String> |
按分隔符拆分为集合 |
数学函数(MathAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
求绝对值 |
abs |
数字 |
Number |
返回绝对值 |
| 2 |
求最大值 |
max |
数字1, 数字2 |
Number |
返回两数中最大的 |
| 3 |
求最小值 |
min |
数字1, 数字2 |
Number |
返回两数中最小的 |
| 4 |
求正弦 |
in |
数字 |
Number |
返回正弦值 |
| 5 |
求余弦 |
cos |
数字 |
Number |
返回余弦值 |
| 6 |
求正切 |
tan |
数字 |
Number |
返回正切值 |
| 7 |
求余切 |
cot |
数字 |
Number |
返回余切值 |
| 8 |
求e为底的对数 |
log |
数字 |
Number |
返回自然对数 |
| 9 |
求10为底的对数 |
log10 |
数字 |
Number |
返回以10为底的对数 |
| 10 |
向下取整 |
floor |
数字 |
Number |
向下取整 |
| 11 |
向上取整 |
round |
数字 |
Number |
向上取整 |
| 12 |
四舍五入 |
halfUp |
数字, 小数位数 |
Number |
按指定位数四舍五入 |
| 13 |
求指数 |
exp |
底数, 幂 |
Double |
计算指定幂次方 |
日期(DateAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
当前日期 |
getDate |
无 |
Date |
返回当前日期 |
| 2 |
格式化日期 |
format |
目标日期, 格式 |
String |
按指定格式格式化日期 |
| 3 |
解析字符串为日期 |
formatString |
日期字符串, 格式 |
Date |
将字符串解析为日期 |
| 4 |
加日期 |
addDate |
目标日期, 年数, 月数, 天数, 小时, 分钟, 秒数 |
Date |
对日期加减年月日时分秒 |
| 5 |
日期加年 |
addDateForYear |
目标日期, 年数 |
Date |
加指定年数 |
| 6 |
日期加月 |
addDateForMonth |
目标日期, 月数 |
Date |
加指定月数 |
| 7 |
日期加天 |
addDateForDay |
目标日期, 天数 |
Date |
加指定天数 |
| 8 |
日期加小时 |
addDateForHour |
目标日期, 小时数 |
Date |
加指定小时数 |
| 9 |
日期加分钟 |
addDateForMinute |
目标日期, 分钟数 |
Date |
加指定分钟数 |
| 10 |
日期加秒 |
addDateForSecond |
目标日期, 秒数 |
Date |
加指定秒数 |
| 11 |
减日期 |
subDate |
目标日期, 年数, 月数, 天数, 小时, 分钟, 秒数 |
Date |
对日期减年月日时分秒 |
| 12 |
减日期减年 |
subDateForYear |
目标日期, 年数 |
Date |
减指定年数 |
| 13 |
减日期减月 |
subDateForMonth |
目标日期, 月数 |
Date |
减指定月数 |
| 14 |
减日期减天 |
subDateForDay |
目标日期, 天数 |
Date |
减指定天数 |
| 15 |
减日期减小时 |
subDateForHour |
目标日期, 小时 |
Date |
减指定小时数 |
| 16 |
减日期减分钟 |
subDateForMinute |
目标日期, 分钟 |
Date |
减指定分钟数 |
| 17 |
减日期减秒 |
subDateForSecond |
目标日期, 秒数 |
Date |
减指定秒数 |
| 18 |
取年份 |
getYear |
目标日期 |
Integer |
取年份 |
| 19 |
取月份 |
getMonth |
目标日期 |
Integer |
取月份(返回比实际少1) |
| 20 |
取星期 |
getWeek |
目标日期 |
Integer |
取星期(星期日=1) |
| 21 |
取天 |
getay |
目标日期 |
Integer |
取所在月份的天 |
| 22 |
取小时 |
getHour |
目标日期 |
Integer |
取小时 |
| 23 |
取分钟 |
getMinute |
目标日期 |
Integer |
取分钟 |
| 24 |
取秒 |
getSecond |
目标日期 |
Integer |
取秒 |
| 25 |
日期相减返回毫秒 |
dateDifMillSecond |
日期, 减去的日期 |
Long |
两日期相差毫秒 |
| 26 |
日期相减返回秒 |
dateDifSecond |
日期, 减去的日期 |
Long |
两日期相差秒 |
| 27 |
日期相减返回分钟 |
dateDifMinute |
日期, 减去的日期 |
Long |
两日期相差分钟 |
| 28 |
日期相减返回小时 |
dateDifHour |
日期, 减去的日期 |
Long |
两日期相差小时 |
| 29 |
日期相减返回天 |
dateDifDay |
日期, 减去的日期 |
Long |
两日期相差天数 |
| 30 |
日期相减返回星期 |
dateDifWeek |
日期, 减去的日期 |
Long |
两日期相差星期数 |
| 31 |
日期相减返回月 |
dateDifMonth |
日期, 减去的日期 |
Integer |
两日期相差月数 |
| 32 |
取指定月份天数 |
buildIncludeMonthDays |
开始日期, 结束日期, 月份 |
int |
时间段内指定月份的天数 |
| 33 |
取非指定月份天数 |
buildExcludeMonthDays |
开始日期, 结束日期, 月份 |
int |
时间段内非指定月份的天数 |
List集合(ListAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
求List大小 |
size |
集合对象 |
int |
返回集合大小 |
| 2 |
取List中指定位置对象 |
get |
集合对象, 索引 |
Object |
按索引取元素 |
| 3 |
求List中所有的数字最大值 |
max |
包含所有数字的集合对象 |
Number |
返回集合中最大数字 |
| 4 |
求List中所有的数字最小值 |
min |
包含所有数字的集合对象 |
Number |
返回集合中最小数字 |
| 5 |
向List中添加对象 |
add |
集合对象, 要添加的对象 |
void |
添加元素 |
| 6 |
集合排序 |
sort |
集合对象, 属性名, 排序方式 |
List<Object> |
按属性排序 |
| 7 |
抽取集合属性 |
retrive |
集合对象, 属性名 |
List<Object> |
抽取元素属性生成新集合 |
| 8 |
从List中删除对象 |
remove |
集合对象, 要删除的对象 |
void |
删除指定元素 |
| 9 |
指定对象是否存在 |
contains |
集合对象, 要判断的对象 |
boolean |
判断元素是否存在 |
| 10 |
List是否为空 |
isEmpty |
集合对象 |
boolean |
判断集合是否为空 |
| 11 |
实例化一个ArrayList |
newArrayListInstance |
无 |
ArrayList<Object> |
创建空ArrayList |
Map集合(MapAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
添加到Map |
put |
Map对象, key, value |
void |
添加键值对 |
| 2 |
从Map中删除 |
remove |
Map对象, key |
void |
删除指定键 |
| 3 |
指定Key是否存在 |
containsKey |
Map对象, key |
boolean |
判断键是否存在 |
| 4 |
从Map中取值 |
get |
Map对象, key |
Object |
根据键取值 |
| 5 |
返回Map大小 |
size |
Map对象 |
int |
返回元素数量 |
| 6 |
返回Map的Key集合 |
keys |
Map对象 |
Set<String> |
返回所有键 |
| 7 |
返回Map的值集合 |
values |
Map对象 |
Collection<Object> |
返回所有值 |
| 8 |
创建一个HashMap实例 |
newHashMap |
无 |
HashMap<String, Object> |
创建空HashMap |
对象(ObjectAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
空字符串 |
toEmptyString |
无 |
String |
返回空字符串"" |
| 2 |
null |
toNull |
无 |
Object |
返回null |
| 3 |
对象实例化 |
newObjectInstance |
完整类路径 |
Object |
根据类路径创建实例 |
| 4 |
根据对象创建新实例 |
newObjectInstanceByObject |
目标对象 |
Object |
根据对象创建新实例(非clone) |
| 5 |
对象取值 |
getObjectProperty |
目标对象, 属性名 |
Object |
从对象中取属性值 |
调用(InvokeAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
知识包 |
invokeKnowledgePackage |
知识包 |
void |
调用已发布的知识包 |
| 2 |
规则文件 |
invokeFile |
文件 |
void |
调用规则文件 |
IF_ERROR(CommonAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
IF_ERROR |
iferror |
值, 出错后值 |
Object |
类似Excel的iferror,出错返回备用值 |
循环操作(LoopAction)
| # |
方法名 |
方法名(英文) |
参数 |
返回值 |
说明 |
| 1 |
中断循环 |
breakLoop |
无 |
String |
中断当前循环规则 |
| 2 |
当前循环对象 |
currentLoopObject |
无 |
Object |
获取当前循环对象 |
内置函数系列
| # |
函数名 |
label(中文) |
参数名 |
needProperty |
说明 |
| 1 |
ActiveRule |
激活当前互斥组规则 |
规则名 |
false |
激活互斥组中指定名称的规则 |
| 2 |
ActiveAgenda |
激活执行组 |
执行组名 |
false |
激活执行组中的规则使其进入可匹配状态 |
| 3 |
ActivePended |
激活执行组并执行 |
执行组名 |
false |
激活执行组并立即执行匹配的规则 |
| 4 |
Sin |
求正弦 |
对象 |
true |
对象属性值的正弦 |
| 5 |
Cos |
求余弦 |
对象 |
true |
对象属性值的余弦 |
| 6 |
Tan |
求正切 |
对象 |
true |
对象属性值的正切 |
| 7 |
Ln |
求自然对数 |
对象 |
true |
对象属性值的自然对数 |
| 8 |
Exp |
求e为底指数 |
对象 |
true |
对象属性值的 e 指数 |
| 9 |
Trim |
字符去空格 |
对象 |
true |
对象属性值去空格 |
| 10 |
StringLength |
计算字符长度 |
对象 |
true |
对象属性值的字符串长度 |
| 11 |
Abs |
求绝对值 |
对象 |
true |
对象属性值的绝对值 |
| 12 |
Avg |
求平均值 |
集合对象 |
true |
集合元素属性值的平均值 |
| 13 |
MinValue |
求最小值(数字) |
集合对象 |
true |
集合元素属性值的最小数字 |
| 14 |
InsertFact |
插入对象到工作区 |
要插入的对象 |
false |
插入Fact到工作区并触发更新 |
| 15 |
MaxValue |
求最大值(数字) |
集合对象 |
true |
集合元素属性值的最大数字 |
| 16 |
Max |
求最大值对象 |
集合对象 |
true |
返回属性值最大的集合元素对象 |
| 17 |
Min |
求最小值对象 |
集合对象 |
true |
返回属性值最小的集合元素对象 |
| 18 |
Sum |
求和 |
集合对象 |
true |
集合元素属性值的总和 |
| 19 |
Count |
统计数量 |
集合对象 |
false |
返回集合大小 |
比较操作符系列
| # |
符号 |
Op枚举 |
Assertor类 |
左值类型 |
右值类型 |
说明 |
| 1 |
== |
Equals |
EqualsAssertor |
任意 |
任意 |
相等比较,支持String/Number/Date/Boolean/Enum |
| 2 |
!= |
NotEquals |
NotEqualsAssertor |
任意 |
任意 |
不相等(对null有特殊处理) |
| 3 |
EqualsIgnoreCase |
EqualsIgnoreCase |
EqualsIgnoreCaseAssertor |
任意 |
任意 |
忽略大小写相等 |
| 4 |
NotEqualsIgnoreCase |
NotEqualsIgnoreCase |
NotEqualsIgnoreCaseAssertor |
任意 |
任意 |
忽略大小写不等 |
| 5 |
> |
GreaterThen |
GreaterThenAssertor |
数字/日期 |
数字/日期 |
大于 |
| 6 |
>= |
GreaterThenEquals |
GreaterThenEqualsAssertor |
数字/日期 |
数字/日期 |
大于等于 |
| 7 |
< |
LessThen |
LessThenAssertor |
数字/日期 |
数字/日期 |
小于 |
| 8 |
<= |
LessThenEquals |
LessThenEqualsAssertor |
数字/日期 |
数字/日期 |
小于等于 |
| 9 |
In |
In |
InAssertor |
元素/集合 |
集合(字符串或Collection) |
属于集合 |
| 10 |
NotIn |
NotIn |
NotInAssertor |
元素/集合 |
集合 |
不属于集合 |
| 11 |
StartWith |
StartWith |
StartWithAssertor |
字符串 |
字符串(前缀) |
以…开头 |
| 12 |
NotStartWith |
NotStartWith |
NotStartWithAssertor |
字符串 |
字符串(前缀) |
不以…开头 |
| 13 |
EndWith |
EndWith |
EndWithAssertor |
字符串 |
字符串(后缀) |
以…结尾 |
| 14 |
NotEndWith |
NotEndWith |
NotEndWithAssertor |
字符串 |
字符串(后缀) |
不以…结尾 |
| 15 |
Null |
Null |
NullAssertor |
任意 |
(忽略) |
为null或空字符串 |
| 16 |
NotNull |
NotNull |
NotNullAssertor |
任意 |
(忽略) |
非null且非空字符串 |
| 17 |
Match |
Match |
MatchAssertor |
字符串 |
字符串(正则) |
正则匹配 |
| 18 |
NotMatch |
NotMatch |
NotMatchAssertor |
字符串 |
字符串(正则) |
正则不匹配 |
| 19 |
Contain |
Contain |
ContainAssertor |
字符串/集合 |
子串/元素/集合 |
包含 |
| 20 |
NotContain |
NotContain |
NotContainAssertor |
字符串/集合 |
子串/元素/集合 |
不包含 |
| 21 |
Between |
Between |
BetweenAssertor |
数字/日期 |
区间字符串[a,b] |
在区间内 |
| 22 |
NotBetween |
NotBetween |
NotBetweenAssertor |
数字/日期 |
区间字符串[a,b] |
不在区间内 |