cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

What is best way to deal with old inactive promotions

Former Member
0 Likes
783

My application has huge amount of promotions , Which is causing perfomance hit . Kindly suggest what is best way to deal with Inactive promotions . Removal of promotions or archival .

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member633554
Active Participant
0 Likes

We wrote a groovy script cronjob that deletes them. Hopefully this steers you in the right direction

import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import de.hybris.bootstrap.annotations.UnitTest;
import de.hybris.platform.ruleengine.RuleEngineActionResult;
import de.hybris.platform.ruleengine.RuleEngineService;
import de.hybris.platform.ruleengine.model.AbstractRuleEngineRuleModel;
import de.hybris.platform.ruleengine.model.DroolsKIEModuleModel;
import de.hybris.platform.ruleengineservices.RuleEngineServiceException;
import de.hybris.platform.ruleengineservices.compiler.RuleCompilerException;
import de.hybris.platform.ruleengineservices.compiler.RuleCompilerProblem.Severity;
import de.hybris.platform.ruleengineservices.compiler.RuleCompilerResult;
import de.hybris.platform.ruleengineservices.compiler.RuleCompilerService;
import de.hybris.platform.ruleengineservices.compiler.impl.DefaultRuleCompilerProblem;
import de.hybris.platform.ruleengineservices.compiler.impl.DefaultRuleCompilerResult;
import de.hybris.platform.ruleengineservices.enums.RuleStatus;
import de.hybris.platform.ruleengineservices.maintenance.RuleCompilerPublisherResult;
import de.hybris.platform.ruleengineservices.maintenance.RuleCompilerPublisherResult.Result;
import de.hybris.platform.ruleengineservices.model.AbstractRuleModel;
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.ruleengine.*;


//$promotionSourceRulesQuery="select {pk} from {promotionsourcerule} where {startdate}>'2017-12-01' and {enddate}<'2017-12-29'"
$promotionSourceRulesQuery="select {pk} from {promotionsourcerule} where ({status}=({{Select {pk} from {rulestatus} where {code}='ARCHIVED'}}))"
ruleCompilerService = spring.getBean('ruleCompilerService');
platformRuleEngineService = spring.getBean('platformRuleEngineService');
flexibleSearchService = spring.getBean('flexibleSearchService');
ruleMaintenanceService=spring.getBean("ruleMaintenanceService")


 result = flexibleSearchService.search("select {pk} from {promotionsourcerule} where ({status}=({{Select {pk} from {rulestatus} where {code}='ARCHIVED'}}))")
 itemsToDelete = result.getResult();
 modelService.removeAll(itemsToDelete);


//List sourceRules = flexibleSearchService.search($promotionSourceRulesQuery).getResult();
//for (sourceRule in sourceRules) { 
  //ruleCompilerService.compile(sourceRule);
 //sourceRule.remove;
//}
//platformRuleEngineService.initializeAllRulesModules();