package com.hammurapi.reasoning.impl;

import com.hammurapi.flow.Flow;

public interface RuleSetFlowOptimizer {
	
	/**
	 * Optimizes flow by removing unnecessary passthrough nodes and transitions and by
	 * rearranging condition and accept nodes.
	 * @param ruleSetFlow
	 */
	void optimize(Flow ruleSetFlow);
	
	/**
	 * Allows to order optimizers. Optimizers with higher order are executed after optimizers with 
	 * lower order.
	 * @return
	 */
	int getOrder();

}
