⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 petstore.java.drl

📁 drools 一个开放源码的规则引擎
💻 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() &gt;= 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() &gt;= 10.00</java:condition>
        <java:condition>cart.getGrossCost() &lt; 19.9</java:condition>

        <java:condition>cart.getDiscount() &lt; 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() &gt;= 20.00</java:condition>
        <java:condition>cart.getDiscount() &lt; 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 + -