一条规则可以有多个规则集。如需执行某事件前查验多个规则,需要设定未来发生的每种条件下的触发规则

规则运算的结果一般是一个布尔值。以下是规则表达式中的运算符列表。

运算符:

支持使用以下运算符,按优先顺序使用:

( )

* /

+ -

圆括号():用于指定表达式的哪一部分应该先求值。

例如:在以下例子中,先计算交易值和折扣的和,然后其结果乘以40(因为是括号里的)。然后这个值再除以100.

currentTxn.discount<=(((currentTxn.value+currentTxn.discount)*40)/100)

注意: 表达式一般是从左到右计算的。

模数运算符(%)


使用表达式核对表达式的值是否可以被特定值整除。您可以根据模式表达式的提示来定义规则。

以下的表达式的意思是,核对交易值除以100是否小于10

currentTxn.value%100<10


等于,不等于,大于,小于

以下例子可以说明如何使用等于、不等于、大于、小于的运算符来编写表达式:
等于:

会员级别为3的表达式。

currentCustomer.slabNumber==3

  

不等于:

核对不在会员等级为“普通”的会员表达式。

currentCustomer.slabName!="Normal"

 

大于

不在基础级别的会员的表达式。

currentCustomer.slabNumber>1

  

小于

 当前触发值小于指定值的表达式。

 currentTrackerCondition.trackerCurrAggr<12000


和或运算符:

使用“和”(&&)运算符一次检查多个表达式。
(currentCustomer.slabNumber>currentCustomer.initialSlabNumber)&&(currentCustomer.slabNumber==3)

 

使用“或”(||)运算符分隔以上提到的任何表达式。以下例子为,通过现金或银行卡支付的会员。
tenderProfile.code=="CASH"||tenderProfile.code=="CARD"

 

日期格式

以下为不同场景中如何使用日期属性。    

<!--Standard Format --> currentTxn.date.isAfter(YYYY,MM,DD,HH,MM,SS)&&currentTxn.date.isHourBetween(HH,HH)&&currentTxn.date.isTimeBetween(HH,MM,HH,MM) 
<!-- Example to check date and time intervals --> currentTxn.date.isAfter(2015,04,25,00,00,00)&&currentTxn.date.isHourBetween(10,12)&&currentTxn.date.isTimeBetween(10,20,11,30) 
<!-- Example to check duration --> currentCustomer.joinDate.daysDiff(currentTxn.date)>=10 
<!-- Example for using date difference --> currentTxn.date.dateDiff(currentCustomer.joinDate)>2 
<!-- Example for using date difference from string --> currentTxn.date.daysDiffFromString("2015-02-14T00:00:00.0000000UTC+05:30")<104 
<!-- Example for using transaction between --> currentTxn.date.isHourBetween(17,20) 
<!-- Example for using time between --> currentTxn.date.isTimeBetween(10,20,11,30) 
<!-- Example for using date is after --> currentTxn.date.isAfter(2015,06,14,13,11,33) 
<!-- Other examples --> currentCustomer.joinDate.day("2") currentCustomer.joinDate.dayOfMonth("25") currentCustomer.joinDate.isValid("anyString") currentCustomer.joinDate.isWeekday("ANYSTRING") currentCustomer.joinDate.isWeekend("ANYSTRING") currentCustomer.joinDate.month("11") currentCustomer.joinDate.year("2016") 
<!-- An example of using multiple scenarios in a single rule expression --> currentTxn.date.isAfter(2015,04,25,00,00,00)&&currentTxn.date.isHourBetween(10,12)&&currentTxn.date.isTimeBetween(1