/**
 * Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 * Thales Corporate Services S.A.S - initial API and implementation
 */
package org.eclipse.egf.producer.fprod.context;

import org.eclipse.egf.model.fprod.ProductionPlan;
import org.eclipse.egf.producer.context.IOrchestrationProductionContext;

/**
 * @author Xavier Maysonnave
 * 
 */
public interface IProductionPlanProductionContext<P extends ProductionPlan> extends IOrchestrationProductionContext<P> {
    // Nothing to do
}
