📄 petstore.groovy.drl
字号:
<?xml version="1.0"?><rule-set name="PetStore Rules" xmlns="http://drools.org/rules" xmlns:groovy="http://drools.org/semantics/groovy" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/rules rules.xsd http://drools.org/semantics/groovy groovy.xsd"> <application-data identifier="frame">javax.swing.JFrame</application-data> <!-- assert each item in the shopping cart into the Working Memory --> <rule name="Explode Cart" salience="20"> <parameter identifier="cart"> <class>org.drools.examples.petstore.ShoppingCart</class> </parameter> <groovy:condition>cart.getState( "Exploded" ) == false</groovy:condition> <groovy:consequence> println "Examining each item in the shopping cart." ; cart.getItems().each { item | drools.assertObject( item ) } ; cart.setState( "Exploded", true); drools.modifyObject( cart ); </groovy:consequence> </rule> <!-- Free Fish Food sample when we buy a Gold Fish if we haven't already bought Fish Food and dont already have a Fish Food Sample--> <rule name="Free Fish Food Sample"> <parameter identifier="cart"> <class>org.drools.examples.petstore.ShoppingCart</class> </parameter> <parameter identifier="item"> <class>org.drools.examples.petstore.CartItem</class> </parameter> <groovy:condition>cart.getItems( "Fish Food Sample" ).size() == 0</groovy:condition> <groovy:condition>cart.getItems( "Fish Food" ).size() == 0</groovy:condition> <groovy:condition>item.getName().equals( "Gold Fish" )</groovy:condition> <groovy:consequence> println "Adding free Fish Food Sample to cart" ; cart.addItem( new org.drools.examples.petstore.CartItem( "Fish Food Sample", 0 ) ); drools.modifyObject( cart ); </groovy:consequence> </rule> <!-- Suggest a tank if we have bought more than 5 gold fish and dont already have one--> <rule name="Suggest Tank" salience="10"> <parameter identifier="cart"> <class>org.drools.examples.petstore.ShoppingCart</class> </parameter> <groovy:condition>cart.getState( "Suggested Fish Tank" ) == false</groovy:condition> <groovy:condition>cart.getItems( "Gold Fish" ).size() >= 5</groovy:condition> <groovy:condition>cart.getItems( "Fish Tank" ).size() == 0</groovy:condition> <groovy:consequence> import javax.swing.JOptionPane; options = new Object[] {"Yes", "No"}; int n = JOptionPane.showOptionDialog(frame, "Would you like to buy a tank for your " + cart.getItems( "Gold Fish" ).size() + " fish?","Purchase Suggestion",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]); println "SUGGESTION: Would you like to buy a tank for your " + cart.getItems( "Gold Fish" ).size() + " fish? - " ; if (n == 0) { cart.addItem( new org.drools.examples.petstore.CartItem( "Fish Tank", 25 ) ); println "Yes" ; } else { println "No" ; } cart.setState( "Suggested Fish Tank", true ); drools.modifyObject( cart ); </groovy:consequence> </rule> <!-- Give 5% discount if gross cost is more than 20.00 --> <rule name="Apply 5% Discount"> <parameter identifier="cart"> <class>org.drools.examples.petstore.ShoppingCart</class> </parameter> <groovy:condition>cart.getGrossCost() >= 10.00</groovy:condition> <groovy:condition>cart.getGrossCost() < 19.9</groovy:condition> <groovy:condition>cart.getDiscount() < 0.05</groovy:condition> <groovy:consequence> println "Applying 5% discount to cart" ; cart.setDiscount( 0.05 ); </groovy:consequence> </rule> <!-- Give 10% discount if gross cost is more than 20.00 --> <rule name="Apply 10% Discount"> <parameter identifier="cart"> <class>org.drools.examples.petstore.ShoppingCart</class> </parameter> <groovy:condition>cart.getGrossCost() >= 20.00</groovy:condition> <groovy:condition>cart.getDiscount() < 0.10</groovy:condition> <groovy:consequence> println "Applying 10% discount to cart" ; cart.setDiscount( 0.10 ); </groovy:consequence> </rule> </rule-set>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -