First, these are fairly intuitive:
- Matches All : all constraints must evaluate to True before the Rule will fire. This is like AND.
- Matches Any : any constraint evaluated as True will allow the Rule to fire. This is like OR.
- Not Matches All : all constraints must evaluate to False before the Rule will fire. This is like NOT AND.
- Not Matches Any : any constraint evaluated as False will allow the Rule to fire. This is like NOT OR.
Matches is a bit special. If any parameters on the left side of the list have the same name, they will be considered as an OR condition, while the other parameters are considered as AND.
{DATE:ddd} Matches Mon|Tue
{TIME} After 1430
{TIME} Before 1445
Menu Item Group Code Equals Classics
With Matches, the above means:
(Date is Monday or Tuesday)
AND (Time is After 1430 OR Before 1445)
AND (Group Code is Classics)
The issue is the {TIME} parameter … you don’t want it to be an OR condition; instead you want it to be an AND condition in this case.
Using Matches All, the logic is different:
(Date is Monday or Tuesday)
AND (Time is After 1430)
AND (Time is Before 1445)
AND (Group Code is Classics)
P.S. There are many legitimate cases for the use of Matches, but in this scenario you do not want to use it; you want to use Matches All.