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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¿ªÔ´ÒµÎñ¹æÔòÒýÇæJBoss DroolsÈëÃŽéÉÜ
 
  4198  次浏览      27
 2018-3-28  
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÎÄÖжÔÏÖ×´½øÐÐÁË·ÖÎö£¬¶ÔÓÚһЩÎÊÌâ¸ø³öÁ˽â¾ö·½°¸£¬¼òµ¥½éÉܽáºÏ°¸Àý˵Ã÷¡£

1 ÏÖ×´·ÖÎö

1.1 ÏÖ×´

ÔںܶàÐÐÒµÓ¦ÓÃÖбÈÈçÒøÐС¢±£ÏÕÁìÓò£¬ÒµÎñ¹æÔòÍùÍù·Ç³£¸´ÔÓ£¬²¢ÇÒ¹æÔò´¦ÓÚ²»¶Ï¸üб仯ÖУ¬¶øÏÖÓкܶàϵͳ×ö·¨»ù±¾É϶¼Êǽ«ÒµÎñ¹æÔò°ó¶¨ÔÚ³ÌÐò´úÂëÖС£

1.2 ÎÊÌâ

Ö÷Òª´æÔÚµÄÎÊÌâÓÐÒÔϼ¸¸ö·½Ã棺

1£© µ±ÒµÎñ¹æÔò±ä¸üʱ£¬¶ÔÓ¦µÄ´úÂëÒ²µÃ¸úןü¸Ä£¬Ã¿´Î¼´Ê¹ÊÇСµÄ±ä¸ü¶¼ÐèÒª¾­Àú¿ª·¢¡¢²âÊÔÑéÖ¤ÉÏÏߵȹý³Ì£¬±ä¸ü³É±¾±È½Ï´ó¡£

2£© ³¤Ê±¼äϵͳ±äµÃÔ½À´Ô½ÄÑÒÔά»¤¡£

3£© ¿ª·¢ÍŶÓÒ»°ãÊÇÓÉÒ»¸öÊìϤҵÎñµÄBA£¨ÒµÎñ·ÖÎöÈËÔ±£©ºÍÈô¸É¸öÊìϤ¼¼ÊõµÄ¿ª·¢ÈËÔ±×é³É£¬¿ª·¢ÈËÔ±¶ÔÒµÎñ¹æÔòµÄ°ÑÎÕÄÜÁ¦Ô¶²»¼°BA£¬µ«Êµ¼ÊÉÏÈ´³Ðµ£Á˽«ÒµÎñ¹æÔò׼ȷÎÞÎóʵÏÖµÄÖØÈΡ£

4£© ϵͳ½©»¯£¬ÐÂÐèÇó²åÈëÀ§ÄÑ¡£

5£© ÐÂÐèÇóÉÏÏßÖÜÆÚ½Ï³¤¡£

1.3 ½â¾ö·½°¸

ÄÜ·ñÈÃÎÒÃǵÄÒµÎñϵͳ¸üÁé»îÒ»µãÄØ£¿

˼·£º½«ÒµÎñ¹æÔò´Ó¼¼ÊõʵÏÖÖÐÌáÈ¡³öÀ´£¬ÊµÏÖ¼¼ÊõºÍÒµÎñ·ÖÀ룬¿ª·¢ÈËÔ±´¦Àí ¼¼Êõ¡¢ÒµÎñ·ÖÎöÈËÔ±¶¨ÒåÒµÎñ¹æÔò£¬¸÷×Ô×ö×Ô¼ºËùÉó¤µÄÊÂÇé¡£

·½°¸£ºÄ¿Ç°ÒѾ­ÓбȽϳÉÊìµÄ¿ªÔ´²úÆ·Ö§³Ö£¬Õâ¾ÍÊDZ¾ÎÄËùÒª½éÉܵÄDrools£¬ÎÒÃǽ«ÒµÎñ¹æÔò¶¨ÒåÔÚDatabase»òÕßBRMS(Business Rule Management System)ÖУ¬Í¨¹ý¹ÜÀíDB»òÕßBRMSʵÏÖÒµÎñÂß¼­µÄ¶¯Ì¬¸Ä±ä¡£

1.4 ÊÊÓÃÇé¾°

ʲôʱºòÓ¦¸ÃʹÓùæÔòÒýÇæ£¿

ËäÈ»¹æÔòÒýÇæÄܽâ¾öÎÒÃǵÄÐí¶àÎÊÌ⣬µ«ÎÒÃÇ»¹ÐèÒªÈÏÕæ¿¼ÂÇһϹæÔòÒýÇæ¶ÔÎÒ

ÃǵÄÏîÄ¿±¾ÉíÊÇ·ñÊǺÏÊʵġ£ÐèÒª¹Ø×¢µÄµãÓУº

ÎÒµÄÓ¦ÓóÌÐòÓжิÔÓ?

¶ÔÓÚÄÇЩֻÊǰÑÊý¾Ý´ÓÊý¾Ý¿âÖд«Èë´«³ö£¬²¢²»×ö¸ü¶àÊÂÇéµÄÓ¦ÓóÌÐò£¬×îºÃ²»ÒªÊ¹ÓùæÔòÒýÇæ¡£µ«ÊÇ£¬µ±ÔÚJavaÖÐÓÐÒ»¶¨Á¿µÄÉÌÒµÂß¼­´¦ÀíµÄ»°£¬¿ÉÒÔ¿¼ÂÇDroolsµÄʹÓá£ÕâÊÇÒòΪºÜ¶àÓ¦ÓÃËæ×Åʱ¼äµÄÍÆÒÆÔ½À´Ô½¸´ÔÓ£¬¶øDrools¿ÉÒÔÈÃÄã¸üÇáËÉÓ¦¶ÔÕâÒ»ÇС£

ÎÒµÄÓ¦ÓõÄÉúÃüÖÜÆÚÓжà¾Ã£¿

Èç¹ûÎÒÃÇÓ¦ÓõÄÉúÃüÖÜÆÚºÜ¶Ì£¬Ò²Ã»ÓбØÒªÊ¹ÓÃDrools£¬Ê¹ÓùæÔòÒýÇæ½«»áÔÚÖг¤ÆÚµÃµ½ºÃ´¦¡£

ÎÒµÄÓ¦ÓÃÐèÒª¸Ä±äÂð£¿

Õâ¸ö´ð°¸Ò»°ãÇé¿öÏÂÊǿ϶¨µÄ£¬¡°ÕâÊÀ½çΨһ²»±äµÄÖ»Óб仯¡±£¬ÎÒÃÇÐèÇóÒ²ÊÇÕâÑùµÄ£¬ÎÞÂÛÊÇÔÚ¿ª·¢¹ý³ÌÖлòÊÇÔÚ¿ª·¢Íê³ÉÒÔºó£¬DroolsÄÜ´ÓÆµ·±±ä»¯µÄÐèÇóÖлñµÃºÃ´¦¡£

2 ʲôÊǹæÔòÒýÇæ

¹æÔòÒýÇæÊÇ»ùÓÚ¹æÔòµÄר¼ÒϵͳµÄºËÐIJ¿·Ö£¬Ö÷ÒªÓÉÈý²¿·Ö×é³É£º¹æÔò¿â(Knowledge base)+Working Memory(Fact base)+ÍÆÀí»ú(¹æÔòÒýÇæ)£¬¹æÔòÒýÇæ¸ù¾Ý¼È¶¨ÊÂʵºÍ֪ʶ¿â°´ÕÕÒ»¶¨µÄËã·¨Ö´ÐÐÍÆÀíÂß¼­µÃµ½ÕýÈ·µÄ½á¹û¡£

3 Drools¼ò½é

Drools ÊÇÒ»¸ö»ùÓÚCharles Forgy'sµÄRETEËã·¨µÄ£¬Ò×ÓÚ·ÃÎÊÆóÒµ²ßÂÔ¡¢Ò×ÓÚµ÷ÕûÒÔ¼°Ò×ÓÚ¹ÜÀíµÄ¿ªÔ´ÒµÎñ¹æÔòÒýÇæ£¬·ûºÏÒµÄÚ±ê×¼£¬Ëٶȿ졢ЧÂʸߡ£

ÒµÎñ·ÖÎöʦÈËÔ±»òÉóºËÈËÔ±¿ÉÒÔÀûÓÃËüÇáËɲ鿴ҵÎñ¹æÔò£¬´Ó¶ø¼ìÑéÊÇ·ñÒѱàÂëµÄ¹æÔòÖ´ÐÐÁËËùÐèµÄÒµÎñ¹æÔò¡£

4 ¾ºÕù²úÆ·±È½Ï

ÓëDrools¹¦ÄÜÀàËÆµÄͬÀ࿪Դ²úÆ·Ö÷ÒªÓУºOpenRules¡¢OpenLexiconµÈ£¬ÉÌÒµ²úÆ·¹¦ÄܱȽÏǿҲ±È½Ï¹ó£¬ÕâÀï²»×ö±È½Ï£¬Ö÷Òª²î±ðÈçÏÂ±í£º

5 ¿ª·¢»·¾³´î½¨

´ò¿ªDroolsÖ÷Ò³£¨http://www.jboss.org/drools £©£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÈçϽçÃæ¡£

ÆäÖУ¬Drools ExpertÊÇÎÒÃÇÏëÒªµÄ£¬Õâ¸öÊǹæÔòÒýÇæ¡£

Drools GuvnorÕâ¸öÊÇBRMSϵͳ£¬Èç¹ûÎÒÃÇÐèÒª½«ÒµÎñ¹æÔò´æ´¢ÔÚBRMSÖУ¬¿ÉÒÔ°²×°Guvnor¡£

Drools FlowÕâ¸öÊǹ¤×÷Á÷ÒýÇæ£¬±¾ÎIJ»×÷½éÉÜ¡£

Ñ¡ÔñDrools Expert½øÈëÈçÏÂÒ³Ãæ£º

ÏÂÔØºìÉ«µÄÕâÈýÏî¡£

°²×°Drools:

½âѹËõdrools-5.0-bin.zipµ½ÈÎÒâĿ¼£¬±ÈÈ磺D:/tools/drools/drools-5.0-bin

½âѹËõdrools-5.0-eclipse-all.zipµ½eclipseµÄ°²×°Ä¿Â¼

Æô¶¯eclipse£¬²é¿´¹¤¾ßÀ¸ÊÇ·ñÓÐdroolsµÄͼ±ê£¬Èç¹ûÓÐÔò˵Ã÷°²×°Õý³£¡£

·ñÔò£¬´ò¿ª²Ëµ¥->windows->open perspective->other->drools¡£Èç¹ûperspectiveµ±ÖÐҲûÓУ¬Çëɾ³ýeclipse/configuration/org.eclipse.updateĿ¼£¬ÔÙÖØÆôeclipse¡£

ÅäÖÃdroolsµÄRuntime»·¾³£¬¾ÍÊÇÒªÖ¸Ïòdrools-5.0-binĿ¼

ÖÁ´Ë£¬¿ª·¢»·¾³ÒѾ­´î½¨ºÃÁË¡£

6 ´´½¨HelloWorld³ÌÐò

´´½¨Ò»¸öHelloWorldµÄ³ÌÐòÒ²ºÜ¼òµ¥¡£

l д´½¨Ò»¸öÏîÄ¿£¬Ñ¡Drools Project

ÊäÈëÏîÄ¿Ãû³ÆºÍ·¾¶£º

Ñ¡ÔñDemoÎļþ£¬ÕâÀïÎÒÃÇÈ«²¿¹´Ñ¡£º

µãÍêFinish£¬¿ÉÒÔ¿´µ½ÈçϽçÃæ£¬ÎÒÃǵÄDemoÒѾ­´´½¨ÍêÁË¡£

ÔËÐÐDroolsTestºÍDecisionTableTestÀ࣬¾ù¿ÉÒÔ¿´µ½ÓÐÈçÏÂÊä³ö£º

Hello World

Goodbye cruel world

µ½ÕâÀïÎÒÃǵÄHelloWorldÒѾ­´´½¨ÍêÁË£¬Ã»ÓÐдһÐдúÂ룬¼òµ¥°É£¿

Ö÷ÒªÉú³ÉÎļþ£º

Sample.drl¡ª»ùÓÚDRLµÄ¹æÔò¿â

Sample.xls¡ª»ùÓÚDecision table µÄ¹æÔò¿â

DroolsTest¡ªSample.drlµÄ²âÊÔ´úÂë

Ö÷Òª´úÂëÈçÏ£º

public class DroolsTest {

public static final void main(String[] args) {

try {

// load up the knowledge base

KnowledgeBase kbase = readKnowledgeBase();

StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger (ksession, "test");

// go !

Message message = new Message();

message.setMessage ("Hello World");

message.setStatus (Message.HELLO);

ksession.insert (message);

ksession.fireAllRules();

logger.close();

} catch (Throwable t) {

t.printStackTrace();

}

}

private static KnowledgeBase readKnowledgeBase() throws Exception {

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

kbuilder.add (ResourceFactory.newClassPathResource ("Sample.drl"), ResourceType.DRL);

KnowledgeBuilderErrors errors = kbuilder.getErrors();

if (errors.size() > 0) {

for (KnowledgeBuilderError error : errors) {

System.err.println(error);

}

throw new IllegalArgumentException("Could not parse knowledge.");

}

KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();

kbase.addKnowledgePackages (kbuilder.getKnowledgePackages());

return kbase;

}

public static class Message {

public static final int HELLO = 0;

public static final int GOODBYE = 1;

private String message;

private int status;

public String getMessage() {

return this.message;

}

public void setMessage(String message) {

this.message = message;

}

public int getStatus() {

return this.status;

}

public void setStatus(int status) {

this.status = status;

}

}

}

Ö÷Òª¹¦ÄÜ£º

1£© ¶ÁÈ¡²¢´´½¨ÖªÊ¶¿â¡£

2£© ´´½¨»á»°ºÍÊÂʵ¿â¡£

3£© µ÷ÓùæÔòÒýÇæÖ´ÐйæÔò²¢Êä³ö½á¹û¡£

DecisionTableTest¡ªSample.xlsµÄ²âÊÔ´úÂë¡£

7 ¹æÔòÓïÑÔ

ÔÚÎÒÃÇÉú³ÉµÄHelloWorldÀïÎÒÃÇ¿ÉÒÔÓÐ2¸öÎļþSample.drlºÍSample.xls£¬Õâ2¸öÎļþ¶¼ÊÇÓÃÀ´¶¨Ò广Ôò¿âµÄ£¬Sample.xlsÎҾͲ»½éÉÜÁË£¬ÓÃexcel´ò¿ª¿ÉÒÔ¿´µ½×¢ÊÍ¡£

¶ÔÓÚSample.drlÎļþ£¬Drools¶¨ÒåÁËÒ»Ì××Ô¼ºµÄÓïÑÔÀ´ÃèÊö¹æÔò¡£

¸ñʽΪ£º

Rule ¹æÔòÃû

When Ï൱ÓÚIF,ʹÓÃjava beanÀïÃæµÄÊôÐÔ½øÐÐÌõ¼þÅжϡ£

Then Âú×ãÌõ¼þºóÖ´ÐÐÒ»¶¨µÄ²Ù×÷£¬ÔÚÕâÀï·µ»Ø½á¹û»òÕ߸üÐÂ״̬ÐÅÏ¢¡£

End

±¾ÎÄ×öÈëÃŽéÉÜ£¬ÐèÒª¸üÉîÈëÁ˽â¿ÉÒÔ¿´DroolsµÄÔÚÏßÎĵµ¡£

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

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

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

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