Drools學習筆記3—Conditions / LHS—字段約束連接&字段約束操作符
阿新 • • 發佈:2017-11-12
mem .html 筆記 and exception .get 字段 nbsp 對象 contains 、 not contains
字段約束連接
- 用於字段約束
- 對象內部多個約束連接,采用“&&”(and)、“||”(or)和“,”(and)
- 執行順序:“&&”(and)、“||”(or)和“,”
字段約束操作符
- >、>=、<、<=、= =、!=
- contains:包含 A contains B, A中包含B
- not contains:與contains相反
- memberOf:單個對象屬於某個集合,this表示當前對象
- not memberOf:與memberof相反
- matches:正則表達式,匹配
- not matches:正則表達式,不匹配
contains 、 not contains
package com.sample import com.bean.Customer; import com.bean.Account; rule "contains" when $account : Account(); $customer : Customer(name=="七夜雪" && accounts contains $account); then System.out.println( "contains test success" ); end rule "not contains" when $account : Account(); $customer : Customer(name=="七夜雪" && accounts not contains $account); then System.out.println( "not contains test success" ); end
/** * 字段約束符,contains * @throws Exception */ @Test public void testContainsRule() throws Exception { KnowledgeBase kbase = readKnowledgeBase("Contains.drl"); StatefulKnowledgeSession ksession= kbase.newStatefulKnowledgeSession(); KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); Customer customer = new Customer(); customer.setName("七夜雪"); Account account1 = new Account(); account1.setNum(100); Account account2 = new Account(); account2.setNum(100); customer.getAccounts().add(account1); //not contains //customer.getAccounts().add(account2); // contains ksession.insert(customer); ksession.insert(account2); ksession.fireAllRules(); logger.close(); }
memberOf 、not memberOf
package com.sample import com.bean.Customer; import com.bean.Account; rule "Memberof" when $customer : Customer(); //當前的account是$customer.getAccounts()的一個成員 $account : Account(this memberOf $customer.getAccounts()); then System.out.println( "memberOf test success and account is " + $account.getName() ); end rule "not Memberof" when $customer : Customer(); //當前的account不是$customer.getAccounts()的一個成員 $account : Account(this not memberOf $customer.getAccounts()); then System.out.println( "not memberOf test success and account is " + $account.getName() ); end
/** * 字段約束符,memberOf * @throws Exception */ @Test public void testMemberOfRule() throws Exception { KnowledgeBase kbase = readKnowledgeBase("Members.drl"); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); Customer customer = new Customer(); Account account1 = new Account(); account1.setName("碧落"); Account account2 = new Account(); account2.setName("黃泉"); customer.getAccounts().add(account1); ksession.insert(customer); ksession.insert(account1); ksession.insert(account2); ksession.fireAllRules(); logger.close(); }
matches 、 not matches
package com.sample import com.bean.Customer; import com.bean.Account; rule "Matchs" when $customer : Customer(name matches "qiye*"); then System.out.println( "Matchs test success and customer is " + $customer.getName() ); end rule "not Matchs" when $customer : Customer(name not matches "qiye*"); then System.out.println( "not Matchs test success and customer is " + $customer.getName() ); end
/** * 字段約束符,memberOf * @throws Exception */ @Test public void testMatcherRule() throws Exception { KnowledgeBase kbase = readKnowledgeBase("Matchs.drl"); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); Customer customer = new Customer(); customer.setName("qiyexue"); Customer customer1 = new Customer(); customer1.setName("biluo"); ksession.insert(customer); ksession.insert(customer1); ksession.fireAllRules(); }
fact對象代碼:http://www.cnblogs.com/qiyexue/p/7822670.html
Drools學習筆記3—Conditions / LHS—字段約束連接&字段約束操作符