📄 petstore.java.drl
字号:
<?xml version="1.0"?>
<rule-set name="PetStore Rules"
xmlns="http://drools.org/rules"
xmlns:java="http://drools.org/semantics/java"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/rules rules.xsd
http://drools.org/semantics/java java.xsd">
<import>javax.swing.JFrame</import>
<application-data identifier="frame">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>
<java:condition>cart.getState( "Exploded" ) == false</java:condition>
<java:consequence>
import java.util.Iterator;
System.out.println( "Examining each item in the shopping cart." );
Iterator itemIter = cart.getItems().iterator();
while ( itemIter.hasNext() )
{
drools.assertObject( itemIter.next() );
}
cart.setState( "Exploded", true);
drools.modifyObject( cart );
</java: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>
<java:condition>cart.getItems( "Fish Food Sample" ).size() == 0</java:condition>
<java:condition>cart.getItems( "Fish Food" ).size() == 0</java:condition>
<java:condition>item.getName().equals( "Gold Fish" )</java:condition>
<java:consequence>
System.out.println( "Adding free Fish Food Sample to cart" );
cart.addItem( new org.drools.examples.petstore.CartItem( "Fish Food Sample", 0.00 ) );
drools.modifyObject( cart );
</java: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>
<java:condition>cart.getState( "Suggested Fish Tank" ) == false</java:condition>
<java:condition>cart.getItems( "Gold Fish" ).size() >= 5</java:condition>
<java:condition>cart.getItems( "Fish Tank" ).size() == 0</java:condition>
<java:consequence>
import javax.swing.JOptionPane;
Object[] options = {"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]);
System.out.print( "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.00 ) );
System.out.println( "Yes" );
} else {
System.out.println( "No" );
}
cart.setState( "Suggested Fish Tank", true );
drools.modifyObject( cart );
</java: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>
<java:condition>cart.getGrossCost() >= 10.00</java:condition>
<java:condition>cart.getGrossCost() < 19.9</java:condition>
<java:condition>cart.getDiscount() < 0.05</java:condition>
<java:consequence>
System.out.println( "Applying 5% discount to cart" );
cart.setDiscount( 0.05 );
</java: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>
<java:condition>cart.getGrossCost() >= 20.00</java:condition>
<java:condition>cart.getDiscount() < 0.10</java:condition>
<java:consequence>
System.out.println( "Applying 10% discount to cart" );
cart.setDiscount( 0.10 );
</java:consequence>
</rule>
</rule-set>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -