リファレンス restriction
ルール用語でrestrictionとよく用いられていますが、単純に条件のことね、whenのTypeの()の中で記述する部分。指定の仕方として今までのようなもの以外にも細かく分類するとこういう書き方もできるよ、というのが以下の3つ。
1.return Value Restriction
事前に変数につめた戻り値をつかって条件を記述する例
rule "parents" auto-focus true when Person(myAge : age, sex == 'M') Person(age > (myAge + 3), sex == 'F') then System.out.println("ok"); end
myAgeにセットした値で条件追加してます。3つ以上の女性じゃないとだめ、という例。
2.Compound Value Restriction
複数値が想定される場合にはin/not inを使えます。SQLと一緒ですね。
rule "children" auto-focus true when Person(lastName in ("taro","jiro")) then System.out.println("ok"); end
3.Multi Restriction
複数の条件を記述したい場合に用います、よくある&&もありますが、()で閉じる記述もできます。
rule "children" when Person(age > 30 && < 40) then System.out.println("ok"); end
と書きます。Javaとちょっと書き方が違いますね。FirstOrderLogicです。()つきで条件を追加すると
rule "children" when Person(age (( > 30 && < 40) || ( > 45 && < 50))) then System.out.println("ok"); end
31-39,もしくは46-49という条件になります。単純なんだけどJavaとごっちゃに作業してると最初は慣れなさそう。