±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ粩¿Í£¬DroolsÊÇÒ»¿î»ùÓÚJavaµÄ¿ªÔ´¹æÔòÒýÇæ£¬±¾ÎÄÏê½âÁËDrools£¬Ï£Íû¶ÔÄúµÄѧϰÓаïÖú¡£ |
|
DroolsÊÇÒ»¿î»ùÓÚJavaµÄ¿ªÔ´¹æÔòÒýÇæ
ʵÏÖÁ˽«ÒµÎñ¾ö²ß´ÓÓ¦ÓóÌÐòÖзÖÀë³öÀ´¡£
Óŵ㣺
1¡¢¼ò»¯ÏµÍ³¼Ü¹¹£¬ÓÅ»¯Ó¦ÓÃ
2¡¢Ìá¸ßϵͳµÄ¿Éά»¤ÐÔºÍά»¤³É±¾
3¡¢·½±ãϵͳµÄÕûºÏ
4¡¢¼õÉÙ±àд¡°Ó²´úÂ롱ҵÎñ¹æÔòµÄ³É±¾ºÍ·çÏÕ
DroolsµÄ»ù±¾¹¤×÷¹¤³Ì
ÎÒÃÇÐèÒª´«µÝ½øÈ¥Êý¾Ý£¬ÓÃÓÚ¹æÔòµÄ¼ì²é£¬µ÷ÓÃÍⲿ½Ó¿Ú£¬Í¬Ê±»¹¿ÉÄÜ»ñÈ¡¹æÔòÖ´ÐÐÍê±ÏÖ®ºóµÃµ½µÄ½á¹û
Fact¶ÔÏó£º
Ö¸´«µÝ¸ødrools½Å±¾µÄ¶ÔÏó£¬ÊÇÒ»¸öÆÕͨµÄjavabean£¬ÔÀ´javaBean¶ÔÏóµÄÒýÓ㬿ÉÒԶԸöÔÏó½øÐжÁд²Ù×÷£¬²¢µ÷ÓøöÔÏóµÄ·½·¨
µ±Ò»¸öjava bean²åÈëµ½working Memory£¨ÄÚ´æ´æ´¢£©ÖУ¬¹æÔòʹÓõÄÊÇÔÓжÔÏóµÄÒýÓ㬹æÔòͨ¹ý¶Ôfact¶ÔÏóµÄ¶Áд£¬
ʵÏÖ¶ÔÓ¦ÓÃÊý¾ÝµÄ¶Áд£¬¶ÔÆäÖеÄÊôÐÔ£¬ÐèÒªÌṩgetºÍset·½·¨£¬¹æÔòÖпÉÒÔ¶¯Ì¬µÄǰÍùworking
memoryÖвåÈëɾ³ýеÄfact¶ÔÏó
DroolsµÄ»ù´¡Óï·¨£º
°ü·¾¶£¬ÒýÓ㬹æÔòÌå (ÆäÖаü·¾¶ºÍ¹æÔòÌåÊDZØÐëµÄ)
DrlÎļþÄÚÈÝ£º
Àý×Ó£ºhello.drlÎļþÈçÏ£º
package£º°ü·¾¶£¬¸Ã·¾¶ÊÇÂ߼·¾¶(¿ÉÒÔËæ±ãд£¬µ«ÊDz»Äܲ»Ð´£¬×îºÃºÍÎļþĿ¼ͬÃû£¬ÒÔ(.)µÄ·½Ê½¸ô¿ª)£¬¹æÔòÎļþÖÐÓÀÔ¶ÊǵÚÒ»ÐÐ
rule£º¹æÔòÌ壬ÒÔrule¿ªÍ·£¬ÒÔend½áβ£¬Ã¿¸öÎļþ¿ÉÒÔ°üº¬¶à¸örule
£¬¹æÔòÌå·ÖΪ3¸ö²¿·Ö£ºLHS£¬RHS£¬ÊôÐÔ Èý´ó²¿·Ö
LHS£º(Left Hand Side)£¬Ìõ¼þ²¿·Ö£¬ÔÚÒ»¸ö¹æÔòµ±ÖС°when¡±ºÍ¡°then¡±ÖмäµÄ²¿·Ö¾ÍÊÇLHS²¿·Ö£¬ÔÚLHSµ±ÖУ¬¿ÉÒÔ°üº¬0~N¸öÌõ¼þ£¬Èç¹û
LHSΪ¿ÕµÄ»°£¬ÄÇôÒýÇæ»á×Ô¶¯Ìí¼ÓÒ»¸öeval(true)µÄÌõ¼þ£¬ÓÉÓÚ¸ÃÌõ¼þ×ÜÊÇ·µ»Øtrue£¬ËùÒÔLHSΪ¿ÕµÄ¹æÔò×ÜÊÇ·µ»Øtrue¡£
RHS£º(Right Hand Side)£¬ÔÚÒ»¸ö¹æÔòÖС°then¡±ºóÃæµÄ²¿·Ö¾ÍÊÇRHS£¬Ö»ÓÐÔÚLHSµÄËùÓÐÌõ¼þ¶¼Âú×ãµÄÇé¿öÏ£¬RHS²¿·Ö²Å»áÖ´ÐС£
RHS²¿·ÖÊǹæÔòÕæÕý×öÊÂÇéµÄ²¿·Ö£¬Âú×ãÌõ¼þ´¥·¢¶¯×÷µÄ²Ù×÷²¿·Ö£¬ÔÚRHS¿ÉÒÔʹÓÃLHS²¿·Öµ±Öе͍ÒåµÄ°ó¶¨±äÁ¿Ãû£¬ÉèÖõÄÈ«¾Ö±äÁ¿¡¢
»òÕßÊÇÖ±½Ó±àдµÄjava´úÂ룬¿ÉÒÔʹÓÃimportµÄÀà¡£
²»½¨ÒéÓÐÌõ¼þÅжϡ£
¿ÉÒÔʹÓÿìËÙ²Ù×÷working MemoryµÄºêº¯ÊýºÍ¶ÔÏ󣬱ÈÈçinsert/insertLogical,update/modifyºÍretract¾Í¿ÉÒÔʵÏÖ¶Ôµ±Ç°Working
MemoryÖеÄFact¶ÔÏó
½øÐÐÐÂÔö£¬Ð޸쬻òÕßɾ³ý£¬¿ÉÒÔʹÓÃdroolºê¶ÔÏó£¬Drools»¹ÌṩÁËkcontextµÄºê¶ÔÏ󣬸öÔÏó¿ÉÒÔÖ±½Ó·ÃÎʵ±Ç°Working
MemoryµÄKnowledgeRuntime¡£
import£ºµ¼Èë¹æÔòÎļþÐèҪʹÓõ½µÄÍⲿ±äÁ¿£¬¿ÉÒÔµ¼ÈëÀ࣬Ҳ¿ÉÒÔÊÇÕâ¸öÀàÖеľ²Ì¬·½·¨
ÀýÈ磺
import
com.dinpay.dpp.rcp.service.util.RuleLogUtil;
µ¼ÈëÀà
import com.dinpay.dpp.rcp.service.util.RuleLogUtil.getLog;//µ¼È뾲̬·½·¨ |
DroolsµÄAPIµ÷ÓÃ
API¿ÉÒÔ·ÖΪÈýÀࣺ¹æÔò±àÒ룬¹æÔòÊÕ¼¯£¬¹æÔòÖ´ÐÐ
1¡¢Kmodule.xmlµÄ±àÒë
´æ·ÅÔÚsrc/main/resources/META-INF/Îļþ¼ÐÏÂ
<?xml
version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules.testword">
<ksession name="session"/>
</kbase>
</kmodule> |
1)¡¢¿É°üº¬¶à¸ökbase£¬ÈÎÒ⵫²»ÄÜÖØÃû
2)¡¢Óиöpackages£¬¾ÍÊÇsrc/main/resourcesÏÂÃæµÄÎļþ¼ÐÃû³Æ£¬¿É¶¨Òå¶à¸ö°ü£¬ÓöººÅ¸ô¿ª
3)¡¢ksession¶¼Ò»¸öname£¬ÈÎÒâ×Ö·û´®µ«²»ÄÜÖØÃû£¬¿ÉÒÔÓжà¸ö
4)¡¢ÔÚÔËÐÐʱ¡¢KieContainer»á¸ù¾Ý*Model¶ÔÏóÀ´´´½¨KieModule£¬KieBase£¬KieSession¶ÔÏ󣬯äÖÐKieModuleºÍKieBaseÖ»»á´´½¨Ò»´Î£¬¶øKieSessionÔò¿ÉÄÜ´´½¨¶à´Î
2¡¢API˵Ã÷£¬ÒýÈëdroolsÒÀÀµjar°ü£¬drools-core£¬kie-api£¬drools-compiler
KieSession£»
ÓÃÓÚÓë¹æÔòÒýÇæ½øÐн»»¥µÄ»á»°
·ÖΪÁ½Àࣺ
ÓÐ״̬KieSession£ºKieSession»áÔÚ¶à´ÎÓë¹æÔòÒýÇæ½øÐн»»¥ÖУ¬Î¬»¤»á»°×´Ì¬£¬typeÊôÐÔÖµÊÇstateful£¬
×îºóÐèÒªÇåÀíKieSessionά»¤µÄ״̬£¬µ÷ÓÃdispose()·½·¨
ÎÞ״̬StatelessKieSession£ºStatelessKieSession¸ôÀëÁËÿ´ÎÓë¹æÔòÒýÇæµÄ½»»¥£¬²»»áά»¤»á»°×´Ì¬£¬ÎÞ¸±×÷Óã¬typeÊôÐÔÖµÊÇstateless
Ó¦Óó¡¾°£ºÊý¾ÝУÑ飬ÔËË㣬Êý¾Ý¹ýÂË£¬ÏûϢ·ÓÉ£¬ÈκÎÄܱ»ÃèÊö³Éº¯Êý»ò¹«Ê½µÄ¹æÔò
DroolsÄÚ²¿¹¦ÄÜÏêϸ½éÉÜ
¹æÔòÎļþ
Ò»¸ö±ê×¼µÄ¹æÔòÎļþµÄ½á¹¹´úÂ룺
package package-name(°üÃû£¬±ØÐëµÄ£¬Ö»ÏÞÖÆÓÚÂß¼ÉϵĹÜÀí£¬Èô×Ô¶¨Òå²éѯ»òÕߺ¯ÊýÊôÓÚͬһ¸ö°üÃû£¬²»¹ÜÎïÀíλÖÃÈçºÎ£¬¶¼¿ÉÒÔµ÷ÓÃ)
imports (ÐèÒªµ¼ÈëµÄÀàÃû)
globals (È«¾Ö±äÁ¿)
functions (º¯Êý)
queries (²éѯ)
rules (¹æÔò£¬¿ÉÒÔ¶à¸ö)
packageÔÚ¹æÔòÎļþÖÐÊǵÚÒ»ÐУ¬ÆäËûµÄ˳Ðò¿ÉÒÔÊÇÎÞÐòµÄ£¬package¶ÔÓÚ¹æÔòÎļþÖйæÔòµÄ¹ÜÀíÖ»ÏÞÓÚÂß¼ÉϵĹÜÀí
¹æÔòÓïÑÔ
rule ¡°name¡±
attributes ---->ÊôÐÔ
when
LHS ---->Ìõ¼þ
then
RHS ---->½á¹û
end
Ò»¸ö¹æÔò°üº¬Èý²¿·Ö£ºÎ¨ÓÐattributes²¿·Ö¿ÉÑ¡£¬ÆäËû¶¼ÊDZØÌîÐÅÏ¢
¶¨Ò嵱ǰ¹æÔòÖ´ÐеÄһЩÊôÐԵȣ¬±ÈÈçÊÇ·ñ¿É±»Öظ´Ö´ÐУ¬¹ýÆÚʱ¼ä£¬ÉúЧʱ¼äµÈ
LHS£º¶¨Ò嵱ǰ¹æÔòµÄÌõ¼þ£¬Èç when Message();Åжϵ±Ç°workingMemoryÖÐÊÇ·ñ´æÔÚMessage¶ÔÏó
RHS£º¿ÉÒÔдjava´úÂ룬¼´µ±Ç°¹æÔòÌõ¼þÂú×ãÖ´ÐеIJÙ×÷£¬¿ÉÒÔÖ±½Óµ÷ÓÃFact¶ÔÏóµÄ·½·¨À´²Ù×÷Ó¦ÓÃ
LHS£ºÈç¹ûLHS²¿·ÖΪ¿Õ£¬×Ô¶¯Ìí¼ÓÒ»¸öeval(true)²Ù×÷
LHS²¿·ÖÊÇÓÉÒ»¸ö»ò¶à¸öÌõ¼þ×é³É£¬Ìõ¼þÓÖ³ÆÎªpattern(Æ¥Åäģʽ)£¬¶à¸öpatternÖ®¼ä¿ÉÒÔʹÓÃ
and »ò orÀ´½øÐÐÁ¬½Ó£¬Í¬Ê±»¹¿ÉÒÔʹÓÃСÀ¨ºÅÀ´È·¶¨patternµÄÓÅÏȼ¶
¡¾°ó¶¨±äÁ¿Ãû£º¡¿Object(¡¾filed Ô¼Êø¡¿)
¶ÔÓÚÒ»¸öpatternÀ´Ëµ"°ó¶¨±äÁ¿Ãû"ÊÇ¿ÉÑ¡µÄ£¬Èç¹ûÔÚµ±Ç°¹æÔòµÄLHS²¿·ÖµÄÆäËûpatternҪʹÓÃÕâ¸ö¶ÔÏó£¬ÄÇô¿ÉÒÔͨ¹ýΪ¸Ã¶ÔÏó°ó¶¨É趨һ¸ö
°ó¶¨±äÁ¿ÃûÀ´ÊµÏÖ¶ÔÆäµÄÒýÓ㬶ÔÓڰ󶨱äÁ¿µÄÃüÃû£¬Í¨³£µÄ×ö·¨ÊÇΪÆäÌí¼ÓÒ»¸ö
"$"·ûºÅ×÷Ϊǰ׺£¬¿ÉÒÔºÍFact¶ÔÏóÇø·Ö¿ªÀ´
°ó¶¨±äÁ¿¿ÉÒÔÓÃÓÚ¶ÔÏóÉÏ£¬¿ÉÒÔÓÃÓÚ¶ÔÏóÊôÐÔÉÏ£¬"fieldÔ¼Êø"ÊÇÖ¸µ±Ç°¶ÔÏóÀïÏà¹Ø×ֶεÄÌõ¼þÏÞÖÆ
rule
"rule1"
when
$customer:Customer()
then
<action>...
end |
¹æÔòÖÐLHS²¿·Öµ¥¸öpattern(ģʽ)µÄÇéÐΡ£
¹æÔòÖÐ"$customer"¾ÍÊǰ󶨵½Customer¶ÔÏóµÄ"°ó¶¨±äÁ¿Ãû"£¬¸Ã¹æÔòµÄLHS²¿·Ö±íʾ£¬ÒªÇóFact¶ÔÏó±ØÐëÊÇCustomerÀàÐÍ£¬¸ÃÌõ¼þÂú×㣬ÄÇôËüµÄLHS»á·µ»Øtrue\
rule
"rule1"
when
$customer:Customer(age>20,gender=="male")
Order(customer==$customer,price>1000)
then
<action>...
end |
µÚÒ»¸öpatternÓÐÈý¸öÔ¼Êø
1¡¢¶ÔÏóÀàÐͱØÐëÊÇCustomer£»
2¡¢CustomerµÄageÒª´óÓÚ20
3¡¢CustomerµÄgenderÒªÊÇmale
µÚ¶þ¸öpatternÓÐÈý¸öÔ¼Êø
1¡¢¶ÔÏóÀàÐͱØÐëÊÇOrder
2¡¢Order¶ÔÓ¦µÄCustomer±ØÐëÊÇÇ°ÃæÄǸöCustomer
3¡¢µ±Ç°Õâ¸öOrderµÄpriceÒª´óÓÚ1000
ÕâÁ½¸öpatternûÓзûºÅÁ¬½Ó£¬ÔÚDroolsµ±ÖÐûÓÐÁ¬½Ó·ûºÅ£¬Ä¬ÈÏÊÇand£¬Ö»ÓÐÁ½¸öpattern(ģʽ)¶¼Âú×ã²Å»á·µ»Øtrue£¬Ã¿ÐпÉÒÔÓÃ";"½áÊø
Ô¼ÊøÁ¬½Ó
¶ÔÏóÄÚ²¿µÄ¶à¸öÔ¼ÊøÁ¬½Ó "&&"(and),"||"(or)ºÍ","(and)À´ÊµÏÖ
Èç¹û¼ÇÐÔ³£Á¿µÄ±È½Ï£¬±ØÐëͨ¹ýeval(Ìõ¼þ)»òÕß¶ÔÏóÒýÓñȽ϶ÔÏóÊôÐÔ£¬²»Äܵ¥¶ÀÒýÓÃ
12¸öÀàÐͱȽϲÙ×÷·û >|<,>=|<=,==|!=,contains|not
contains,memberOf|not memberOf,matches|not matches
DroolsÊôÐÔ˵Ã÷
salienceÓÅÏȼ¶
×÷ÓãºÉèÖùæÔòÖ´ÐеÄÓÅÏȼ¶£¬ÖµÊÇÒ»¸öÊý×Ö£¬Êý×ÖÔ½´óÖ´ÐеÄÓÅÏȼ¶Ô½¸ß£¬ËüµÄÖµ¿ÉÒÔÊÇÒ»¸ö¸ºÊý£¬Ä¬ÈÏÖµÊÇ0
Èç¹ûÎÒÃDz»ÊÖ¶¯ÉèÖÃsalienceÊôÐÔÖµ£¬ÔòÖ´ÐÐ˳ÐòÊÇËæ»úµÄ
no-loop·ÀÖ¹ËÀÑ»·
ÔÚÒ»¸ö¹æÔòÖÐÈç¹ûÌõ¼þÂú×ã¾Í¶ÔWorking Memoryµ±ÖеÄij¸öFact¶ÔÏó½øÐÐÐ޸쬱ÈÈçʹÓÃupdate½«Æä¸üе½µ±Ç°µÄWorking
Memoryµ±ÖУ¬ÕâʱºòÒýÇæ»áÔٴμì²éËùÓеĹæÔòÊÇ·ñÂú×ãÌõ¼þ£¬Èç¹ûÂú×ã»áÔÙÖ´ÐУ¬¿ÉÄÜ»á³öÏÖËÀÑ»·
×÷ÓãºÓÃÀ´¿ØÖÆÒѾִÐйýµÄ¹æÔòÌõ¼þÔÙ´ÎÂú×ãʱÊÇ·ñÔÙ´ÎÖ´ÐУ¬Ä¬ÈÏÊÇfalse£¬Èç¹ûÊôÐÔÖµÊÇtrue£¬±íʾ¸Ã¹æÔòÖ»»á±»¹æÔòÒýÇæ¼ì²éÒ»´Î£¬Èç¹ûÂú×ãÌõ¼þ¾ÍÖ´ÐйæÔòµÄRHS²¿·Ö
×¢Ò⣺Èç¹ûÒýÇæÄÚ²¿ÒòΪ¶ÔFact¸üÐÂÒýÆðÒýÇæÔÙ´ÎÆô¶¯¼ì²é¹æÔò£¬ÄÇôËü»áºöÂÔµôËùÓеÄno-loopÊôÐÔÉèÖÃΪtrueµÄ¹æÔò
ÀýÈçÒÔÏÂÇé¿ö£º¼ÆËãÉèÖÃÁËno-loopΪtrueÒ²»á³öÏÖËÀÑ»·
package
rules.testword
import com.drools.test.Person
rule test001
no-loop true
when
¡¡¡¡¡¡¡¡¡¡¡¡$p:Person(name=="ÕÅÈý");
¡¡¡¡¡¡¡¡ then
¡¡¡¡¡¡¡¡¡¡¡¡$p.setAge(50);
¡¡¡¡¡¡¡¡¡¡¡¡update($p);
¡¡¡¡¡¡¡¡¡¡¡¡System.out.println("ÉèÖÃno-loopʱµÄЧ¹û");
¡¡¡¡end
rule test002
¡¡¡¡no-loop true
¡¡¡¡when
¡¡¡¡¡¡¡¡$p:Person(age==50);
¡¡¡¡then
¡¡¡¡¡¡¡¡$p.setName("ÕÅÈý");
¡¡¡¡¡¡¡¡update($p);
¡¡¡¡¡¡¡¡System.out.println("ÉèÖÃno-loopʱµÄЧ¹û");
end |
date-effectiveÈÕÆÚ±È½ÏСÓÚµÈÓÚ
date-expiresÈÕÆÚ±È½Ï´óÓÚ
Dialect·½ÑÔ
EnabledÊÇ·ñ¿ÉÓÃ
lock-on-active¹æÔòÖ´ÐÐÒ»´Îµ±ÔÚ¹æÔòÉÏʹÓÃruleflow-groupÊôÐÔ»òagenda-groupÊôÐÔµÄʱºò£¬½«lock-on-activeÊôÐÔµÄÖµÉèÖÃΪtrue£¬¿ÉÒÔ±ÜÃâÒòijЩFact¶ÔÏó±»Ð޸ĶøÊ¹ÒѾִÐйý
µÄ¹æÔòÔٴα»¼¤»îÖ´ÐС£¿ÉÒÔ¿´³ö¸ÃÊôÐÔÓëno-loopÊôÐÔÓÐÏàËÆÖ®´¦£¬no-loopÊôÐÔÊÇΪÁ˱ÜÃâFactÐ޸Ļòµ÷ÓÃÁËinsert£¬retract£¬updateÖ®ÀർÖÂ
¹æÔòÔٴ줻îÖ´ÐУ¬ÕâÀïlock-on-activeÊôÐÔÒ²ÊÇÕâ¸ö×÷Óã¬lock-on-activeÊÇno-loopµÄÔöÇ¿°æ¡£
×÷ÓãºÔÚʹÓÃruleflow-groupÊôÐÔ»òagenda-groupÊôÐÔµÄʱºò£¬Ä¬ÈÏÊÇfalse£¬ÉèÖÃΪtrue£¬¸Ã¹æÔòÖ»»áÖ´ÐÐÒ»´Î
activation-group·Ö×é
agenda-greoupÒé³Ì·Ö×é
¹æÔòµÄµ÷ÓÃÓëÖ´ÐÐÊÇͨ¹ýStatelessSessionºÍksessionÀ´ÊµÏֵģ¬Ò»°ãµÄ˳ÐòÊÇ´´½¨Ò»¸öStatelessSession»òksession£¬
½«¸÷ÖÖ¾¹ý±àÒëµÄ¹æÔòµÄpackageÌí¼Óµ½sessionµ±ÖУ¬½ÓÏÂÀ´½«¹æÔòµ±ÖпÉÄÜÓõ½µÄGlobal¶ÔÏóºÍFact¶ÔÏó²åÈëµ½Sessionµ±ÖУ¬
×îºóµ÷ÓÃfireAllRules·½·¨À´´¥·¢£¬Ö´ÐйæÔò£¬ÔÚûÓе÷ÓÃ×îºóÒ»²½·ÖfireAllRules·½·¨Ö®Ç°£¬
ËùÓеĹæÔò¼°²åÈëµÄFact¶ÔÏó¶¼´æ·ÅÔÚAgenda±íµÄ¶ÔÏóµ±ÖУ¬Õâ¸öAgenda±íÖеÄÿ¸ö¹æÔò¼°ÆäÆ¥ÅäÏà¹ØµÄÒµÎñÊý¾Ý½Ð×öActivation£¬
ÔÚµ÷ÓÃfireAllRules·½·¨ºó£¬ÕâЩActivation»áÒÀ´ÎÖ´ÐУ¬ÕâЩλÓÚAgenda±íÖеÄActivationµÄÖ´ÐÐ˳ÐòÔÚûÓÐÉèÖÃÏà¹ØÓÃÀ´
¿ØÖÆË³ÐòµÄʱ(±ÈÈ磺salienceÊôÐÔ)£¬ËüµÄÖ´ÐÐ˳ÐòÊÇËæ»ú²»È·¶¨µÄ¡£
agenda-groupÊÇÓÃÀ´ÔÚAgenda»ù´¡ÉÏ£¬¶ÔÏÖÓеĹæÔò½øÐÐÔٴηÖ×飬¾ßÌåµÄ·Ö×é·½·¨¿ÉÒÔ²ÉÓÃΪ¹æÔòÌí¼Óagenda-groupÊôÐÔÀ´ÊµÏÖ£¬
agenda-groupÊôÐÔµÄÖµÒ²ÊÇÒ»¸ö×Ö·û´®£¬Í¨¹ýÕâ¸ö×Ö·û´®£¬¿ÉÒÔ½«¹æÔò·ÖΪÈô¸É¸öagenda
group£¬Ä¬ÈÏÇé¿öÏ£¬ÒýÇæÔÚµ÷ÓÃÕâЩ
ÉèÖÃÁËagenda-groupÊôÐԵĹæÔòµÄʱºòÐèÒªÖ¸¶¨Ä³¸öagenda
groupµÃµ½Focus(½¹µã)£¬ÕâÑùλÓÚ¸Ãagenda groupµ±ÖеĹæÔò²Å»á´¥·¢Ö´ÐУ¬·ñÔò½«²»Ö´ÐÐ
ʵ¼ÊÓ¦ÓÃÖÐagenda-group¿ÉÒÔºÍauto-focusÊôÐÔÒ»ÆðʹÓÃ
auto-focus½¹µã·Ö×é
uleflow-group¹æÔòÁ÷
Drools drl×¢Ê͵ÄʹÓÃ
µ¥ÐÐ// ¶àÐÐ/**/
Droolsº¯ÊýµÄʹÓÃ
insert²åÈë
Óï·¨¸ñʽ£ºinsert(new Object());
insertLogical²åÈë
updateÐÞ¸Ä
Óï·¨¸ñʽ£ºupdate(Object());
retractɾ³ý¹¦ÄÜ
drools³£Ó÷½·¨
DroolsÓ﷨ƪ֮GlobalÈ«¾Ö±äÁ¿
global²»ÊÇÓÃÀ´×öÊý¾Ý¹²ÏíµÄ£¬session»áÓ°Ïìµ½globalµÄÓ÷¨
×¢Ò⣺
1¡¢³£Á¿ÖµÊDz»ÄܸıäµÄ
2¡¢°ü×°ÀàÊDz»ÄܸıäµÄ
3¡¢ÀàËÆjavaBean£¬ListÕâÀàµÄ²Ù×÷£¬ÊÇ¿ÉÒԸıäÄÚÈݵ쬵«ÄÚ´æµØÖ·ÊDz»»á±äµÄ
DroolsÓ﷨ƪ֮²éѯQuery
DroolsÓ﷨ƪ֮ÀàµÄÉùÃ÷¼°ÔªÊý¾ÝµÄÓ÷¨
ÉùÃ÷ÐÂÀàÐÍ£ºÊ¹Óùؼü×Ödeclare£¬½ô½Ó×Å×Ö¶ÎÁÐ±í£¬ºÍ¹Ø¼ü×Öend¡£
ÀýÈ磺
declare
Address
number£ºint
streetName£ºString
city£ºString
end |
|