Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Droolsѧϰ±Ê¼Ç
 
  2461  次浏览      27
 2018-3-21
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚÍøÂ粩¿Í£¬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ÎļþÈçÏ£º

Hello World!

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

   
2461 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö