package com.example.objectwrapper #list any import classes here. import com.example.objectwrapper.api.product.model.Wrapper; import com.example.objectwrapper.api.supplier.WrapperModule; import com.example.objectwrapper.api.stock.StockStatus; global org.slf4j.Logger logger; global java.util.HashMap stocks; rule "EXCEPTION" salience 100 when $wrapperModule1 : WrapperModule() $wrapperModule2 : WrapperModule(this != $wrapperModule1) then logger.debug("****** rule " + drools.getRule().getName() + " fired ******\n"); logger.debug("wrapperModule1" + $wrapperModule1 + " exists\n"); logger.debug("wrapperModule2 " + $wrapperModule2 + " exists\n"); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); throw new IllegalStateException("More than one WrapperModule exists: wrapperModule1[" + $wrapperModule1 + "]/wrapperModule2[" + $wrapperModule2 + "]\n"); end rule "Rule 4" when $wrapper : Wrapper ( this.product.boolean4 == true ) eval( ( ((StockStatus) stocks.get($wrapper.getProduct().getId())).getQuantity() == 0) == true) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end rule "Rule 1" when $wrapperModule : WrapperModule ( (this == WrapperModule.ENUM_A) || (this == WrapperModule.ENUM_B) ) not $wrapperModule2 : WrapperModule(this != $wrapperModule) $wrapper : Wrapper ( (product.boolean1 == true) ) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end rule "Rule 2" when $wrapperModule : WrapperModule ( (this == WrapperModule.ENUM_C) ) not $wrapperModule2 : WrapperModule(this != $wrapperModule) $wrapper : Wrapper ( ) eval( (( (StockStatus) stocks.get($wrapper.getProduct().getId())).getQuantity() <= 0) == true) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end rule "Rule 3" when $wrapper : Wrapper ( this.product.boolean3 == true ) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end rule "Rule 5" when $wrapper : Wrapper ( this.product.boolean5 == true ) eval( (((StockStatus) stocks.get($wrapper.getProduct().getId())).getQuantity() == 0) == true) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end rule "Rule 6" when $wrapper : Wrapper ( this.product.boolean6 == true ) then retract($wrapper); logger.debug("****** rule " + drools.getRule().getName() + " fired ******\n"); logger.debug("Retracted from WM: Wrapper " + $wrapper); logger.debug("****** end rule " + drools.getRule().getName() + " fired ******\n"); end